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...}

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend