1 / 65

Service-Oriented Programming

Service-Oriented Programming. Introduction to service-oriented programming. Aims. You should able to: Articulate the motivation behind service-oriented programming Understand the concept of web services Understand the service-oriented architecture and web service standards

delano
Download Presentation

Service-Oriented Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Service-Oriented Programming Introduction to service-oriented programming

  2. Aims • You should able to: • Articulate the motivation behind service-oriented programming • Understand the concept of web services • Understand the service-oriented architecture and web service standards • Build a web services using C# or Java • Develop an application that uses a public web services

  3. Motivation: What does service-orientation mean? • What do we do when we have a complex problem? • We decompose it into sub problems (i.e., abstraction). • Object-Orientation defines an abstraction on the level of objects. • It allows to model, develop, and use software components as objects. • Service-Orientation defines an abstraction on the level of services. • It allows to model, develop, and use software systems as services.

  4. The evolution of Programming Abstractions Figure: Evolution of Programming Abstractions (1) (1) Dr. Marcello La Rosa, QUT, Introduction to Web Services

  5. What is Service-Oriented Programming (SOP)? • SOP is a programming paradigm that uses “services” as the building block to develop software applications. • Develop services. • Invoke services. • Combine services • Kernel component: Web Services

  6. What is a Web Service? • Naïve answer: a service on the Web… • Different from a web application: • A web application is consumed by humans • Such as http://www.weather.com • A web service is consumed by programs • Such as Twitter APIs https://dev.twitter.com/docs/api/1

  7. What is a Web Service? (2) • W3C (World Wide Web Consortium) definition: • A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specially WSDL (web service description language)). Other systems interact with the Web service in a manner prescribed by its description using SOAP (simple object access protocol)messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.

  8. What is new in web services? • Global accessibility: • A web service is available on the Web • It leverages the powerful communication paradigm of the web • It is accessible via HTTP (cross firewall) • Standardization: • WSDL: for service description (www.w3.org/TR/wsdl) • UDDI (Universal Description, Discovery and Integration): for service publish and discovery (http://uddi.xml.org/) • SOAP: for service invocation (www.w3.org/TR/SOAP/) • More standards… • They are XML-based…

  9. More about web services • A Web service can be: • A self-containedbusiness task • E.g., a funds withdrawal or funds deposit service • self-contained means it does not need other resources • business task is a simple step • A full-fledged business process • E.g., the automated purchasing of office suppliers • business process consists of several steps, or business tasks • An application • E.g., a life insurance application • A service-enabled resource • E.g., access to a particular back-end database containing patient medical records

  10. What web service brings to SOP? • Foster software reuse • Deal with heterogeneity issues: • Using the same data types? • Using the same programming languages? • Using the same development platform? • Using the same operating systems? • Solution: provide XML-based Interfaces • XML is ubiquitous • traditional oop needs those items with ?

  11. What web service brings to SOP? (2) • Deal with the accessibility issues: • Downloading libraries and including in the project? • Solution: access to functionalities on the web • Use existing networking infrastructure • HTTP is ubiquitous • traditional oop needs that

  12. SOP as a new problem-solving methodology • Instead of develop an application to solve a complex problem from scratch, use the existing services: • decompose the problem to sub problems, • for each sub problem, select/or develop appropriate services, • compose these services together.

  13. Current stage of SOP • Major IT companies have led the efforts • Microsoft, IBM, HP, Oracle, BEA, Sun, SAP… • A large number of web services online • Major IT companies deliver their functionalities as web services • Microsoft, Yahoo!, Google, Facebook, Twitter, Bing, Amazon, … you name it • there are 5814 Web services and 6610 mashups (SOP applications) published in programmableWeb. • Other search engines • http://www.webservicelist.com/ • http://www.biocatalogue.org/ …… • The Web is taking a step to transform from an information repository to a service repository

  14. Web service commercial frameworks • Microsoft: • http://msdn.microsoft.com/en-us/library/dd456779.aspx • IBM: • http://www-01.ibm.com/software/solutions/soa/ • Oracle: • http://www.oracle.com/us/products/middleware/soa/overview/index.html • Hewlett Packard • http://h71028.www7.hp.com/enterprise/w1/en/technologies/soa-overview.html

  15. An Example of SOP Applications: • Suppose we want to develop a web-based hotel query application that allows users to view the information of hotels. Given a location • Input: address • Output: a list of hotels, local weather, driving directions.

  16. ASOP Example (2) • The process of developing this application contains the following steps: • Develop a hotel service: • Input: address • Output: a list of hotels • Develop a weather service: • Input: address • Output: local weather • Develop a route service: • Input: two addresses • Output: Driving directions • It is not trivial to develop any of the above services, so, let’s take a look at existing services on the web…

  17. Hotel Service: • Expedia APIs: • http://developer.ean.com/docs/read/hotels/Version_3 • Input: city, state • Output: the list of hotels (in Jason format) • name, average daily price, a short description • Demo. • http://vhost3.cs.rit.edu/Application/

  18. Weather Service: • Weather underground weather API • http://www.wunderground.com/weather/api/d/docs • Input: Geocode • Output: current weather condition • weather, humidity, temperature, wind mph,… • Demo. • http://vhost3.cs.rit.edu/Application/

  19. Route Service • The Google directions API • https://developers.google.com/maps/documentation/directions/ • Input: origin, destination • Output: Driving direction • duration, instructions, distances,… • Demo • http://vhost3.cs.rit.edu/Application/

  20. UDDI Registry UDDI Publication UDDI Inquiry SOAP WSDL Behind SOP: Service-Oriented Architecture(SOA) Service Registry Publish Find Web Browser Service Provider Service Consumer defines message has Web Service exchange Service Description Web Service

  21. Service-Oriented Architecture(SOA) • Roles of interaction • Web services provider • Owns the Web service and implements the business logic • Hosts and controls access to the service • e.g., Microsoft, Amazon, Facebook, … • Web services requestor • Requires the certain functions to be satisfied • Looks for and invokes the service • e.g., a client program, a server, or another web service • Web services registry • Searchable directory where service descriptions can be published and searched • e.g., UDDI registry

  22. Operations in SOA • Publish operation • Describing the Web service itself • Business information: information regarding the Web service provider or the implementer of the service • Service information: information about the nature of the Web service • Technical information: information about implementation details and the invocation methods for the Web service • Actual registration of the Web service • Storing the three basic categories of descriptive information about a service in the Web service registry

  23. Operations in SOA (2) • Find operation • Discovering the services in the registry of the discovery agency • Search criteria: type of service, preferred price range, products associated with the service, company category • Can be specified • Statically at the design time to retrieve a service’s interface description for program development or • Dynamically (at run-time) to retrieve a service’s binding and location description for invocation. • Selecting the desired Web service from the search result • Manual selection • Automatic selection

  24. Operations in SOA (3) • Bind operation • Service requestor invokes or initiates an interaction at run-time using the binding details in the service description to locate and contract to the service. • Two possibilities: • Direct invocation of the Web service by the Web service requestor • Mediation by the service agency when invoking the Web service

  25. Service-Oriented Programming Web service standards and technologies: XML, WSDL, SOAP, REST.

  26. XML • XML: eXtensible Markup Language • It is the universal format for structured documents and data on the Web • It is the common data format of Web services • It is a semi-structured data model

  27. XML: Key concepts • Document • Elements • Attributes • Text • Others: namespace declarations, comments, processing instructions, …

  28. Elements • Enclosed in Tags: • book, title, author, … • Start tag: <book> End tag: </book> • Empty element <red></red> OR <red/> • Elements are ordered, may be repeated or nested

  29. Basic XML Tag Syntax • Tags written as with HTML, but … • Case-sensitive names • Always need end tags • Special empty-element • Always quote attribute values • Some other constraints for tags • Start with a letter or underscore • After 1st character, numbers, -, and . are allowed • Cannot contain white-spaces.

  30. Attributes • Associated to Elements, … • <book price=“20”> • Attributes are unordered. • Attribute names must be unique. • Attributes cannot be nested (good for atomic value)

  31. Attributes Attributes provide metadata for the element The value of each attribute must be enclosed in “ ” If an element contains several attributes, then there is no comma in between Same naming conventions as elements

  32. Example: <book price = “95” currency = “USD”> <title> Database System Concepts, 5th Ed</title> <author> Silberschatz </author> … <year> 2006 </year> </book>

  33. WSDL • WSDL: Web Service Description Language • Pronounced “Whiz Dull” • XML-based • Why we need WSDL for web services? • Web services are designed to support machine-to-machine interaction • No human in the loop • Needs a specified and self-explanatory programming interface

  34. What is included in a WSDL file?(1) • WSDL describes a service’s functionality • A service interface: • a list of operations that can be invoked by service users, such as getRoute, getMap,… • for each operation • a list of input parameters whose values need to be provided by service users, such as zipcode, address, … • a list of output parameters whose value will be returned to service users, such as directions, map image, … • By parsing a WSDL file, a program can: • determine if the service is suitable, • how to format the request, • how to handle the response.

  35. What is included in a WSDL file?(2) • WSDL describes how to bind a service • Messaging style • Formatting (encoding) style • Transport protocol: • such as http, smtp, soap • WSDL describes where to locate a web service • a set of ports • A port defines the location of a web service, e.g., network address location or URL • By parsing a WSDL file, a program can: • Locate and bind a web service

  36. WSDL document content • Abstract (interface) definitions • <types> data type definitions • <message> operation parameters • <operation> abstract description of service actions • <portType> set of operation definitions • Concrete (implementation) definitions • <binding> operation bindings • <port> association of an endpoint with a binding • <service> location/address for each binding

  37. Example: • http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl

  38. SOAP (Simple Object Access Protocol) • It is the standard messaging protocol used by web services. • It supports inter application communication.

  39. Service provider Service requestor Application object (service provider) Application object (client) SOAP-based middleware SOAP-based middleware SOAP messages exchanged on top of, HTTP, SMTP, or other transport Converts procedure calls to/from XML messages sent through HTTP or other protocols. SOAP (2) • It codifies the use of XML as an encoding scheme for request and responses parameters using HTTP as a means for transport.

  40. SOAP envelope SOAP header header block body block SOAP body SOAP Message • SOAP messages are seen as enveloper where the application encloses the data to be sent. • A SOAP message consists of an <Envelope> element containing an optional <Header> and a mandatory <Body> element.

  41. SOAP header • Contains several header blocks • Contains information relevant to: • Security, QoS values, transaction • Example: <env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope” > … <env:Header> <tx:transaction-id xmlns:tx=”http://www.transaction.com/transaction” env:mustUnderstand=”true”> 512 </tx:transaction-id> <notary:tokenxmlns:notary=”http://www.notarization-services.com/token” env:mustUnderstand=”true”> GRAAL-5YF3 </notary:token> </env:Header> …………… </env:Envelope>

  42. SOAP Body • The SOAP body is the area of the SOAP message, where the application specific XML data (payload) being exchanged in the message is placed. • The <Body> element must be present and is an immediate child of the envelope. It may contain a number of child elements, called body entries, but it may also be empty. The <Body> element contains either of the following: • Application-specific data is the information that is exchanged with a Web service. The SOAP <Body> is where the method call information and its related arguments are encoded. It is where the response to a method call is placed, and where error information can be stored. • A fault message is used only when an error occurs. • A SOAP message may carry either application-specific data or a fault, but not both.

  43. SOAP Body (Example) <?xml version='1.0' ?> <env:Envelopexmlns:env="http://www.w3.org/2002/06/soap-envelope" > <env:Header> <t:transactionID xmlns:t="http://intermediary.example.com/procurement" env:role="http://www.w3.org/2002/06/soap-envelope/role/next" env:mustUnderstand="true" > 57539 </t:transactionID> </env:Header> <env:Body> <m:orderGoods env:encodingStyle="http://www.w3.org/2002/06/soap-encoding" xmlns:m="http://example.com/procurement"> <m:productItem> <name>ACME Softener</name> </m:productItem> <m:quantity> 35 </m:quantity> </m:orderGoods> </env:Body> </env:Envelope> Envelope Header Blocks Body

  44. Example of SOAP Request <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/”> <SOAP-ENV:Header> <t:transId xmlns:t=“http://a.com/trans”>345</t:transId> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:Add xmlns:m=“http://a.com/Calculator”> <n1>3</n1> <n2>4</n2> </m:Add> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

  45. Example of SOAP Response <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/”> <SOAP-ENV:Header> <t:transId xmlns:t=“http://a.com/trans”>345</t:transId> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:AddResponsexmlns:m=“http://a.com/Calculator”> <result>7</result> </m:AddResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

  46. More example: • Sample SOAP Request and Response Message for Google's Web Service Interface (illustration purpose only) • http://www.w3.org/2004/06/03-google-soap-wsdl.html

  47. The SOAP Communication Model • SOAP supports two possible communication styles: • remote procedure call (RPC) and • document (or message). RPC-style interaction Document-style interaction

  48. SOAP envelope SOAP envelope SOAP body SOAP body Method name orderGoods Method return Input parameter 1 product item Return value order id Input parameter 2 quantity RPC-style SOAP Services • A remote procedure call (RPC)-style Web service appears as a remote object to a client application. The interaction between a client and an RPC-style Web service centers around a service-specific interface. Clients express their request as a method call with a set of arguments, which returns a response containing a return value.

  49. RPC-style web services <env:Envelope xmlns:SOAP=“http://www.w3.org/2003/05/soap-envelope” xmlns:m="http://www.plastics_supply.com/product-prices"> <env:Header> <tx:Transaction-id xmlns:t=”http://www.transaction.com/transactions” env:mustUnderstand='1'> 512 </tx:Transaction-id> </env:Header> <env:Body> <m:GetProductPrice> <product-id> 450R6OP </product-id > </m:GetProductPrice > </env:Body> </env:Envelope> Example of RPC-style SOAP body <env:Envelope xmlns:SOAP=“http://www.w3.org/2003/05/soap-envelope” xmlns:m="http://www.plastics_supply.com/product-prices"> <env:Header> <--! – Optional context information --> </env:Header> <env:Body> <m:GetProductPriceResponse> <product-price> 134.32 </product-price> </m:GetProductPriceResponse> </env:Body> </env:Envelope> Example of RPC-style SOAP response message

  50. In the document-style of messaging, the SOAP <Body> contains an XML document fragment. The <Body> element reflects no explicit XML structure. The SOAP run-time environment accepts the SOAP <Body> element as it stands and hands it over to the application it is destined for, unchanged. There may or may not be a response associated with this message. SOAP envelope SOAP envelope SOAP body SOAP body • Acknowledgement • document • order id • PurchaseOrder • document • product item • quantity Document (Message)-style SOAP Services

More Related