340 likes | 447 Views
Should Mirror Operations Be Dropped?. David Booth W3C Fellow / Hewlett-Packard. Current Status. Four Message Exchange Patterns (MEPs): Input-Output (was "Request-Response") Input-Only (was "One-Way") Output-Input (was "Solicit-Response") Output-Only (was "Notification")
E N D
Should Mirror Operations Be Dropped? David BoothW3C Fellow / Hewlett-Packard
Current Status Four Message Exchange Patterns (MEPs): • Input-Output (was "Request-Response") • Input-Only (was "One-Way") • Output-Input (was "Solicit-Response") • Output-Only (was "Notification") "Mirror ops": Output-Input, Output-Only
Problems with Mirror Ops • Multiple interpretations: event? callback? • Little evidence of use • Where to get the Client's address? • Inconsistent treatment of Faults? • Input-Output: Fault is an alternate Output • Input-Only: (no Faults) • Output-Input: Fault is an alternate Input • Output-Only: (no Faults)
What I Did Abstract analysis: • Suppose we used WS descriptions in a larger context. Would we want mirror ops? • Example: Markets
Multiple Clients, Multiple Services Any Client can talk to any Service (of the same type) Potential Application: Markets Client A1 Service B1 Service A2 Service B2 Service A3 Service B3
Ways to match Client and Service: Client and Service share same WSDL Client and Service have complementary WSDLs Markets Client A1 Service B1 Service A2 Service B2 Service A3 Service B3
Role must be separately indicated: Client: "I'm a T Client" Service: "I'm a T Service" Binding information is lopsided (Service-centric) Binding has Service-specific info (address) Where is Client-specific info placed? Shared Service Descriptions Client A1 T Service B1 Service A2 Service B2 Service A3 Service B3
{T1, T2, T3} could be specific to {B1, B2, B3} T1 has B1's address, T2 has B2's address, etc. B1: "I'm a T1 Service" B2: "I'm a T2 Service", etc. Each Client could reference all {T1, T2, T3}:"I'm a T1Client, a T2 Client and a T3 Client" T3 T2 T1 Shared: One WSDL per Service Client A1 Service B1 Service A2 Service B2 Service A3 Service B3
{T1, T2, T3} could reference generic T T1 has B1's address, T2 has B2's address, etc. B1: "I'm a T1" T is Service-centric, but not identity-centric (I.e., no address) Client could reference generic T: "I'm a T Client" T3 T2 T1 Shared: Referencing a Common T Client A1 T Service B1 Service A2 Service B2 Service A3 Service B3
{TA1, TA2, TA3}, {TB1, TB2, TB3} are all identity-specific TA1: "A1 is a T Client" TB1: "B1 is a T Service" T does not contain address TB3 TB2 TB1 TA3 TA2 TA1 Shared: Client, Service Ref T Client A1 T Service B1 Service A2 Service B2 Service A3 Service B3
TC and TS are role-specific, but not identity-specific: TC: "I am a T Client" TS: "I am a T Service" T does not contain address or role info Client A1 Service B1 TB1 TB2 TB3 TC TA1 TA3 TA2 TS Service A2 Service B2 Service A3 Service B3 Shared: Role-Specific Descriptions T
Sharing requires mirror ops only if you think they're important Need Output-Input? Need Output-Only? TB3 TB2 TB1 TA3 TA2 TA1 Shared: Conclusion Client A1 T Service B1 Service A2 Service B2 Service A3 Service B3
Symmetric ("Peer-to-Peer") T describes Service; ~T describes Client T, ~T indicate: Generic info (T) Role-specific info (Client vs. Service) Identity-specific info (address) Requires (complementary) equivalence to match Complementary Service Descriptions Client A1 ~T T Service B1 Service A2 Service B2 Service A3 Service B3
Complementary approach requires mirror ops Inputs of T are Outputs of ~T Outputs of T are Inputs of ~T Complementary: Observation Client A1 ~T T Service B1 Service A2 Service B2 Service A3 Service B3
{TA1, TA2, TA3}, {TB1, TB2, TB3} are all identity-specific TA1: "A1 is a ~T" TB1: "B1 is a T" T, ~T do not contain addresses TB3 TB2 TB1 TA3 TA2 TA1 Complementary: Identity-Specific Info Client A1 ~T T Service B1 Service A2 Service B2 Service A3 Service B3
Conclusions • Mirror ops add flexibility • Identity-specific info (address) should be separated from shared info • Other binding info can be shared:transport protocol, etc.
WSDL Information Sharing From most shared to least shared: • Message types • Message direction (input/output) • Transport protocol, Message encoding • Address (Not shared!) The least shared info should be latest bound
Sequence: A sends W to B B sends X to A A sends Y to B B sends Z to A X Y Z W A's View B's View MEPs 1 2 3 4
One big MEP: PWXYZ: Receive W, send X, receive Y, send Z X Y Z W A's View B's View MEP: B's View PWXYZ 1 2 3 4
Two "Request-Response" MEPs: PWX: Receive W, send X PYZ: Receive Y, send Z X Y Z W A's View B's View MEP: B's View PWX 1 2 PYZ 3 4
Q: Should B care how A models its interactions with B? A: Of course not. X Y Z W A's View B's View MEP: B's View PWX 1 2 PYZ 3 4
Two "Solicit-Response" MEPs: PWX: Send W, receive X PYZ: Send Y, receive Z X Y Z W A's View B's View MEP: A's View 1 PWX 1 2 PYZ 3 4
Three MEPs: PW: Send W ("Notification") PXY: Receive X, send Y ("Request-Response") PZ: Receive Z ("One-way") X Y Z W A's View B's View MEP: A's View 2 PW 1 2 PXY 3 4 PZ
Four MEPs: PW: Send W ("Notification") PX: Receive X ("One-way") PY: Send Y ("Notification") PZ: Receive Z ("One-way") X Y Z W A's View B's View MEP: A's View 3 PW 1 2 PX PY 3 4 PZ
Two MEPs: PWX: Send W, receive X ("Solicit-Response") PYZ: Send Y, receive Z ("Request-Response") X Y Z W A's View B's View MEP: A's View 4 PWZ 1 2 PXY 3 4
Observation: MEPs are role-specific X Y Z W A's View B's View MEPs Are Relative PWZ PWX 1 2 PXY PYZ 3 4
A makes PWZ from half of PWX and half of PYZ X Y Z W A's View B's View MEPs Are Relative PWZ PWX 1 2 PXY PYZ 3 4
A makes PXY from half of PWX and half of PYZ X Y Z W A's View B's View MEPs Are Relative PWZ PWX 1 2 PXY PYZ 3 4
Suppose: A must send B messages in format X X represents message format definition A, B reference X X contains role-specific information, e.g., "<in>" (from B's perspective) A, B use the same software T to generate Sender and Receiver from X Role-Specific Information X <in> Service A Service B Sender Receiver T
Observation: Q: How does T know whether to generate Sender or Receiver from X? A: T must have other information Therefore "<in>" is unnecessary in X Role-Specific Information X <in> Service A Service B Sender Receiver T
Conclusion: Information that is shared between different roles should not contain role-specific information Examples of role-specific information: "<input>", "<output>", "one-way", address Role-Specific Information X <in> Service A Service B Sender Receiver T