Your SlideShare is downloading. ×
0
Service Oriented Architecture – Principles and Technologies Dr. Josef Withalm Mgr. Pavol Mederly
Course Content <ul><li>„ Theoretical part“ (jw)  – 7 lectures </li></ul><ul><ul><li>Evolution of architectures „from OO to...
Practical part <ul><li>„ integration studio“ </li></ul><ul><ul><li>Progress Sonic ESB </li></ul></ul><ul><ul><li>Jetty web...
<ul><li>Pondelok 11:30 – 13:05 </li></ul><ul><li>akvárium  V I   alebo  M-217 </li></ul><ul><li>(bude vždy oznámené vopred...
Today <ul><li>Service Oriented Architecture </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><li>Macro-Microflow Pat...
A definition (one of) <ul><li>Service-oriented architecture (SOA)  is a distributed systems architecture that is typically...
What is it good for ... ? <ul><li>application integration </li></ul><ul><ul><li>intra-enterprise </li></ul></ul><ul><ul><l...
Enterprise Application Integration <ul><li>there are  plenty of apps  in a typical enterprise </li></ul><ul><li>there is a...
An example –  purchase order processing <ul><li>Input: purchase order </li></ul><ul><li>Validate customer ID and status </...
Systems involved <ul><li>Validate customer ID and status </li></ul><ul><ul><li>Customer Relation Management (CRM) </li></u...
 
 
SOA says to ... <ul><li>publish relevant application functionality  as services </li></ul><ul><li>create  composite (integ...
(Some) services involved <ul><li>Validate customer ID and status </li></ul><ul><ul><li>Customer Relation Management (CRM) ...
Research in SOA / SOC <ul><li>IEEE International Conference on Web Services (ICWS) </li></ul><ul><li>IEEE International Co...
Today <ul><li>Service Oriented Architecture </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><li>Macro-Microflow Pat...
Nice idea but ... <ul><li>the world is not so simple </li></ul><ul><li>not everyone speaks WSDL 2.0 / SOAP 1.2 </li></ul><...
E nterprise  S ervice  B us <ul><li>ESB  provides an  infrastructure for communication of </li></ul><ul><li>service provid...
Today <ul><li>Service Oriented Architecture </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><li>Macro-Microflow Pat...
Business Owner View <ul><li>Validate customer ID and status </li></ul><ul><li>Check customer credit </li></ul><ul><li>Chec...
IT Department View <ul><li>Customer Relation Management (CRM) </li></ul><ul><ul><li>packaged application,  Windows, MS SQL...
Macro-Microflow Pattern   – an approach to process-oriented SOA <ul><li>Macroflow Layer </li></ul><ul><ul><li>processes as...
Options custom code Option 0 custom code standard infrastructure (BPM) Option 3 standard infrastructure (ESB) standard inf...
Today <ul><li>Service Oriented Architecture </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><li>Macro-Microflow Pat...
<ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li><Order> </li></ul><ul><li><OrderID> 10200341 </OrderID> <...
Service 1: GetCustomerDetails <ul><li>Input:  HTTP POST to  http://crmserver.acme.org/custinfo </li></ul><ul><li><?xml ver...
HTTP document address (URL):   http://server/do c ument HTTP
Hypertext Transfer Protocol (HTTP) Client request  – get document /www/index.html HTTP 1.1:  RFC 2616
M et hods
Return codes
Using HTTP for application communication <ul><li>method: GET; parameters in URL (limited size) </li></ul><ul><li>GET / get...
Properties <ul><li>simple </li></ul><ul><li>rich existing infrastructure </li></ul><ul><ul><li>application servers </li></...
Service 2 a : CheckCustomerCredit <ul><li>Input:  message sent to  topic   ERP.General.Entry  </li></ul><ul><li>(broker Mg...
Messaging JMS flavor <ul><li>clients  communicate through messaging  broker(s) </li></ul><ul><li>a  broker provide s  mess...
Queues <ul><li>a client sends a message into the  queue </li></ul><ul><li>the message  waits there  until  (another)  clie...
Topics <ul><li>a client sends a message into the  topic </li></ul><ul><li>the message is delivered to  all  clients that <...
Message <ul><li>A m essage consist s  of: </li></ul><ul><li>header </li></ul><ul><li>properties </li></ul><ul><li>body </l...
Message Header <ul><li>JMSDestination  ( queue or topic name ) </li></ul><ul><li>JMSDeliveryMode  (persistent,  non- persi...
Message Properties and Body <ul><li>Properties </li></ul><ul><li>contain client-defined  (application specific) name- valu...
Other processing options <ul><li>acknowledgments </li></ul><ul><ul><li>receipt of message has to be acknowledged, either: ...
Other processing options <ul><li>transactions </li></ul><ul><ul><li>messages can be sent and received transactionally  (i....
Properties <ul><li>reliable </li></ul><ul><ul><li>acknowledgments, transactions </li></ul></ul><ul><li>synchronous or asyn...
Service 2 b : CheckCustomerCredit <ul><li>Input:   file  nnnnnn.req  stored into  specified  directory </li></ul><ul><li>(...
Service  3 :  PackageGoods <ul><li>Input:  HTTP POST to  http:// inv .acme.org/ apps/package </li></ul><ul><li>OPEN;102003...
Service 4: StartDelivery <ul><li>Input:   SOAP  message sent to  URL   http://express.com/services  </li></ul><ul><li><?xm...
<ul><li>Output:   SOAP  response (via HTTP) </li></ul><ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li>< e...
SOAP <ul><li>flexible protocol for  transfer of XML messages  between applications </li></ul><ul><ul><li>application  A  (...
SOAP (2) <ul><li>the header  is typically used for control information for “advanced” services such as </li></ul><ul><ul><...
XML Namespaces <ul><li>names of elements and attributes can be  globally unique , if there  is  a  namespace  specified fo...
<ul><li>< env:Envelope   xmlns:env=&quot;http://www.w3.org/2003/05/soap-envelope&quot; > </li></ul><ul><li>< env:Header > ...
SOAP (4) <ul><li>message exchange can be  </li></ul><ul><ul><li>synchronous  ( e.g.  request  and  reply in one HTTP sessi...
Properties <ul><li>platform neutral, generally accepted </li></ul><ul><ul><li>rich programming support </li></ul></ul><ul>...
References <ul><li>Hentrich, C., Zdun, U. (2006).  Patterns for Process-Oriented Integration in Service-Oriented Architect...
Upcoming SlideShare
Loading in...5
×

Úvod

348

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
348
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • predstavenie
  • see: http://www.w3.org/TR/2004/NOTE-ws-arch-20040211 iný pohľad: OASIS SOA RM process-oriented SOA je len jedna z možností
  • Predstavme si, že chceme automatizovať proces spracovania objednávky v obchodnej firme. Veľmi zjednodušene tento môžeme popísať v uvedených bodoch.
  • Praktickým problémom je, že jednotlivé úkony sa realizujú v rôznych aplikáciách (systémoch).
  • Takže integrácia týchto systémov veľmi často končí takto. Inak, pre niektoré procesy je práve toto optimálne riešenie ...
  • V iných organizáciách (najmä veľkých s veľkým rozpočtom a IS ktorý sa vyvíja už dlho) potreba integrácie môže prerásť do tzv. integračného chaosu (integračné špagety).
  • máš aplikácie, potrebuješ ich integrovať ? OK. 1) vytvor služby, 2) vytvor kompozitné aplikácie
  • obr ázok – mám služby, chcú komunikovať platform neutral, standardized format je fajn vec, ale ťažko dosiahnuteľná niekedy potrebujeme prvok, ktorý zabezpečí, aby spolu komunikovali aj inak „nekompatibilné“ služby (Java/JMS vs .Net)
  • obrázok!!!
  • tu by sa malo kresliť ... obr ázok: ESB ako vrstva medzi BPM a jednotlivými službami treba uviesť aj obrázok 2: ESB ako vrstva medzi klientom a službou (kde klient nemusí byť BPM) – čiže napr. HTTP/JSON vs. SOAP
  • v tomto pr ípade Client 1 môže byť klient, Client 2 môže byť CRM
  • more consumers – good e.g. for load balancing
  • JMSRedelivered /
  • Transcript of "Úvod"

    1. 1. Service Oriented Architecture – Principles and Technologies Dr. Josef Withalm Mgr. Pavol Mederly
    2. 2. Course Content <ul><li>„ Theoretical part“ (jw) – 7 lectures </li></ul><ul><ul><li>Evolution of architectures „from OO to SO“ </li></ul></ul><ul><ul><li>Web Services and Semantic Web </li></ul></ul><ul><ul><li>SOA: Technological basis </li></ul></ul><ul><ul><li>SOA: Basing on Java EE </li></ul></ul><ul><ul><li>SOA: Focus on business processes </li></ul></ul><ul><ul><li>B2B Frameworks and related standards </li></ul></ul><ul><ul><li>Web 2.0 and Grid computing </li></ul></ul><ul><li>„ Practical part“ (pm) – 6 lectures </li></ul><ul><ul><li>Application integration based on SOA principles </li></ul></ul><ul><ul><li>Enterprise Service Bus as an implementation technology </li></ul></ul>
    3. 3. Practical part <ul><li>„ integration studio“ </li></ul><ul><ul><li>Progress Sonic ESB </li></ul></ul><ul><ul><li>Jetty webserver -based sample service </li></ul></ul><ul><ul><li>JMS-based sample services </li></ul></ul><ul><ul><li>JAX-WS web sample service s </li></ul></ul><ul><ul><li>SoapUI Test Client </li></ul></ul><ul><ul><li>some other ESB ? </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>experiences with </li></ul><ul><ul><li>practical service integration / adaptation tasks </li></ul></ul><ul><ul><li>WSDL, SOAP, XSLT, XPath, JMS, ... </li></ul></ul>
    4. 4. <ul><li>Pondelok 11:30 – 13:05 </li></ul><ul><li>akvárium V I alebo M-217 </li></ul><ul><li>(bude vždy oznámené vopred + na webe) </li></ul><ul><li>http://www.fmph.uniba.sk/ ~pmederly </li></ul><ul><li>pavol.mederly @fmph.uniba.sk, M-171 </li></ul><ul><li>ukončenie: projekt (ESB) + skúška </li></ul>
    5. 5. Today <ul><li>Service Oriented Architecture </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><li>Macro-Microflow Pattern </li></ul><ul><li>Sample scenario </li></ul>
    6. 6. A definition (one of) <ul><li>Service-oriented architecture (SOA) is a distributed systems architecture that is typically characterized by the following properties: </li></ul><ul><ul><li>systems developed under SOA paradigm consist of services </li></ul></ul><ul><ul><li>the service provides an abstracted (logical) view of actual HW/SW components (programs, databases, business processes, ...) </li></ul></ul><ul><ul><li>the service is formally defined in terms of the messages exchanged between provider agents and requester agents </li></ul></ul><ul><ul><li>the service description is published in machine-processable form </li></ul></ul><ul><ul><li>services tend to use a small number of operations with relatively large and complex messages </li></ul></ul><ul><ul><li>services tend to be oriented toward use over a network </li></ul></ul><ul><ul><li>messages are sent in a platform-neutral, standardized format (typically XML, but not necessarily) </li></ul></ul>W3C Web Services Architecture, 2004
    7. 7. What is it good for ... ? <ul><li>application integration </li></ul><ul><ul><li>intra-enterprise </li></ul></ul><ul><ul><li>inter-enterprise (business-to-business) </li></ul></ul><ul><li>application development </li></ul>
    8. 8. Enterprise Application Integration <ul><li>there are plenty of apps in a typical enterprise </li></ul><ul><li>there is a strong need for them to cooperate </li></ul><ul><ul><li>e.g. in order to automate business processes supported by more than one application </li></ul></ul><ul><li>main obstacle: apps developed independently , having different assumptions, data models, interfaces, platforms, etc. </li></ul>
    9. 9. An example – purchase order processing <ul><li>Input: purchase order </li></ul><ul><li>Validate customer ID and status </li></ul><ul><li>Check customer credit </li></ul><ul><li>Check inventory and package goods </li></ul><ul><li>Start the delivery </li></ul><ul><li>Prepare and send an invoice </li></ul><ul><li>Output: delivery started, invoice sent. </li></ul>
    10. 10. Systems involved <ul><li>Validate customer ID and status </li></ul><ul><ul><li>Customer Relation Management (CRM) </li></ul></ul><ul><li>Check customer credit </li></ul><ul><ul><li>Enterprise Resource Planning (ERP) </li></ul></ul><ul><li>Check inventory and package goods </li></ul><ul><ul><li>Inventory Management </li></ul></ul><ul><li>Start the delivery </li></ul><ul><ul><li>Delivery System (outsourced) </li></ul></ul><ul><li>Prepare and send an invoice </li></ul><ul><ul><li>Enterprise Resource Planning (ERP) </li></ul></ul>
    11. 13. SOA says to ... <ul><li>publish relevant application functionality as services </li></ul><ul><li>create composite (integrating) application(s) that call them </li></ul>
    12. 14. (Some) services involved <ul><li>Validate customer ID and status </li></ul><ul><ul><li>Customer Relation Management (CRM) </li></ul></ul><ul><ul><li> GetCustomerDetails </li></ul></ul><ul><li>Check customer credit </li></ul><ul><ul><li>Enterprise Resource Planning (ERP) </li></ul></ul><ul><ul><li> CheckCustomerCredit </li></ul></ul><ul><li>Check inventory and package goods </li></ul><ul><ul><li>Inventory Management </li></ul></ul><ul><ul><li> PackageGoods </li></ul></ul><ul><li>Start the delivery </li></ul><ul><ul><li>Delivery System </li></ul></ul><ul><ul><li> StartDelivery </li></ul></ul><ul><li>Prepare and send an invoice </li></ul><ul><ul><li>Enterprise Resource Planning (ERP) </li></ul></ul><ul><ul><li> BillCustomer </li></ul></ul>
    13. 15. Research in SOA / SOC <ul><li>IEEE International Conference on Web Services (ICWS) </li></ul><ul><li>IEEE International Conference on Services Computing (SCC) </li></ul><ul><li>International Conference on Service-Oriented Computing (ICSOC) </li></ul><ul><li>International World Wide Web Conference </li></ul><ul><li>IEEE Intl Enterprise Distributed Object Computing Conference </li></ul><ul><li>IEEE Digital Library </li></ul><ul><li>ACM Digital Library </li></ul><ul><li>The DBLP Computer Science Bibliography </li></ul><ul><li>service composition (esp. Semantics- and QoS- aware) </li></ul><ul><li>SOC Research Roadmap, 2006 </li></ul>
    14. 16. Today <ul><li>Service Oriented Architecture </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><li>Macro-Microflow Pattern </li></ul><ul><li>Sample scenario </li></ul>
    15. 17. Nice idea but ... <ul><li>the world is not so simple </li></ul><ul><li>not everyone speaks WSDL 2.0 / SOAP 1.2 </li></ul><ul><li>what about security ? </li></ul><ul><li>not everyone shares your data model </li></ul><ul><li>failures do occur </li></ul><ul><li>... </li></ul><ul><li>Communication IS hard. </li></ul>
    16. 18. E nterprise S ervice B us <ul><li>ESB provides an infrastructure for communication of </li></ul><ul><li>service provider and service consumers, namely: </li></ul><ul><li>communication using various transport protocols </li></ul><ul><ul><li>SOAP, HTTP(S), JMS , SMTP, file transfer, ... </li></ul></ul><ul><li>configurable message transformation and routing </li></ul><ul><li>service orchestration </li></ul><ul><ul><li>possibility t o define processes consisting of individual services </li></ul></ul><ul><ul><li>centralized or decentralized execution </li></ul></ul><ul><li>common run-time environment for (internal) services </li></ul><ul><li>common (centralized) management </li></ul><ul><ul><li>configuring, administration, monitoring, logging, ... </li></ul></ul>
    17. 19. Today <ul><li>Service Oriented Architecture </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><li>Macro-Microflow Patt ern </li></ul><ul><li>Sample s cenario </li></ul>
    18. 20. Business Owner View <ul><li>Validate customer ID and status </li></ul><ul><li>Check customer credit </li></ul><ul><li>Check inventory and package goods </li></ul><ul><li>Start the delivery </li></ul><ul><li>Prepare and send an invoice </li></ul>
    19. 21. IT Department View <ul><li>Customer Relation Management (CRM) </li></ul><ul><ul><li>packaged application, Windows, MS SQL Server </li></ul></ul><ul><ul><li>interface: HTTP , XML </li></ul></ul><ul><li>Enterprise Resource Planning (ERP) </li></ul><ul><ul><li>packaged application, Windows, Oracle, Java </li></ul></ul><ul><ul><li>interface: messaging, XML </li></ul></ul><ul><li>Enterprise Resource Planning (ERP) 2 </li></ul><ul><ul><li>custom built application, IBM OS/390, IMS </li></ul></ul><ul><ul><li>interface: exchanging files, fixed length records </li></ul></ul><ul><li>Inventory Management </li></ul><ul><ul><li>packaged application, Unix, Oracle </li></ul></ul><ul><ul><li>interface: HTTP, comma-separated values </li></ul></ul><ul><li>Delivery System </li></ul><ul><ul><li>external service </li></ul></ul><ul><ul><li>interface: Web Services (SOAP), XML </li></ul></ul>
    20. 22. Macro-Microflow Pattern – an approach to process-oriented SOA <ul><li>Macroflow Layer </li></ul><ul><ul><li>processes as seen by business owners/analysts </li></ul></ul><ul><ul><li>no (or little) technicalities </li></ul></ul><ul><ul><li>long running processes </li></ul></ul><ul><ul><li>utilizes Macroflow Integration Services </li></ul></ul><ul><li>Microflow Layer </li></ul><ul><ul><li>implements Macroflow Integration Services </li></ul></ul><ul><ul><li>using processes solving all the technical details </li></ul></ul><ul><ul><li>no (or little) business logic </li></ul></ul><ul><ul><li>short running processes </li></ul></ul><ul><ul><li>utilizes services of back-end applications </li></ul></ul>(Hentrich and Zdun, 2006)
    21. 23. Options custom code Option 0 custom code standard infrastructure (BPM) Option 3 standard infrastructure (ESB) standard infrastructure (BPM) Option 4 standard infrastructure (ESB) custom code Option 2 custom code custom code Option 1 Microflow Layer Macroflow Layer
    22. 24. Today <ul><li>Service Oriented Architecture </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><li>Macro-Microflow Pattern </li></ul><ul><li>Sample scenario </li></ul>
    23. 25. <ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li><Order> </li></ul><ul><li><OrderID> 10200341 </OrderID> </li></ul><ul><li><Customer> </li></ul><ul><li><CustomerID> 100347 </CustomerID> </li></ul><ul><li></Customer> </li></ul><ul><li><TotalPrice currency=“ EUR ”> 103.00 </TotalPrice> </li></ul><ul><li><Items> </li></ul><ul><li><Item> </li></ul><ul><li><ProductID> 491 </ProductID> </li></ul><ul><li><Quantity> 100 </Quantity> </li></ul><ul><li><UnitPrice currency=“ SKK ”> 1.03 </UnitPrice> </li></ul><ul><li></Item> </li></ul><ul><li>... </li></ul><ul><li></Items> </li></ul><ul><li><Shipping> </li></ul><ul><li><ShipTo> Astronomicko-geofyzik álne observatórium, </li></ul><ul><li>920 01 Modra </ShipTo> </li></ul><ul><li></Shipping> </li></ul><ul><li></Order> </li></ul>An Order
    24. 26. Service 1: GetCustomerDetails <ul><li>Input: HTTP POST to http://crmserver.acme.org/custinfo </li></ul><ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li><GetCustomerDetails> </li></ul><ul><li><ID> 100347 </ID> </li></ul><ul><li></GetCustomerDetails> </li></ul><ul><li>Output: HTTP data returned </li></ul><ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li><GetCustomerDetailsReply> </li></ul><ul><li><ID> 100347 </ID> </li></ul><ul><li><Type> CORP </Type> </li></ul><ul><li><Level> GOLD </Level> </li></ul><ul><li><Name> Fakulta matematiky, fyziky a informatiky UK </Name> </li></ul><ul><li><Address> Mlyn ská dolina, 84248 Bratislava </Address> </li></ul><ul><li>< Status > OK </Status> </li></ul><ul><li></GetCustomerDetailsReply> </li></ul>
    25. 27. HTTP document address (URL): http://server/do c ument HTTP
    26. 28. Hypertext Transfer Protocol (HTTP) Client request – get document /www/index.html HTTP 1.1: RFC 2616
    27. 29. M et hods
    28. 30. Return codes
    29. 31. Using HTTP for application communication <ul><li>method: GET; parameters in URL (limited size) </li></ul><ul><li>GET / getCustDetails ? id=100347 HTTP/1.1 </li></ul><ul><li>method: POST; parameters in message body </li></ul><ul><li>POST / getCustDetails HTTP/1.1 </li></ul><ul><li>Content-Type: text/xml </li></ul><ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li>< Customer > </li></ul><ul><li><ID>100347</ID> </li></ul><ul><li></ Customer > </li></ul>
    30. 32. Properties <ul><li>simple </li></ul><ul><li>rich existing infrastructure </li></ul><ul><ul><li>application servers </li></ul></ul><ul><ul><li>proxy servers and load balancers </li></ul></ul><ul><ul><li>standard security solution (HTTPS = HTTP + SSL/TLS) </li></ul></ul><ul><ul><li>monitoring tools, test clients, client libraries, ... </li></ul></ul><ul><li>almost no compatibility issues at the protocol level </li></ul><ul><li>synchronous mode </li></ul><ul><ul><li>both parties + network connection must be available </li></ul></ul><ul><ul><li>in order to be reliable the client must implement retry mechanisms </li></ul></ul><ul><ul><li>server should respond in “reasonable” time (max. minutes) </li></ul></ul>
    31. 33. Service 2 a : CheckCustomerCredit <ul><li>Input: message sent to topic ERP.General.Entry </li></ul><ul><li>(broker MgmtBroker) </li></ul><ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li>< CheckCustomerCredit > </li></ul><ul><li><Account> C-2004-10-997 </Account> </li></ul><ul><li><AmountEUR> 102.00 </AmountEUR> </li></ul><ul><li><Category> A </Category> </li></ul><ul><li></ CheckCustomerCredit > </li></ul><ul><li>Output: message recv’d from JMS Topic specified in “Reply-To” </li></ul><ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li><Credit> OK </Credit> </li></ul>
    32. 34. Messaging JMS flavor <ul><li>clients communicate through messaging broker(s) </li></ul><ul><li>a broker provide s message queues and topics </li></ul>
    33. 35. Queues <ul><li>a client sends a message into the queue </li></ul><ul><li>the message waits there until (another) client consumes it </li></ul><ul><li>there can be more consumers but every message is delivered to only one of them </li></ul><ul><li>also known as point-to-point mode of operation </li></ul>
    34. 36. Topics <ul><li>a client sends a message into the topic </li></ul><ul><li>the message is delivered to all clients that </li></ul><ul><ul><li>have subscribed themselves to that topic </li></ul></ul><ul><ul><li>are currently connected to broker (exception: durable subscriptions) </li></ul></ul><ul><li>also known as publish/subscribe mode of operation </li></ul>
    35. 37. Message <ul><li>A m essage consist s of: </li></ul><ul><li>header </li></ul><ul><li>properties </li></ul><ul><li>body </li></ul>
    36. 38. Message Header <ul><li>JMSDestination ( queue or topic name ) </li></ul><ul><li>JMSDeliveryMode (persistent, non- persistent) </li></ul><ul><li>JMSExpiration </li></ul><ul><li>JMSPriority </li></ul><ul><li>JMSMessageID </li></ul><ul><li>JMSTimestamp </li></ul><ul><li>JMSCorrelationID </li></ul><ul><li>JMSReplyTo </li></ul><ul><li>JMSType </li></ul><ul><li>JMSRedelivered </li></ul>black: can be set by sending client blue: set by JMS provider when delivering the message
    37. 39. Message Properties and Body <ul><li>Properties </li></ul><ul><li>contain client-defined (application specific) name- value pairs </li></ul><ul><li>Body </li></ul><ul><li>contains client-defined content of following types: </li></ul><ul><ul><li>TextMessage (plain text) </li></ul></ul><ul><ul><li>MapMessage (java Map object) </li></ul></ul><ul><ul><li>BytesMessage (stream of bytes) </li></ul></ul><ul><ul><li>StreamMessage (stream of primitive java types) </li></ul></ul><ul><ul><li>ObjectMessage (arbitrary java object) </li></ul></ul><ul><ul><li>Message (empty one) </li></ul></ul><ul><ul><li>XMLMessage (contains XML stored as text) </li></ul></ul><ul><ul><li>MultipartMessage (contains more independent parts) </li></ul></ul>blue: Sonic specific
    38. 40. Other processing options <ul><li>acknowledgments </li></ul><ul><ul><li>receipt of message has to be acknowledged, either: </li></ul></ul><ul><ul><ul><li>implicitly by the provider after client having read it, or: </li></ul></ul></ul><ul><ul><ul><li>explicitly by client by calling message.acknowledge() </li></ul></ul></ul><ul><ul><li>messages received but not acknowledged would be redelivered </li></ul></ul>
    39. 41. Other processing options <ul><li>transactions </li></ul><ul><ul><li>messages can be sent and received transactionally (i.e. in “all or none” mode); transactions are either </li></ul></ul><ul><ul><ul><li>local (operations on one JMS connection are transacted), or </li></ul></ul></ul><ul><ul><ul><li>distributed (operations on more JMS connections and on other resources are transacted) </li></ul></ul></ul>
    40. 42. Properties <ul><li>reliable </li></ul><ul><ul><li>acknowledgments, transactions </li></ul></ul><ul><li>synchronous or asynchronous </li></ul><ul><ul><li>the only component that has to be available is the broker (can be replicated) </li></ul></ul><ul><ul><li>need to correlate requests and replies </li></ul></ul><ul><li>suitable also for event notifications </li></ul><ul><ul><li>topics with durable subscriptions </li></ul></ul><ul><li>many implementations of the idea (of messaging) </li></ul><ul><ul><li>various APIs; Java Message Service API as a standard </li></ul></ul><ul><ul><li>JMS: portable, not interoperable </li></ul></ul>
    41. 43. Service 2 b : CheckCustomerCredit <ul><li>Input: file nnnnnn.req stored into specified directory </li></ul><ul><li>(server IBM01) </li></ul><ul><li>„ 100347 102.00 1“ </li></ul><ul><li>Output: file nnnnnn.resp retrieved from the same directory </li></ul><ul><li>„ OK“ </li></ul>
    42. 44. Service 3 : PackageGoods <ul><li>Input: HTTP POST to http:// inv .acme.org/ apps/package </li></ul><ul><li>OPEN;10200341;0;0 </li></ul><ul><li>ADD ;10200341;491;100 </li></ul><ul><li>ADD;10200341;30132;3 </li></ul><ul><li>ADD;10200341;43;20 </li></ul><ul><li>ADD;10200341;400;150 </li></ul><ul><li>... </li></ul><ul><li>CLOSE;10200341;0;0 </li></ul><ul><li>(header X-OperationType: atomic ) </li></ul><ul><li>Output: HTTP data returned </li></ul><ul><li>OK </li></ul><ul><li>or </li></ul><ul><li>OutOfStock (<list of product IDs>) </li></ul><ul><li>or </li></ul><ul><li>HTTP Status Code 4xx or 5xx </li></ul>
    43. 45. Service 4: StartDelivery <ul><li>Input: SOAP message sent to URL http://express.com/services </li></ul><ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li>< env: Envelope xmlns:env=„http://www.w3.org/2003/05/soap-envelope“ > </li></ul><ul><li><env:Body> </li></ul><ul><li><OrderDelivery> </li></ul><ul><li><ID> 1235471943:3381 </ID> </li></ul><ul><li><Customer>8991</Customer> </li></ul><ul><li><Package> 10200341 </Package> </li></ul><ul><li><From>...</From> </li></ul><ul><li><To>...</To> </li></ul><ul><li></OrderDelivery> </li></ul><ul><li></env:Body> </li></ul><ul><li></env:Envelope> </li></ul>
    44. 46. <ul><li>Output: SOAP response (via HTTP) </li></ul><ul><li><?xml version=“1.0” encoding=“UTF-8”?> </li></ul><ul><li>< env: Envelope xmlns:env=„http://www.w3.org/2003/05/soap-envelope“ > </li></ul><ul><li><env:Body> </li></ul><ul><li><OrderConfirmation> </li></ul><ul><li><ID> 1235471943:3381 </ID> </li></ul><ul><li><Status> CONFIRMED </Status> </li></ul><ul><li></OrderConfirmation> </li></ul><ul><li></env:Body> </li></ul><ul><li></env:Envelope> </li></ul>
    45. 47. SOAP <ul><li>flexible protocol for transfer of XML messages between applications </li></ul><ul><ul><li>application A (initial SOAP sender) sends message to application Z (ultimate SOAP receiver); message can go through applications B, C, D, ... (SOAP intermediaries) on the way </li></ul></ul><ul><li>independent of transport protocol </li></ul><ul><ul><li>usually HTTP(S), can be JMS, SMTP, ... </li></ul></ul><ul><li>message = header + body </li></ul>
    46. 48. SOAP (2) <ul><li>the header is typically used for control information for “advanced” services such as </li></ul><ul><ul><li>security (authentication, integrity, confidentiality) </li></ul></ul><ul><ul><li>transactions </li></ul></ul><ul><ul><li>reliable delivery </li></ul></ul><ul><ul><li>addressing </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>consists of header blocks </li></ul><ul><ul><li>generalized form of well-known headers of HTTP, RFC 822, ... </li></ul></ul><ul><ul><li>standard attributes: role, mustUnderstand, relay </li></ul></ul><ul><li>not defined by SOAP as such, but by various WS-* specs </li></ul><ul><li>the body is application-specific (except for faults) </li></ul>
    47. 49. XML Namespaces <ul><li>names of elements and attributes can be globally unique , if there is a namespace specified for them </li></ul><ul><li>examples : </li></ul><ul><li>< cat:PriceList xmlns:cat= “http:// warehouse .sk/ catalogue ” > </li></ul><ul><li>< cat:Item > ... </li></ul><ul><li>< PriceList xmlns= “http:// warehouse .sk/ catalogue ” > </li></ul><ul><li>< Item > ... </li></ul>
    48. 50. <ul><li>< env:Envelope xmlns:env=&quot;http://www.w3.org/2003/05/soap-envelope&quot; > </li></ul><ul><li>< env:Header > </li></ul><ul><li>< wsse:Security env: mustUnderstand=&quot;true&quot; xmlns:wsse=... > </li></ul><ul><li>< wsse:UsernameToken > </li></ul><ul><li>< wsse:Username > peter </wsse:Username > </li></ul><ul><li>< wsse:Password > secret ! </wsse:Password > </li></ul><ul><li></wsse:UsernameToken> </li></ul><ul><li></wsse:Security > </li></ul><ul><li>... </li></ul><ul><li>< /env:Header > </li></ul><ul><li>< env:Body > </li></ul><ul><li>< obj ednavka xmlns=&quot;http://obchod.sk/schemy&quot; > </li></ul><ul><li>< predmet > matice M8 </predmet> < mno zstvo > 20 kg </mno zstvo > </li></ul><ul><li></obj ednavka > </li></ul><ul><li></env:Body > </li></ul><ul><li>< /env:Envelope > </li></ul>SOAP (3) - an example < env:Envelope xmlns:env=&quot;http://www.w3.org/2003/05/soap-envelope&quot; > < env:Body > < obj ednavka xmlns=&quot;http://obchod.sk/schemy&quot; > < predmet > matice M8 </predmet> < mno zstvo > 20 kg </mno zstvo > </obj ednavka > </env:Body > < /env:Envelope > tags defined by SOAP tags defined by WS-Security tags defined by the application
    49. 51. SOAP (4) <ul><li>message exchange can be </li></ul><ul><ul><li>synchronous ( e.g. request and reply in one HTTP session) </li></ul></ul><ul><ul><li>asynchronous ( e.g. request and reply as separate HTTP sessions) </li></ul></ul><ul><ul><li>one-way </li></ul></ul><ul><ul><li>... </li></ul></ul>
    50. 52. Properties <ul><li>platform neutral, generally accepted </li></ul><ul><ul><li>rich programming support </li></ul></ul><ul><ul><li>though compatibility is not 100% ( as of today ) </li></ul></ul><ul><li>extensible </li></ul><ul><ul><li>though more advanced specifications are not so widespread as the basic protocol </li></ul></ul><ul><li>human-friendly (sometimes) </li></ul><ul><ul><li>due to the use of XML </li></ul></ul><ul><li>performance issues </li></ul><ul><ul><li>though alternative XML encodings are emerging </li></ul></ul>
    51. 53. References <ul><li>Hentrich, C., Zdun, U. (2006). Patterns for Process-Oriented Integration in Service-Oriented Architectures. EUROPLOP 2006. </li></ul><ul><li>Papazoglou, M., van den Heuvel, W.-J. (2007). Service oriented architectures: approaches, technologies and research issues. The VLDB Journal, 16, 389-415. </li></ul><ul><li>Sonic Software Corporation (2005). Sonic ESB: An architecture and lifecycle definition. http://www.sonicsoftware.com/products/whitepapers/docs/esb_architecture_definition.pdf </li></ul><ul><li>Booth, D., Haas, H., McCabe, F., Newcomer, E., Champion, M., Ferris, Ch., Orchard, D. (2004). Web Services Architecture. W3C Working Group Note. http://www.w3.org/TR/ws-arch/ </li></ul><ul><li>McKenzie, C. M., Laskey, K., McCabe, F., Brown, P. F., Metz, R. (2006). Reference Model for Service Oriented Architecture 1.0. OASIS. http://docs.oasis-open.org/soa-rm/v1.0/soa-rm.pdf </li></ul><ul><li>Papazoglou, M. P., Traverso, P., Dustdar, S., Leymann, F., & Krämer, B.J. (2006). Service-Oriented Computing Research Roadmap , In: Cubera, F., Krämer, B.J., Papazoglou, M.P. (eds.) Dagstuhl Seminar Proceedings 05462. Internationales Begegnungs-und Forschungszentrum für Informatik (IBFI), Schloss Dagstuhl, Germany. </li></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×