Date post: | 27-Dec-2015 |
Category: |
Documents |
Upload: | austen-lucas |
View: | 232 times |
Download: | 0 times |
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 CONNECT project
Composing Systems inToday’s Pervasive Networks
1. Discovery protocol interoperability
2. Interaction protocol interoperability
3. Data interoperability
4. Application interoperability
5. Interoperability of non-functional properties
2
The Simple Yet Challenging Photo Sharing Scenario
Any peer around?How may I get the picture?Is it a jpg file?May I get all the related pictures?Am I allowed to forward those pictures?
See Lecture by Gordon Blair onInteroperability in Complex Distributed Systems
Mediation to Make Systems Interoperable
3
P2P Photo Sharing C/S-based Producer
See Lecture by Paola Inverardi onApplication-layer Connector Synthesis
Mediation that actually bridges the Application (Different protocols for accessing photo files)
&Middleware (Different interaction paradigms)
Layers
Mediation Must Span All Layers
4
Constituent systems heterogeneity in coordination models, communication protocols, data representation models (middleware platforms)
Most common coordination models: client/server, pub/sub, tuple space
Yet Another Scenario: Search & Rescue Operations
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
8
Middleware-based Connector
10
HeterogeneousMiddleware
Built-in Mediation
Discovery &Routing
Supporting Middleware
NFPEnforcement
See R. N. Taylor et al. Software Architecture: Foundations, Theory & Practice - Wiley
Towards Emergent Connectors
Formalizing middleware-based connectors to reason about interoperability
Revisiting existing interoperability connectors
Emergent connector synthesis
18
Outline
Middleware-based connectors Formalizing middleware-based connectors Revisiting interoperability connectors Emergent connector synthesis Emergent connector in practice Conclusion
19
Finite State Processes
20
END Predefined process, successfull terminationset S Denotes a set of action labels[i : S] Binds the variable i to a value from S
Primitive Processes (P)a -> P Action prefixa -> P | b -> P ChoiceP;Q Sequential compositionP(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}
RelabelingP \{a1, a2, …, an} HidingP +{a1, a2, …, an} Alphabet extension
Composite Processes (||P)P||Q Parallel compositionforall [i : 1..n] P(i) Replicator construct: equivalent to the parallel compositiona : P Process labeling
SOAP-based Middleware Connector
21
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
SOAP
See Work by D. Garlan et 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).
22
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 ).
23
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))).
24
Outline
Middleware-based connectors Formalizing middleware-based connectors Revisiting interoperability connectors Emergent connector synthesis Emergent connector in practice Conclusion
25
Approaches to Interoperability
Solutions applicable to Middleware and Application layers• Software Bridges• Interoperability Platforms• Transparent Interoperability
26See Lecture by Gordon Blair & Massimo Paolucci on
Interoperability in Complex Distributed Systems
Software Bridges
27
LegacyApplication
Legacy Middleware
A
Peer
Legacy Application
Legacy Middleware
B
Peer
Bridge A to B
3rd Party Peer
E.g.:OrbixCOMet, SOAP2CORBA at middleware-layer
Domain-specific bridges –MSN-Yahoo bridge - at application-layer
Bridging Connector
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
29
Indirect Bridge Mediator
30
||Indirect_Bridge_Mediator = (T1 || Bridge1 || Bridge2 || T2)
E.g., ESB solutions (Artix, PetalS, …), Interoperability manager (MUSDAC)Domain-specific J-EAI for interoperable IMs
ESB Connector
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
Glue i=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
31
R1 R2
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
Bridging processes
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..n a.tagi:Gluei || Bridge1|| Gluebus || Bridge2 ||k=1..m b.tagk:Glue’k || T2 || R2
32
T1 T2
Software Bridges Assessment
33
• Handcoded development of bridges (i.e., Process T)• Direct bridging does not scale • Interoperability limited to the behavior of the intermediary in
the case of indirect bridging
Interoperability Platforms
34
Application
Peer
ApplicationLegacy
Middleware
Peer
Substituted Middleware
Translation
Interoperability Platform
E.g.: UIC, ReMMoC at middleware-layer
Domain-specific platform – IM Pidgin, Adium - at application-layer
Interoperability Connector (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}
36
Interoperability Connector (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..n tagi :Gluei || R2
37
Transparent Interoperability
3939
LegacyApplication
Legacy Middleware
Peer
Legacy Application
Legacy Middleware
Peer
Translation to
Intermediary
3rd Party Peer
Translation to
Intermediary
E.g.:INDISS, ubiSOAP at middleware layer
Domain-specific interoperability – IM CrossTalk – at application layer
Transparent Mediator
40
||Transparent_Mediator = (Switch || W1 || M1 || Bridge1 || Bridge2 || M2 || W2 || Switch’)
Transparent Interoperability Connector (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)41
TransparentInteroperability Connector (2)Switch processes
Switch = (a.election -> a.reset -> Switch |i=1..n a.election -> a.gluei -> Switch)\{a.election}
Switch’ = (b.election->b.reset->Switch’ |k=1..m b.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
42
TransparentInteroperability Connector (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..n a.tagi:Gluei/{f(r:aGluei)/[r]} || W1 || M1 || Bridge1
|| M2 || W2 ||k=1..m b.tagk:Gluek/{f(r:aGlue’k)/[r]} || Switch’ || R2
43
Transparent Interoperability Assessment
44
• Addresses interoperability at a single layer• Projection function f to be given, making it similar to indirect
bridging although with (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
45
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
4646
NSCONNECTor
NS« Mediation » connectoraka Emergent middleware
See Lecture by Nikolaos Georgantas & Paul Grace onThe CONNECT Architecture
Meeting in the Heterogeneous World
47
OPhoto
OSOAP
P
Networked systems meet according to matching “Affordances”
QOPhoto
OLime
Photo sharing using SOAP
Photo sharing using LIME
“Affordance” behaviour is characterized by its protocol and related ontology
from application down to middleware layer
Photo sharing Photo sharing
“Affordance” behaviour is characterized by its protocol and related ontology
Networked System Model forOn-the-fly Connection
Interface definition leveraging Semantic Web service technologies• Affordance aka Capability
<Type, Concept, Inputs, Outputs>
• Interface signature• Action defined as <Mdw, Application, I, O>
• Affordance behavior
48
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 >>
}
49
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)
50
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).
51
P2P Photo Sharing ProtocolPhoto Sharing System
const NumberOfPeers = 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))).
52
Talking the Same LanguageThe Key Role of Ontology
53
P’ Q’
Q
TranslatedProtocols
OPhotoOPhoto
AlignedOntology
Interoperate?
OSOAP
OPhoto
OLime
OPhoto
OMW
OPhoto
OMW
Translation
POMW
Behavioralmatchmaking
?
Reasoning about Mediated Matching
Equivalence of LTS traces as the basis
55
Behavioral matchmaking under:mapping of semantic-based actions
But must account for application-layer interactions using middleware
Leveraging the rich SOTA on protocol conversion/mediation
See Lecture by Paola Inverardi onApplication-layer Connector Synthesis
Need to Abstract Middleware Protocols
Towards aligning middleware functions• 4 main middleware types
• RPC• Shared memory• Event-based• Message-based
56
From Lime to Shared Memory P2P Photo Sharing to…
Reader(X =‘ data) = (req.[X] -> P1),
P1 = (read[X] -> Reader | terminate -> END).
Writer(X =‘ data) = (prov.[X] -> P2),
P2 = (write[X] -> Writer | terminate -> END).
SM_glue(X =‘ data) = (write[X] -> P3 | terminate->END),
P3 = (read[X] -> SM_glue).
62
Shared Memory P2P Photo Sharing (LTS)
63
<Write, PhotoMetadata, , photoMetadata>
<Write, PhotoFile, , photoFile>
<Read, PhotoFile, photoID, photoFile>
<Read, PhotoMetadata, photoMetadata, photoMetadataList>
<Write, PhotoComment, , photoComment>
<Read, PhotoComment, photoID, photoComment>
… to Middleware AgnosticP2P Photo Sharing
Reader(X =‘ data) = (req.[X] -> P1),
P1 = (input[X] -> Reader | terminate -> END).
Writer(X =‘ data) = (prov.[X] -> P2),
P2 = (output[X] -> Writer | terminate -> END).
SM_glue(X =‘ data) =
(output[X] -> P | terminate -> END),
P = (input[X] -> SM_glue).
64
Middleware AgnosticP2P Photo Sharing (LTS)
65
<PhotoMetadata, , photoMetadata>
<PhotoFile, , photoFile>
<PhotoFile, photoID, photoFile>
<PhotoComment, , photoComment >
<PhotoComment, photoID, photoComment>
Middleware AgnosticC/S Photo Sharing (LTS)
66
Consumer
<SearchPhotos, photoMetadata, photoMetadataList>
<DownloadPhoto, photoID, photoFile>
<CommentPhoto, photoComment, acknowledgement >
Interoperable Systems atAbstract Level
67
<PhotoMetadata, , photoMetadata>
<PhotoFile, , photoFile>
<PhotoFile, photoID, photoFile>
<PhotoComment, , photoComment >
<PhotoComment, photoID, photoComment><SearchPhotos, photoMetadata, photoMetadataList>
<DownloadPhoto, photoID, photoFile>
<CommentPhoto, photoComment, acknowledgement >
Emergent Connectors Synthesis
Affordance matching according to subsumption relationships between concepts of the affordances
Interface mapping among the actions of the protocols to be made interoperable for the following mismatches• Splitting of input actions / Merging of output actions • Extra output actions
Verifying whether protocols may successfully coordinate according to the computed interface mapping
→Mediation connector that implements the computed interface mapping + message translation
68
Interface Mapping
MapI(IA1, IA2) = <a, I, O>IA1 {<a, I, O> → map(<a, I, O>, IA2)}
<a’, I’, O’>IA2 {<a’, I’, O’> → map(<a’, I’, O’>, IA1)}
with:
map(<a, Ia, Oa>, I) = {<<out.bi, Ii, Oi> I>i=1..n |
a i {bi}
^ Ii ≤ n (j<i {Oi}) {Ia}
^ Oa (j<i {Oi}) {Ia}
}
and:seq1 map(<a, Ia, Oa>, I), seq2 map(<a, Ia, Oa>, I) | seq2 < seq1
69
Mediator Synthesis
Adaptation processes:
Ma = (||i Processes that merge/split A1 actions)
Ma’ = (||i’ Processes that merge/split A2 actions)
Mb’ = (||i Processes that consume extra output actions of A2)
Mb = (||i Processes that consume extra output actions of A1)
Behavioral matching under mediation:
P1 || Ma || Mb’ ≤ P2 || Ma’ || Mb
where A1 A2 and A1 req A2
Emergent connector:
Ma || Mb’ || Ma’ || Mb
70
From Abstract to Concrete Emergent Connectors
71See Lecture by Nikolaos Georgantas & Paul Grace on
The CONNECT Architecture
Outline
Middleware-based connectors Formalizing middleware-based connectors Revisiting interoperability connectors Emergent connector synthesis Emergent connector in practice Conclusion
73
The Instant Messaging Case Study
74
XMPP System
XMPP Client XMPP ClientXMPP
MSNP SystemMSN Client MSN Client
MSNP
• 1-1 Interface mapping• Behavioral matching using OFSP
(FSP enriched with ontology reasoning over actions)
Making IMs interoperable
Software bridges• Direct: MSN & Yahoo!Messenger• Indirect: J-EAI
Interoperability platforms• Pidgin, Adium
Transparent interoperability• CrossTalk
75
The CONNECT Way
76
XMPPMSNP
XMPPOFSP process
MSNPOFSP process
Behavioral Matching
IM Ontology(OWL)
Adaptation
Mediator
OFSP Modeling
Failure
Exact matching
Partial matchingNo matching
Ontology-based Model Checking
Mediation
Dealing with Infrastructure-based functionalities
abdc
e
OFSP Specification of MSNP
MSNClient =
(<input, MSNAuthenticationRequest, {UserID}, {Challenge} >
-> < input, MSNAuthenticationResponse, {Response}, {Authenticationok} >
-> ExchangeMsgs).
ExchangeMsgs =
(< input, CreateChatRoom, {UserID}, {ConversationID} >
-> < input, JoinChatRoom, {UserID}, {Acceptance} -> P1
| < output, JoinChatRoom, {UserID}, {Acceptance} >
-> < input, {ChatRoomInfo, , {ConversationID} > -> P1
P1 =
(< input, InstantMessage, {UserID, ConversationID, Messageg}, > -> P1
| < output, InstantMessage, {UserID, ConversationID, Message}, > -> P1
| < input, MSNLogout, {UserID }, > -> END
78
OFSP Specification of XMPP
79
XMPPClient =
(< input, XMPPAuthenticationRequest, {UserID}, {Challenge} >
-> < input, XMPPAuthenticationResponse, {Response}, {Authenticationok}> -> ExchangeMsgs).
ExchangeMsgs =
(< input, InstantMessage, {SenderID, RecepientID, Message}, > -> ExchangeMsgs
| < output, InstantMessage, {SenderID, RecipientID, Message <}, > -> ExchangeMsgs
| < input, XMPPLogout, {UserID}, > -> END).
OFSP Specification MSNP-XMPP Mediator
80
Map1 =
(<output, InstantMessage, {SenderID, RecepientID, Message} , >-> <input, InstantMessage,{UserID, ConversationID, Message } , >-> Map1).
Map2 =
(<output, InstantMessage, {UserID, ConversationID, Message } , >-> <input, InstantMessage, {SenderID, RecepientID, Message}, >-> Map2).
||Mediator = (Map1 || Map2).
On-line Mediation
81
Parser
Composer
Operation1
Inputs1
Outputs1
input
Parser
ComposerTransform
Operation2
Inputs2
Outputs2
output
InstantMessage
senderID, recepientIDmessage∅
input
InstantMessage
userID, conversationIDmessage∅
input
Mediator
Message Mediation
82
UUM 15 [email protected] 32 1 159MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8X-MMS-IM-Format: FN=Segoe%20UI; EF=; CO=0; CS=1; PF=0Dest-Agent: client
Test Message from MSN to XMPP
<?xml version="1.0" encoding="UTF-8"?><Thing><Version>17</Version><IM>?0</IM><Service>6</Service><PacketLength>142</PacketLength><MSNP>YMSG</MSNP><Status>1515563606</Status><Sender>amel.bennaceur1</Sender><Recipient>[email protected]</Recipient><SessionID>5684388</SessionID><VendorID>0</VendorID></Thing>
<ObjectPropertyIRI="#consistsOf"/><NamedIndividual IRI="#first"/><NamedIndividual IRI=“MSN"/><DataPropertyIRI="#hasSender"/><NamedIndividual IRI="#first"/><Literal abbreviatedIRI="xsd:string">amel.bennaceur1</Literal></DataPropertyAssertion><DataPropertyAssertion><DataPropertyIRI="#hasRecipient"/><NamedIndividual IRI="#first"/><Literal abbreviatedIRI="xsd:string">[email protected]</Literal></DataPropertyAssertion>
…
<?xml version="1.0" encoding="UTF-8"?><message
from=‘[email protected]' id='ktx72v49' to=‘[email protected]' type='chat' xml:lang='en'>
<body>Test Message from MSN to XMPP</body> </message>
<ObjectPropertyIRI="#consistsOf"/><NamedIndividual IRI="#first"/><NamedIndividual IRI=“XMPP"/><DataPropertyIRI="#hasSender"/><NamedIndividual IRI="#first"/><Literal abbreviatedIRI="xsd:string"> [email protected] </Literal></DataPropertyAssertion><DataPropertyAssertion><DataPropertyIRI="#hasRecipient"/><NamedIndividual IRI="#first"/><Literal abbreviatedIRI="xsd:string“> [email protected] </Literal></DataPropertyAssertion>
…
DSL parser
XSLT engine
Reasoning
XSLT engine
XML Composer
Instant MessagingOntology
MSNP DSL Specs
MSNP OWL individual
MSNP XML Message
MSNP text message
XMPP OWL individual
XMPP Message
Performance EvaluationProprietary vs Synthesized Mediator
Latency (ms)
Native Hand Synthesized
Pars Trans
MSNP - MSNP 22 12 231 11
YMSG - YMSG 24 08 342 12
YMSG - MSNP 35 06 234 20
MSNP - XMPP N/A 52 135 07
YMSG - XMPP N/A 44 145 06
MSNP - GTalk N/A 65 N/A
YMSG - GTalk N/A 78 N/A
83
Performance EvaluationProprietary vs Synthesized Mediator
Lines of Code/Spec
Hand-coded Synthesized
Pars Trans
YMSG - MSNP 1172 245
MSNP - XMPP 0750 203
YMSG - XMPP 0945 144
84
Outline
Middleware-based connectors Formalizing middleware-based connectors Revisiting interoperability connectors Emergent connector synthesis Emergent connector in practice Conclusion
87
88
Composing Pervasive Systems
State-of-the art survey in middleware & data interoperability shows that no current approach meets today’s interoperability challenge
Need for emergent middleware where connectors are synthesized on the fly
89
Synthesizing CONNECTors for Pervasive Systems
• CONNECTors implementing emergent middleware that mediate interactions among pervasive networked systems
• Formalization of interoperability based on matching and mapping relationships between interaction protocols run by networked systems
• Dealing with application- and middleware-layer connectors
• Further challenge of enforcing non-functional properties