Bài giảng Middleware
!"##$%&'(%) *+',)-+./)0)1()2",/3)4$'-%) !"##$%&'(%)) • !"##$%&'(%)5+%)#678)5739)56:)5;")9<) – =739)56:)>?)@(/39)>7A@)BC)BD)@(E0)) • !F@)$G:)@(<3+)B"H3)5I)@+J)9K"),F@),%@+/#),L)-+M39)5N3)O"P@) ,%@+/#)QI)@+?5)>?)Q'39)@R3)@S")T)QU7)V5W39),;XY)-+;5),;XZ) – =+%)#67)39+")@+[5)@(7XC3)@+M39)OH3)#\]") • ^1_)+'X)*=_) – =+%)#67)5+")`P@)BC)a7;)@(<3+),'(>+'$$)@?)QF39) – bF5)$G:)B]")c2) – =cd4e)5+/):+f:)5;5)39M3)39g)$G:)@(<3+)-+;5)3+'7)5I)@+J)) h3I")5+7Xi3Z)B]")3+'7) • 2j)#k39)"3@%(l'5%)#%m3"`/3)$'397'9%)Vn1oZ) )*+%(,'-%./ • )"3@%(l'5%)$L)9<)p) – q+M39):+.")$L)r^n) – n3@%(l'5%)$L)5;5):+\s39)`i3)-P@)3A")+'")+i)@+A39)-+;5)3+'7) ) )*+%(,'-%./ ) 0("1'+%)12"#),X='$5VZt) ))2X>@%,u/7@u:("3@$3V>7,v7,O%(>VwxYwxZZy) ))2X>@%,u/7@u:("3@$3V>7,v7,O%(>VzY{ZZy) |) )) ) 034$"-)"*+)>7,v7,O%(>V"*+)'Y)"*+)OZt) )))(%+3(*)'}Oy) |) ) 5678*9/+6:-/-;*9/6'"/.</*93=>*/ 5678*9/+6:-/+6'?/-6"@3/A@*/1B/ 9C"/0678*9/+6:-/D/+(>*E/ )*+%(,'-%./ • n3@%(l'5%>) – rK"),%@+/#),L)-+M39)5N3)O"P@)5/#%)5~')3I)Q\•5)B"P@)@+P)3L/)) – =+€)5N3)"3@%(l'5%)-+M39)Q•")@+<)B‚3)5I)@+J)9K")3+\)5ƒ) ) 0("1'+%)12"#),X='$5VZt) ))2X>@%,u/7@u:("3@$3V>7,v7,O%(>VwxYwxZZy) ))2X>@%,u/7@u:("3@$3V>7,v7,O%(>VzY{ZZy) | )) ) 034$"-)"*+)>7,v7,O%(>V"*+)'Y)"*+)OZt) )))"*+/)(%>7$@)„)'}Oy) )))(%+3(*/(%>7$@y) |) ) F6G*9/+'/+6'=/AH"/-B"/AI+/-J'/+63K+/+2L*/-;*9/6'"/ .</*93=>*/ M3=/1K=N/O6P*9/+6'=/AH"/D/-L-6/9C"/0678*9/+6:-/ -Q/ )*+%(,'-%./ • n3@%(l'5%>)@(/39)+i)@+A39)@+M39)`3):+U3)@;3) – q+M39)@(7XC3)@+',)5+"P7)) – =;5)QA")>A)+/…5)$L)QA")>A))*03+)+/…5)R3+03+)) • )*03+))QA")>A)5+[')5;5)9";)@(D)>†)Q\•5)>%(B%()>j)#k39) • R3+03+)QA")>A)Q\•5)#W39)QJ)>%(B%()@(.)9";)@(D)5+/)5$"%3@) – ‡"i5)@(7X)ˆ7‰)@(?5)`P:)$L)-+M39)Q\•5):+f:) • !K")@('/)Q•")@+M39)a7')@+M39)Q"i:)V,%>>'9%>Z) )*+%(,'-%.)) • n3@%(l'5%>)@(/39)Š***):+U3)@;3) – n1o0)n3@%(l'5%)1%m3"`/3)o'397'9%) • =739)56:),F@)>?)@+‹')@+7G3)QJ),M)@.)"3@%(l'5%>)9"g')5;5),%@+/#>) • 4'/)9R,)B"i5):+U3)O"i@)9"g')@+',)>A))*03+)BL)R3+03+)) )*+%(,'-%.)) • !F@)BE)#k)BC)=cd4e)n1o) >@(75@)_%(>/3)t) )))>@("39)3',%y) )))>@("39):$'5%y) )))$/39)X%'(y) |y) n3@%(l'5%)_%(>/3o">@t) )))(%'#/3$X)'Œ("O7@%)>@("39)$">@3',%y) )))B/"#)'##_%(>/3V"3)_%(>/3):Zy) )))B/"#)9%@_%(>/3V"3)>@("39)3',%Y)/7@)_%(>/3):Zy) )))$/39)37,O%(VZy) |y) F2*+'"*./?'(.6'$$"*9/ "*,2(?'S2*/ / )*+%(,'-%.)) • e3)%ˆ',:$%)=cd4e)n1o) >@(75@)_%(>/3)t) )))>@("39)3',%y) )))>@("39):$'5%y) )))$/39)X%'(y) |y) n3@%(l'5%)_%(>/3o">@t) )))(%'#/3$X)'Œ("O7@%)>@("39)$">@3',%y) )))B/"#)'##_%(>/3V"3)_%(>/3):Zy) )))B/"#)9%@_%(>/3V"3)>@("39)3',%Y)/7@)_%(>/3):Zy) )))$/39)37,O%(VZy) |y) T*#/'$.2/(%?2+%/?%+62#/ "*+%(,'-%./ M(3=U*/+6P*9/9"V'/-L-/A<"/+7W*9/06X*/+L*) • !M)+<3+)QA")@\•39) – bA")@\•39)5I)#g)$"i7)BL):+\s39)@+[5) – =;5)QA")@\•39)@\s39)@;5)B]")3+'7)@+M39)a7'):+\s39)@+[5) – =;5)QA")@\•39)5I)@+J)5+/):+f:)QA")@\•39)-+;5)@(7X)ˆ76@)QP3)#g)$"i7) OH3)@(/39)5~')3I) • *7X)BGX)@(/39))1n2)5;5)QA")@\•39)T)@(H3)5;5),;X)-+;5)3+'7) ) #'@') ,%@+/#>) 5$'>>) [...]... tất cả các methods từ xa là chưa xác định lúc thiết kế – Client cung cấp một tham chiếu đối tượng từ xa (remote object reference), tên method và các đối số – Rồi middleware sẽ xác định đối tuong từ xa nào đươc triệu gọi RMI • Binder – Một service ở client nhận và lưu trữ các tham chiếu đối tượng từ xa • Java RMIregistry, CORBA... thống này đến thệ thống khác – Cần giải pháp để quản lý ánh xạ giữa tham chiếu của đối tượng với vị trí thật của đối tượng CORBA • CORBA là gì? “CORBA is a middleware that allows applica6on programs to communicate with one another irrespec6ve of their programming languages, their hardware and so=ware pla>orms, the networks they communicate . !F@)BE)#k)5$"%3@)>%(B%()) !P/6Y*6/A<"/+7W*9/06X*/+L*/ cM6%/a".+(" ;43 +%#/R4]%-+/!2#%$d/)) • =;5)QA")@•39)5I)@+J)Q•5)QD3+)39+•')QJ) 3+G3)5;5)XH7)5N7)5k5)OF)+'X)@Ž)ˆ') • bJ)@S/),F@)$•")9K")@Ž)ˆ'Y)39•")9K"):+.")5I) ,F@)@+',)5+"P7)QA")@•39)@Ž)ˆ') • =;5)QA")@•39)@Ž)ˆ'):+.")5I),F@) "3@%(l'5%>)@Ž)ˆ')@(/39)QI)ˆ;5)QD3+)(‘)5;5) ,%@+/#)5I)@+J)9K")@Ž)ˆ') M6%/a".+(" ;43 +%#/R4]%-+/!2#%$/)) • d%,/@%)"3@%(l'5%)%ˆ',:$% )) a'+'/ Z%?2+%/ 24] %-+/ ?e/ ?f/ ?g/ )?0$%?%*+'S2*/2,/ ?%+62#./ ?h/ ?i/ ?j/ Z%?2+%/ "*+%(,'-%/ T/0(2-%. )) ) 0 34$ "-)"*+)>7,v7,O%(>V"*+)'Y)"*+)OZt) )))"*+/)(%>7$@)„)'}Oy) )))(%+3(*/(%>7$@y) |) ) F6G*9/+'/+6'=/AH"/-B"/AI+/-J'/+63K+/+2L*/-;*9/6'"/ .</*93=>*/ M3=/1K=N/O6P*9/+6'=/AH"/D/-L-6/9C"/0678*9/+6:-/ -Q/ )*+%(,'-%./ • n3@%(l'5%>)@(/39)+i)@+A39)@+M39)`3):+U3)@;3) – q+M39)@(7XC3)@+',)5+"P7)) – =;5)QA")>A)+/…5)$L)QA")>A))*03+)+/…5)R3+03+)) • )*03+))QA")>A)5+[')5;5)9";)@(D)>†)Q•5)>%(B%()>j)#k39) • R3+03+)QA")>A)Q•5)#W39)QJ)>%(B%()@(.)9";)@(D)5+/)5$"%3@) – ‡"i5)@(7X)ˆ7‰)@(?5)`P:)$L)-+M39)Q•5):+f:) • !K")@('/)Q•")@+M39)a7')@+M39)Q"i:)V,%>>'9%>Z) )*+%(,'-%.)) • n3@%(l'5%>)@(/39)Š***):+U3)@;3) – n1o0)n3@%(l'5%)1%m3"`/3)o'397'9%) • =739)56:),F@)>?)@+‹')@+7G3)QJ),M)@.)"3@%(l'5%>)9"g')5;5),%@+/#>) • 4& apos;/)9R,)B"i5):+U3)O"i@)9"g')@+',)>A))*03+)BL)R3+03+)) )*+%(,'-%.)) • !F@)BE)#k)BC)=cd4e)n1o) >@(75@)_%(>/3)t) )))>@("39)3',%y) )))>@("39):$'5%y) )))$/39)X%'(y) |y) n3@%(l'5%)_%(>/3o">@t) )))(%'#/3$X)'Œ("O7@%)>@("39)$">@3',%y) )))B/"#)'##_%(>/3V"3)_%(>/3):Zy) )))B/"#)9%@_%(>/3V"3)>@("39)3',%Y)/7@)_%(>/3):Zy) )))$/39)37,O%(VZy) |y) F2*+'"*./?'(.6'$$"*9/ "*,2(?'S2*/ / )*+%(,'-%.)) • e3)%ˆ',:$%)=cd4e)n1o) >@(75@)_%(>/3)t) )))>@("39)3',%y) )))>@("39):$'5%y) )))$/39)X%'(y) |y) n3@%(l'5%)_%(>/3o">@t) )))(%'#/3$X)'Œ("O7@%)>@("39)$">@3',%y) )))B/"#)'##_%(>/3V"3)_%(>/3):Zy) )))B/"#)9%@_%(>/3V"3)>@("39)3',%Y)/7@)_%(>/3):Zy) )))$/39)37,O%(VZy) |y) T*#/'$.2/(%?2+%/?%+62#/ "*+%(,'-%./ M(3=U*/+6P*9/9"V'/-L-/A<"/+7W*9/06X*/+L*) • !M)+<3+)QA")@•39) – bA")@•39)5I)#g)$"i7)BL):+s39)@+[5) – =;5)QA")@•39)@s39)@;5)B]")3+'7)@+M39)a7'):+s39)@+[5) – =;5)QA")@•39)5I)@+J)5+/):+f:)QA")@•39)-+;5)@(7X)ˆ76@)QP3)#g)$"i7) OH3)@(/39)5~')3I) • *7X)BGX)@(/39))1n2)5;5)QA")@•39)T)@(H3)5;5),;X)-+;5)3+'7) ) #'@') ,%@+/#>) 5$'>>) !P/6Y*6/A<"/+7W*9/06X*/+L*) • *(/39),M)+<3+)QA")@•39) – =+€)@(7X)ˆ76@)@+M39)a7')"3@%(l'5%>) – =;5)QA")@•39)5I)@+J)@+?5)@+")@(/39)5;5)`P3)@(<3+):+U3)O"i@) • =;5)QA")@•39):+U3)@;3)5ƒ39)@+?5)@+")3+)5;5)`P3)@(<3+)QF5)$G:) BL)@(7XC3)@+M39)@+M39)a7')"3@%(l'5%>) • *7X)BGXY)@(/39)5;5)`P3)@(<3+)@(/39)1n2)5I)@+J)5+SX)@(H3)5;5),;X) -+;5)3+'7) – *(7XC3)@+M39)5I)@+J)@+M39)a7')d!n) • *(/39),F@)1n2),F@)5+s39)@(<3+)5I)@+J)>j)#k39),F@)5+7•")5;5) `P3)@(<3+)5k5)OF)+/…5)@Ž)ˆ') FL-/A<"/+7W*9/06X*/+L*) Z)/ T/ Z)/[/Z%?2+%/)*12-'S2*/ )/[/2-'$/)*12-'S2*/ /[/'*/ 24] %-+/ /[/'/?% '9%/ 5$"%3@) Z)/ Z)/ )/ )/ )/ F/ ^/ _/ `/ a/ b/ >%(B%() • !F@)BE)#k)5$"%3@)>%(B%()) !P/6Y*6/A<"/+7W*9/06X*/+L*/ cM6%/a".+(" ;43 +%#/R4]%-+/!2#%$d/)) • =;5)QA")@•39)5I)@+J)Q•5)QD3+)39+•')QJ) 3+G3)5;5)XH7)5N7)5k5)OF)+'X)@Ž)ˆ') • bJ)@S/),F@)$•")9K")@Ž)ˆ'Y)39•")9K"):+.")5I) ,F@)@+',)5+"P7)QA")@•39)@Ž)ˆ') • =;5)QA")@•39)@Ž)ˆ'):+.")5I),F@) "3@%(l'5%>)@Ž)ˆ')@(/39)QI)ˆ;5)QD3+)(‘)5;5) ,%@+/#)5I)@+J)9K")@Ž)ˆ') M6%/a".+(" ;43 +%#/R4]%-+/!2#%$/)) • d%,/@%)"3@%(l'5%)%ˆ',:$%. )) ) 0 34$ "-)"*+)>7,v7,O%(>V"*+)'Y)"*+)OZt) )))"*+/)(%>7$@)„)'}Oy) )))(%+3(*/(%>7$@y) |) ) F6G*9/+'/+6'=/AH"/-B"/AI+/-J'/+63K+/+2L*/-;*9/6'"/ .</*93=>*/ M3=/1K=N/O6P*9/+6'=/AH"/D/-L-6/9C"/0678*9/+6:-/ -Q/ )*+%(,'-%./ • n3@%(l'5%>)@(/39)+i)@+A39)@+M39)`3):+U3)@;3) – q+M39)@(7XC3)@+',)5+"P7)) – =;5)QA")>A)+/…5)$L)QA")>A))*03+)+/…5)R3+03+)) • )*03+))QA")>A)5+[')5;5)9";)@(D)>†)Q•5)>%(B%()>j)#k39) • R3+03+)QA")>A)Q•5)#W39)QJ)>%(B%()@(.)9";)@(D)5+/)5$"%3@) – ‡"i5)@(7X)ˆ7‰)@(?5)`P:)$L)-+M39)Q•5):+f:) • !K")@('/)Q•")@+M39)a7')@+M39)Q"i:)V,%>>'9%>Z) )*+%(,'-%.)) • n3@%(l'5%>)@(/39)Š***):+U3)@;3) – n1o0)n3@%(l'5%)1%m3"`/3)o'397'9%) • =739)56:),F@)>?)@+‹')@+7G3)QJ),M)@.)"3@%(l'5%>)9"g')5;5),%@+/#>) • 4& apos;/)9R,)B"i5):+U3)O"i@)9"g')@+',)>A))*03+)BL)R3+03+)) )*+%(,'-%.)) • !F@)BE)#k)BC)=cd4e)n1o) >@(75@)_%(>/3)t) )))>@("39)3',%y) )))>@("39):$'5%y) )))$/39)X%'(y) |y) n3@%(l'5%)_%(>/3o">@t) )))(%'#/3$X)'Œ("O7@%)>@("39)$">@3',%y) )))B/"#)'##_%(>/3V"3)_%(>/3):Zy) )))B/"#)9%@_%(>/3V"3)>@("39)3',%Y)/7@)_%(>/3):Zy) )))$/39)37,O%(VZy) |y) F2*+'"*./?'(.6'$$"*9/ "*,2(?'S2*/ / )*+%(,'-%.)) • e3)%ˆ',:$%)=cd4e)n1o) >@(75@)_%(>/3)t) )))>@("39)3',%y) )))>@("39):$'5%y) )))$/39)X%'(y) |y) n3@%(l'5%)_%(>/3o">@t) )))(%'#/3$X)'Œ("O7@%)>@("39)$">@3',%y) )))B/"#)'##_%(>/3V"3)_%(>/3):Zy) )))B/"#)9%@_%(>/3V"3)>@("39)3',%Y)/7@)_%(>/3):Zy) )))$/39)37,O%(VZy) |y) T*#/'$.2/(%?2+%/?%+62#/ "*+%(,'-%./ M(3=U*/+6P*9/9"V'/-L-/A<"/+7W*9/06X*/+L*) • !M)+<3+)QA")@•39) – bA")@•39)5I)#g)$"i7)BL):+s39)@+[5) – =;5)QA")@•39)@s39)@;5)B]")3+'7)@+M39)a7'):+s39)@+[5) – =;5)QA")@•39)5I)@+J)5+/):+f:)QA")@•39)-+;5)@(7X)ˆ76@)QP3)#g)$"i7) OH3)@(/39)5~')3I) • *7X)BGX)@(/39))1n2)5;5)QA")@•39)T)@(H3)5;5),;X)-+;5)3+'7) ) #'@') ,%@+/#>) 5$'>>) !P/6Y*6/A<"/+7W*9/06X*/+L*) • *(/39),M)+<3+)QA")@•39) – =+€)@(7X)ˆ76@)@+M39)a7')"3@%(l'5%>) – =;5)QA")@•39)5I)@+J)@+?5)@+")@(/39)5;5)`P3)@(<3+):+U3)O"i@) • =;5)QA")@•39):+U3)@;3)5ƒ39)@+?5)@+")3+)5;5)`P3)@(<3+)QF5)$G:) BL)@(7XC3)@+M39)@+M39)a7')"3@%(l'5%>) • *7X)BGXY)@(/39)5;5)`P3)@(<3+)@(/39)1n2)5I)@+J)5+SX)@(H3)5;5),;X) -+;5)3+'7) – *(7XC3)@+M39)5I)@+J)@+M39)a7')d!n) • *(/39),F@)1n2),F@)5+s39)@(<3+)5I)@+J)>j)#k39),F@)5+7•")5;5) `P3)@(<3+)5k5)OF)+/…5)@Ž)ˆ') FL-/A<"/+7W*9/06X*/+L*) Z)/ T/ Z)/[/Z%?2+%/)*12-'S2*/ )/[/2-'$/)*12-'S2*/ /[/'*/ 24] %-+/ /[/'/?%