disciplining orchestration and conversation in service
play

Disciplining Orchestration and Conversation in Service-Oriented - PowerPoint PPT Presentation

Disciplining Orchestration and Conversation in Service-Oriented Computing Ivan Lanese (Bologna), Vasco T. Vasconcelos (Lisbon), Francisco Martins (Lisbon), Antonio Ravara (Lisbon) The problem: change The problem: change Ubiquitous in


  1. Disciplining Orchestration and Conversation in Service-Oriented Computing Ivan Lanese (Bologna), Vasco T. Vasconcelos (Lisbon), Francisco Martins (Lisbon), Antonio Ravara (Lisbon)

  2. The problem: change

  3. The problem: change • Ubiquitous in business:

  4. The problem: change • Ubiquitous in business: New technologies, acquisitions, mergers.

  5. The problem: change • Ubiquitous in business: New technologies, acquisitions, mergers. • Evil to programmers:

  6. The problem: change • Ubiquitous in business: New technologies, acquisitions, mergers. • Evil to programmers: Separation of soft development and soft maintenance is vanishing.

  7. Existing technologies won’t do

  8. Existing technologies won’t do • Objects incapable to cope with the rapidly change of software systems

  9. Existing technologies won’t do • Objects incapable to cope with the rapidly change of software systems • Components are usually delivered physically; do not take advantage of internet-based computing

  10. Accommodating change: software services • Definitions abound. Here’s a recent one: A coarse grain, discoverable entity that [..] interacts with applications and other services. Elfatatry, CACM, Aug 2007

  11. Aim • Develop formal bases for Service Oriented Computing (SOC): • including models and techniques • allowing for safe development of applications • check that systems provide the required functionality

  12. What this talk in not about

  13. What this talk in not about • Web services

  14. What this talk in not about • Web services • XML, SOAP, WSDL, ...

  15. What this talk in not about • Web services • XML, SOAP, WSDL, ... • We do not address:

  16. What this talk in not about • Web services • XML, SOAP, WSDL, ... • We do not address: • Service discovery, negotiation, brokerage

  17. Outline • A motivating example • Semantics • Analyses • Conclusion

  18. Example: booking an hotel • A process (date) {query-the-hotel-db}.price

  19. Example: booking an hotel • A process receive a value (date) {query-the-hotel-db}.price

  20. Example: booking an hotel • A process some receive computation a value (date) {query-the-hotel-db}.price

  21. Example: booking an hotel • A process some send a receive computation value a value (date) {query-the-hotel-db}.price

  22. Example: booking an hotel • A process some send a receive computation value a value (date) {query-the-hotel-db}.price • A service

  23. Example: booking an hotel • A process some send a receive computation value a value (date) {query-the-hotel-db}.price • A service bologna => (date) {query-the-hotel-db}.price

  24. Example: booking an hotel • A process some send a receive computation value a value (date) {query-the-hotel-db}.price • A service bologna => (date) {query-the-hotel-db}.price service name

  25. Example: booking an hotel • A process some send a receive computation value a value (date) {query-the-hotel-db}.price • A service bologna => (date) {query-the-hotel-db}.price right service arrow indicates name provider

  26. Example: the client • A service consumer bologna <= 31Jul2007.(price) {use-price}

  27. Example: the client • A service consumer bologna <= 31Jul2007.(price) {use-price} • An interaction

  28. Example: the client • A service consumer bologna <= 31Jul2007.(price) {use-price} • An interaction bologna => ... | bologna <= ...

  29. Example: the client • A service consumer bologna <= 31Jul2007.(price) {use-price} • An interaction bologna => ... | bologna <= ... provider

  30. Example: the client • A service consumer bologna <= 31Jul2007.(price) {use-price} • An interaction bologna => ... | bologna <= ... provider consumer

  31. Example: the client • A service consumer bologna <= 31Jul2007.(price) {use-price} parallel • An interaction composition bologna => ... | bologna <= ... provider consumer

  32. Example: a broker comes and...

  33. Example: a broker comes and... ...calls three services

  34. Example: a broker comes and... ...calls three services bologna <= date.(price1) ... | azores <= date.(price2) ... | lisbon <= date.(price3) ...

  35. Example: a broker comes and... ...calls three services bologna <= date.(price1) ... | azores <= date.(price2) ... | lisbon <= date.(price3) ... • How to collect the three prices in a single process, for further processing?

  36. Streams to the rescue • A service orchestrator stream bologna <= date.(price1). feed price1 | azores <= date.(price2). feed price2 | lisbon <= date.(price3). feed price3 as f in f(x).f(y).{publish-the-min-of-x-and-y}

  37. Streams to the rescue • A service orchestrator write into the stream stream bologna <= date.(price1). feed price1 | azores <= date.(price2). feed price2 | lisbon <= date.(price3). feed price3 as f in f(x).f(y).{publish-the-min-of-x-and-y}

  38. Streams to the rescue • A service orchestrator write into the stream stream bologna <= date.(price1). feed price1 | azores <= date.(price2). feed price2 | lisbon <= date.(price3). feed price3 as f in f(x).f(y).{publish-the-min-of-x-and-y} read from the stream

  39. Common patterns deserve abbreviations ( call bologna(date) | call azores(date) | call lisbon(date)) > x y > {publish-the-min-of-x-and-y}

  40. Common patterns deserve abbreviations call service bologna ; write the result into the pipe ( call bologna(date) | call azores(date) | call lisbon(date)) > x y > {publish-the-min-of-x-and-y}

  41. Common patterns deserve abbreviations call service bologna ; write the result into the pipe read two values from the pipe; call ( call bologna(date) | them x and y call azores(date) | call lisbon(date)) > x y > {publish-the-min-of-x-and-y}

  42. Common patterns deserve abbreviations call service bologna ; write the result into the pipe read two values from the pipe; call ( call bologna(date) | them x and y call azores(date) | call lisbon(date)) > x y > {publish-the-min-of-x-and-y} Inspired in Orc!

  43. Example: service composition broker => (date).( (call bologna(date) | call azores(date) | call lisbon(date)) > x y > call min(x,y) > m > m)

  44. Example: service composition a service definition broker => (date).( (call bologna(date) | call azores(date) | call lisbon(date)) > x y > call min(x,y) > m > m)

  45. Example: service composition a service definition broker => (date).( (call bologna(date) | call azores(date) | call lisbon(date)) > x y > call min(x,y) > m > m) call a service to compute the min

  46. Example: service composition a service definition broker => (date).( (call bologna(date) | call azores(date) | call lisbon(date)) > x y > call min(x,y) > m > m) call a service to read the result compute the min

  47. Example: service composition a service definition broker => (date).( (call bologna(date) | call azores(date) | return call lisbon(date)) > x y > it call min(x,y) > m > m) call a service to read the result compute the min

  48. Clients won’t notice the difference • The client broker <= 31Jul2007.(price) {use-price} • Interaction as before broker <= ... | broker => ...

  49. Clients won’t notice the difference • The client broker <= 31Jul2007.(price) {use-price} • Interaction as before Central to services! broker <= ... | broker => ...

  50. Syntax ::= P, Q Processes P | Q Parallel composition | ( ν a ) P Name restriction Process | Terminated process 0 calculus | X Process variable | rec X.P Recursive process definition | a ⇒ P Service definition Service | a ⇐ P Service invocation | v.P Value sending Protocol | ( x ) P Value reception | stream P as f in Q Stream | feed v.P Feed the process’ stream Stream | f ( x ) .P Read from a stream ::= u, v Values

  51. Operational semantics: service invocation bologna <= bologna => 31Jul2007.(price) (date) {...date...}.price {...price...}

  52. Operational semantics: service invocation bologna <= bologna => 31Jul2007.(price) (date) {...date...}.price {...price...} nu r r :> r :> (date) 31Jul2007.(price) {...date...}.price {...price...}

  53. Operational semantics: service invocation bologna <= bologna => 31Jul2007.(price) (date) {...date...}.price {...price...} new session channel nu r r :> r :> (date) 31Jul2007.(price) {...date...}.price {...price...}

  54. Operational semantics: protocol r|> 31Jul2007. r|>(date) (price) {...price...} {...date...}.price

  55. Operational semantics: protocol r|> 31Jul2007. r|>(date) (price) {...price...} {...date...}.price r|>(price) r|> {... {...price...} 31Jul2007...}.price

  56. Operational semantics: streams stream ... | feed 196 |... as f in f(x).f(y).{...x...y...}

  57. Operational semantics: streams stream ... | feed 196 |... as f in f(x).f(y).{...x...y...} stream ... | nil |... as f=196 in f(x).f(y).{...x...y...}

Recommend


More recommend