850 likes | 1.02k Views
Middleware-layer Connector Synthesis: Beyond State of the Art in Middleware Interoperability. Valérie Issarny, INRIA Joint work with A. Bennaceur, D. Bromberg And colleagues from FP7 ICT FET C ONNECT project. Composing Systems in Today’s Pervasive Networks.
E N D
Middleware-layer Connector Synthesis:Beyond State of the Art in Middleware Interoperability Valérie Issarny, INRIA Joint work with A. Bennaceur, D. Bromberg And colleagues from FP7 ICT FET CONNECTproject
Composing Systems inToday’s Pervasive Networks The Simple Yet Challenging Photo Sharing Scenario • Discovery protocol interoperability • Interaction protocol interoperability • Data interoperability • Application interoperability • Interoperability of non-functional properties Anypeeraround? Is it a jpg file? Am I allowed to forwardthosepictures? May I get all the relatedpictures? How may I get the picture? See Lecture by Gordon Blair onInteroperability in Complex Distributed Systems
Mediation to Make Systems Interoperable P2P Photo Sharing C/S-based Producer Mediationthatactually bridges the Application (Differentprotocols for accessing photo files) &Middleware (Different interaction paradigms) Layers See Lecture by Paola Inverardi onApplication-layer Connector Synthesis
Mediation Must Span All Layers Yet Another Scenario: Search & Rescue Operations • Constituent systems heterogeneity in coordination models, communication protocols, data representation models (middleware platforms) • Most common coordination models: client/server, pub/sub, tuple space See Lecture by Nikolaos Georgantas onCONNECT Architecture
Outline • Middleware-based connectors • Formalizing middleware-based connectors • Revisiting interoperability connectors • Emergent connector synthesis • Emergent connector in practice • Conclusion
Middleware-basedConnector HeterogeneousMiddleware SupportingMiddleware Built-in Mediation Discovery &Routing NFPEnforcement See R. N. Taylor et al. Software Architecture: Foundations, Theory & Practice - Wiley
The ManyFacets of Mediation How to makemediationconnectoremergent?
Towards Emergent Connectors • Formalizing middleware-basedconnectors to reason about interoperability • Revisitingexistinginteroperabilityconnectors • Emergent connectorsynthesis
Outline • Middleware-based connectors • Formalizing middleware-based connectors • Revisiting interoperability connectors • Emergent connector synthesis • Emergent connector in practice • Conclusion
Finite State Processes END Predefined process, successfulltermination set S Denotes a set of action labels [i : S] Binds the variable i to a value from S Primitive Processes (P) a -> P Action prefix a -> P | b -> P Choice P;Q Sequential composition P(X =‘ a) Parameterized process: P is described using parameter X and modeled for a particular parameter value, P(a) P/{new_1/old_1, …, new_n/old_n} Relabeling P \{a1, a2, …, an} Hiding P +{a1, a2, …, an} Alphabet extension Composite Processes (||P) P||Q Parallel composition forall [i : 1..n] P(i) Replicator construct: equivalent to the parallel composition a : P Processlabeling
SOAP-based Middleware Connector SOAP Role ClientSOAP= SOAP-RPCCall -> SOAP-RPCReceiveReply -> ClientSOAP Role ServerSOAP= SOAP-RPCReceiveCall -> SOAP-RPCReply -> ServerSOAP GlueSOAP = SOAP-RPCCall -> SOAP-RPCReceiveCall -> GlueSOAP | SOAP-RPCReply -> SOAP-RPCReceiveReply -> GlueSOAP ||ConnectorSOAP= ClientSOAP || GlueSOAP || ServerSOAP See Work by D. Garlanet al. at CMU
Photo Sharing over SOAP - Application - set SOAP_PhotoSharing_Actions = {uploadPhoto, searchPhoto, downloadPhoto, downloadComment, commentPhoto} PhotoSharingConsumer = (req.searchPhoto -> P1), P1 = (req.downloadPhoto ->P1 | req.commentPhoto -> P1) |req.downloadComment -> P1 | terminate -> END). PhotoSharingProducer = (req.uploadPhoto -> PhotoSharingProducer | terminate -> END). PhotoSharingServer= (prov.uploadPhoto -> PhotoSharingServer |prov.searchPhoto -> PhotoSharingServer |prov.downloadPhoto -> PhotoSharingServer |prov.commentPhoto -> PhotoSharingServer |prov.downloadComment -> PhotoSharingServer | terminate -> END).
Photo Sharing over SOAP - SOAP Middleware - ClientSOAP (X =’ op) = (req.[X] -> P1 | terminate -> END), P1 = (SOAP-RPCCall[X] ->SOAP-RPCReceiveReply[X] -> ClientSOAP ). ServerSOAP (X =’ op) = (prov.[X] -> P2 | terminate -> END), P2 = (SOAP-RPCReceiveCall[X] -> SOAP-RPCReply[X] -> ServerSOAP ). GlueSOAP (X =’ op) = (SOAP-RPCCall[X] -> P0 | terminate -> END), P0 = (SOAP-RPCReceiveCall[X] -> SOAP-RPCReply[X] -> SOAP-RPCReceiveReply[X] -> GlueSOAP ).
Photo Sharing over SOAP - Photo Sharing System - ||SOAP_PhotoSharing= (PhotoSharingProducer || PhotoSharingConsumer || PhotoSharingServer || (forall [op:SOAP_PhotoSharing_Actions] ServerSOAP (op)) || (forall [op:SOAP_PhotoSharing_Actions] ClientSOAP (op)) || (forall [op:SOAP_PhotoSharing_Actions] GlueSOAP (op))).
Outline • Middleware-based connectors • Formalizing middleware-based connectors • Revisiting interoperability connectors • Emergent connector synthesis • Emergent connector in practice • Conclusion
Approaches to Interoperability • Solutions applicable to Middleware and Application layers • Software Bridges • InteroperabilityPlatforms • Transparent Interoperability See Lecture by Gordon Blair & Massimo Paolucci onInteroperability in Complex Distributed Systems
Software Bridges E.g.: OrbixCOMet, SOAP2CORBA at middleware-layer Bridge A to B Legacy Middleware A Legacy Application Legacy Application Legacy Middleware B Domain-specific bridges –MSN-Yahoo bridge - at application-layer Peer 3rd Party Peer Peer
Bridge Mediator ||Direct_Bridge_Mediator = (Bridge || T)
BridgingConnector Legacy connectors Role R1i,i in [1..2] = Role R1 of Connectori Role R2i,i in [1..2] = Role R2 of Connectori Gluei,i in [1..2] = Glue of Connectori set Ii,i in [1..2] = Set of events initiated from Role R1i and R2i Bridge = tag1.[e1:I1] -> tag2.[e1] -> Bridge | tag2.[e2:I2] -> tag1.[e2] -> Bridge Adaptation process T = Required transformations of (tagi.ej)s to bridge Connector1 to Connector2 Direct bridge connector ||C-DBridge = R11 || tag1:Glue1 || Bridge || T || tag2:Glue2 ||R22
Indirect Bridge Mediator E.g., ESB solutions (Artix, PetalS, …), Interoperability manager (MUSDAC) Domain-specific J-EAI for interoperableIMs ||Indirect_Bridge_Mediator = (T1 || Bridge1 || Bridge2 || T2)
ESB Connector R1 R2 Bus Role R1bus = Role R1 of Connectorbus Role R2bus = Role R2 of Connectorbus Gluebus = Interactions between Role R1bus and Role R2bus Legacy connectors Role R1 = |i=1..n (a.gluei -> R1i), R1i, i=1..n = (R1i initial specification as given by Connectori) | reset -> R1 Role R2 = |k=1..m (a.glue’k -> R2k), R2k, k=1..m = (R2k initial specification as given by Connector’k) | reset -> R2 Gluei=1..n = Interactions between R1i and R2i Glue’ k=1..m = Interactions between R’1k and R’2k Events set I1i, i=1..n (O1i, i=1..n ) Set of events initiated (observed) from Role R1i set I2k, k=1..m (O2k, k=1..m ) Set of events initiated (observed) from Role R2k
T1 T2 ESB Connector (2) Adaptation process T1= |i=1..n (a.gluei -> ToTi), ToT i=1..n = Required transformations to bridge Connectori to Connectorbus| a.reset -> T1 T2= |k=1..m (b.glue’k -> ToT’k), ToT’k, k=1..m = Required transformations to bridge Connectorbus to Connector’k | b.reset -> T2 Bridgingprocesses Bridge1= |i=1..n (a.gluei -> Bridgei), Bridgei=1..n = [e : I1i] -> a.tagi.[e] -> Bridgei| a.tagi.[e : O1i] -> [e] -> Bridgei | a.reset -> Bridge1 Bridge2 = |k=1..m (b.glue’k -> Bridge’k), Bridge’k=1..m = [e : I2k] -> b.tagk.[e] -> Bridge’k|b.tagk.[e : O2k] -> [e] -> Bridge’k |b.reset -> Bridge2 Indirect bridge connector ||C-IBridge= R1 || T1 ||i=1..na.tagi:Gluei || Bridge1|| Gluebus || Bridge2 ||k=1..mb.tagk:Glue’k || T2 || R2
Software Bridges Assessment • Handcodeddevelopment of bridges (i.e., Process T) • Direct bridgingdoes not scale • Interoperabilitylimited to the behavior of the intermediary in the case of indirect bridging
InteroperabilityPlatforms Interoperability Platform Substituted Middleware Translation Application Legacy Middleware Application Peer E.g.: UIC, ReMMoC at middleware-layer Domain-specificplatform – IM Pidgin, Adium - at application-layer Peer
InteroperabilityMediator ||Interoperability_Mediator = (Switch || Bridge || T)
InteroperabilityConnector (1) Proprietary interface Role Rinterface= Bridge interface Role R2= |i=1..n (gluei -> R2i), R2i,i in [1..n] = Inititial spec of Role R2 of Connectori | reset -> R2 Gluei,i in [1..n] = Glue of Connectori Initiated and observed events set I2 (O2)i,i in [1..n] = Set of events initiated (observed) from Role R2i set I (O) interface = Set of events initiated (observed) from Role Rinterface Switch process Switch = (election -> reset -> Switch |i=1..n election -> gluei-> Switch)\{election}
InteroperabilityConnector (2) Adaptation process T = |i=1..n (gluei -> ToTi), ToT i=1..n = Required transformations to bridge Rinterface to Connectori| reset -> T Bridging process Bridge = |i=1..n (gluei -> Bridgei), Bridgei, i in [1..n] = [e : Rinterface] -> tagi:[e] -> Bridgei | tagi:[e:Ointerface] -> [e]-> Bridgei | [e : I2i] -> tagi:[e] -> Bridgei | tagi.[e:O2i] -> [e]-> Bridgei | reset -> Bridge Interoperability platform connector ||C-InteropPlatforms = Rinterface || Switch || T || Bridge ||i=1..ntagi:Gluei || R2
Interoperability Platform Assessment • Proprietary interface and behavior
Transparent Interoperability Legacy Application Legacy Application Legacy Middleware Translation to Intermediary Translation to Intermediary Legacy Middleware Peer 3rd Party Peer Peer E.g.: INDISS, ubiSOAP at middleware layer Domain-specificinteroperability – IM CrossTalk – at application layer 39
Transparent Mediator ||Transparent_Mediator = (Switch || W1 || M1 || Bridge1 || Bridge2 || M2 || W2 || Switch’)
Transparent InteroperabilityConnector (1) Legacy connectors Role R1= |i=1..n (a.gluei -> R1i), R1i,i in [1..n] = Inititial spec of Role R1i of Connectori | reset -> R1 Role R2= |k=1..m (b.gluek -> R2k), R2k,k in [1..m] = Inititial spec of Role R2 of Connector’k | reset -> R2 Gluei,i in [1..n] = Interactions between R1i and R2i Glue’k,k in [1..m] = Interactions between R’1k and R’2k Initiated and observed events set I2 (O2)i,i in [1..n] = Set of events initiated (observed) from Role R1i set I2 (O2)k, k in [1..m] = Set of events initiated (observed) from Role R’2k set Ei, i in [1..n](Ek, k in [1..m]) = aR1i ∩ aGluei(aR2k ∩ aGlue’k) Set S E1n (S E2m)= Ui=1..n E1i (Uk=1..m E2k) Set S O1n (S O2m)= Ui=1..n O1i (Uk=1..m O2k)
TransparentInteroperabilityConnector (2) Switch processes Switch = (a.election -> a.reset -> Switch |i=1..na.election -> a.gluei-> Switch)\{a.election} Switch’ = (b.election->b.reset->Switch’ |k=1..mb.election ->b.glue’k->Switch’)\{b.election} Image protocol generation W1 = |i=1..n (a.gluei -> ToGluei), ToGluei=1..n = [e : I1i]->a.tagi:[e]->ToGluei | a.tagi:[e:O1i] -> [e]-> ToGluei| a.reset -> W1 W2 = |k=1..m (b.glue’k -> ToGlue’k), ToGlue’k=1..m = [e : I2k->b.tagk:[e]->ToGlue’k | b.tagk:[e:O2k]-> [e]->ToGlue’k| b.reset->W2 M1 = |i=1..n (a.gluei -> ToMapi), ToMapi=1..n = a.tagi.[e : I1i]->a.tagi.f(e)->ToMapi | a.tagi.f(e:SO1n) -> a.tagi.[e : O1i]-> -> ToMapi| a.reset -> M1 M2 = |k=1..m (b.glue’k -> ToMap’k), ToMap’k=1..m = b.tagk.[e : I2k]->b.tagk.f(e)->ToMap’k | b.tagk.f(e:SO2m) -> b.tagk.[e : O2k]-> -> ToMap’k| b.reset -> M2
TransparentInteroperabilityConnector (3) Bridging process Bridge1= |i=1..n (a.gluei -> ToBridgei), ToBridgei, i in [1..n] = a.tagi.f(e2:SE2m) -> f(e2) -> ToBridgei | f(e1:SE1n) -> a.tagi.f(e2) -> ToBridgei | a.reset -> Bridge1 Bridge2= |k=1..m (b.glue’k -> ToBridge’k), ToBridge’k, k in [1..m] = b.tagk.f(e1:SE1n) -> f(e1) -> ToBridge’k | f(e2:SE2m) -> b.tagk.f(e2) -> ToBridge’k | b.reset -> Bridge2 Transparent interoperability connector ||C-Transparent_Interop = R1 || Switch ||i=1..na.tagi:Gluei/{f(r:aGluei)/[r]} || W1 || M1 || Bridge1 || M2 || W2 ||k=1..mb.tagk:Gluek/{f(r:aGlue’k)/[r]} || Switch’ || R2
Transparent InteroperabilityAssessment • Addressesinteroperability at a single layer • Projection functionf to begiven, makingitsimilar to indirect bridgingalthoughwith (design-time) adaptive buses • Does not account for the heterogeneity of interaction paradigms
Outline • Middleware-based connectors • Formalizing middleware-based connectors • Revisiting interoperability connectors • Emergent connector synthesis • Emergent connector in practice • Conclusion
The CONNECT Approach to Interoperability: Emergent Middleware • Synthesize CONNECTors between heterogeneous Networked Systems (NS) • Generate middleware and application protocols to create connections that will overcome the interoperability barrier • CONNECTors devised and created at Run Time • Minimal a priori knowledge/ assumptions NS CONNECTor NS « Mediation » connectoraka Emergent middleware See Lecture by Nikolaos Georgantas & Paul Grace onThe CONNECT Architecture 46
Meeting in the Heterogeneous World Networked systems meet according to matching “Affordances” Photo sharing using SOAP Photo sharing Photo sharing using LIME Photo sharing P Q • OSOAP • OLime “Affordance” behaviour is characterized by its protocol and related ontologyfrom application down to middleware layer “Affordance” behaviour is characterized by its protocol and related ontology OPhoto OPhoto
Networked System Model forOn-the-flyConnection • Interface definitionleveragingSemantic Web service technologies • Affordance akaCapability <Type, Concept, Inputs, Outputs> • Interface signature • Action defined as <Mdw, Application, I, O> • Affordance behavior
P2P Photo Sharing Interface Interfacephoto_sharing = { < Out, PhotoMetadata, , < photoMetadata >>, < Out, PhotoFile, , < photoFile >>, < Rdg, PhotoMetadata,< photoMetadata >, < photoMetadataList >>, < Rd, PhotoFile, < photoID >, < photoFile >>, < Rd, PhotoComment, < photoID >, < photoComment >>, < Out, PhotoComment, , < photoComment >>, < In, PhotoComment, < photoID >, < photoComment >>, < Rd, PhotoComment, < photoID >, < photoComment >> }
P2P Photo Sharing Protocol Application Layer set Lime_PhotoSharing_Actions = {photoMetadata, photoFile, photoComment} PhotoSharingPeer = (req.photoMetadata -> Consumer | prov.photoMetadata -> Producer), Producer = (prov.photoFile -> PhotoSharingPeer), Consumer = (req.photoFile ->Consumer | req.photoComment -> Consumer | prov.photoComment -> Consumer | req.photoFile -> PhotoSharingPeer | req.photoComment -> PhotoSharingPeer | prov.photoComment -> PhotoSharingPeer | terminate -> END)
P2P Photo Sharing ProtocolMiddleware Layer Lime_Reader(X =‘ tuple) = (req.[X] -> P1), P1 = (rd[X] -> Lime_Reader | rdp[X] -> Lime_Reader | rdg[X] -> Lime_Reader | in[X] -> Lime_Reader | inp[X] -> Lime_Reader | ing[X] -> Lime_Reader | terminate -> END). Lime_Writer(X =‘ tuple) = (prov.[X] -> P2), P2 = (out[X] -> Lime_Writer | outp[X] -> Lime_Writer | outg[X] -> Lime_Writer | terminate -> END). Lime_glue(X =‘ tuple) = (write[X] -> P0 | outp[X] -> P0 | outg[X] ->P0 | terminate -> END), P0 = (rd[X] -> P0 | rdp[X] -> P0 | rdg[X] -> P0 | in[X] -> Lime_glue | inp[X] -> Lime_glue | ing[X] -> Lime_glue).
P2P Photo Sharing ProtocolPhoto Sharing System constNumberOfPeers= 2 ||Lime_PhotoSharing= ( [i : 1..NumberOfPeers]:PhotoSharingPeer || (forall [tuple:Lime_PhotoSharing_Actions] Lime_Writer(tuple)) || (forall [tuple:Lime_PhotoSharing_Actions] Lime_Reader(tuple)) || (forall [tuple:Lime_PhotoSharing_Actions] Lime_glue(tuple))).
Talking the SameLanguageThe Key Role of Ontology • Aligned • Ontology • OPhoto P Q • OSOAP • OLime • OMW • OPhoto • OPhoto • Translation • OMW • OMW • Behavioral • matchmaking? OPhoto OPhoto P’ Q’ • Translated • Protocols • Interoperate?
The Photo Sharing Ontology Classifiedaccording to subsumption relationships
Reasoning about MediatedMatching Equivalence of LTS traces as the basis Behavioralmatchmakingunder:mapping of semantic-based actions Leveraging the rich SOTA on protocol conversion/mediation But must account for application-layer interactions using middleware See Lecture by Paola Inverardi onApplication-layer Connector Synthesis