Web Services

63
Web Services Web Technology - 2ID60 26 November 2013 Katrien Verbert Natasha Stash George Fletcher

Transcript of Web Services

Page 1: Web Services

Web Services Web Technology - 2ID60 26 November 2013

Katrien Verbert Natasha Stash George Fletcher

Page 2: Web Services

Plan for today

•  Recap: Web fundamentals •  APIs, Web Services •  Restful services •  SOAP-based services •  Comparison •  Tutorial

•  JAX-WS: Building SOAP-based services in Java •  JAX-RS: Building RESTful services in Java

PAGE 4

Page 3: Web Services

Recap: Web Fundamentals

Key Architectural Components •  Identification: URI •  Interaction: HTTP •  Standardized Document Formats: HTML, XML, JSON, etc.

PAGE 5

Page 4: Web Services

URIs / resources

•  URIs identify interesting things •  documents on the Web •  relevant aspects of a data set

•  HTTP URIs name and address resources in Web based systems •  a URI names and identifies one resource •  a resource can have more than one name −  http://foo.com/software/latest −  http://foo.com/software/v1.4

PAGE 6

Page 5: Web Services

Resource representation

PAGE 7

Page 6: Web Services

Plan for today

•  Recap: Web fundamentals •  APIs, Web Services •  RESTful services •  SOAP-based services •  Comparison •  Tutorial

•  JAX-WS: Building SOAP-based services in Java •  JAX-RS: Building RESTful services in Java

PAGE 8

Page 7: Web Services

APIs

What is an API?

and

Why do we need APIs?

PAGE 9

Page 8: Web Services

(Web) APIs

•  Application Programming Interface

•  Specifies how software components communicate with each other •  e.g., Java API, 3rd party library APIs •  usually come with documentation

•  Web API: specify how applications communicate with other over the Web (HTTP, URI, XML, etc.)

PAGE 10

Page 9: Web Services

Web Services, Web Applications and APIs (Application Programming Interface)

•  Web Applications == Web Services == Web APIs ?

PAGE 11

Page 10: Web Services

Web Services, Web Applications and APIs (Application Programming Interface)

•  Web Applications are designed to be accessed by end users through Web client software

•  Web Services are intended to be used by other software applications

•  Web APIs ≈ Web Services

PAGE 12

Page 11: Web Services

Web Services

•  “Web Services” � “Web APIs” •  Build on the design principles and architectural

components of the Web •  Provide certain operations

•  Exchange structured data in standard formats (JSON, XML, etc.)

PAGE 13

Page 12: Web Services

Web Services

Example operations:

•  Publish image on Flickr •  Order a book at Amazon •  Post a message on your friend’s Facebook wall

PAGE 14

Page 13: Web Services

What Are Web Services?

PAGE 15

Page 14: Web Services

Example client application

http://ariadne.cs.kuleuven.be/alocom/alocom_plugin/alocom_plugin.swf

PAGE 16

Page 15: Web Services

PAGE 17

Page 16: Web Services

Disaggregation service

PAGE 18

Page 17: Web Services

What Are Web Services?

•  W3C definition: •  �A software system designed to support

interoperable machine-to-machine interaction over a network...�

PAGE 19

Page 18: Web Services

Web Services Use

•  Connect existing software •  Reusable application components

PAGE 20

Page 19: Web Services

Major classes of Web Services

•  Big Web Services (L. Richardson and S. Ruby) •  RESTful (REST-compliant) Web Services

PAGE 21

Page 20: Web Services

PAGE 22

Page 21: Web Services

PAGE 23

Page 22: Web Services

Overview

•  Introduction •  RESTful services •  SOAP-based services •  Comparison •  Tutorial

•  JAX-WS: Building SOAP-based services in Java •  JAX-RS: Building RESTful services in Java

PAGE 24

Page 23: Web Services

A RESTful Web service...

•  ... exposes its data and functionality through interlinked Web resources identified by URI.

•  ... is more data-centric, and less functionality-centric (as opposed to SOAP services).

•  ... embeds functionality of the service in the uniform HTTP interfaces for interaction: GET, PUT, DELETE, POST.

•  ... uses HTTP as the application protocol instead of SOAP

PAGE 25

Page 24: Web Services

Four basic design principles

•  Use HTTP methods explicitly. •  Be stateless. •  Expose directory structure-like URIs. •  Transfer XML, JavaScript Object Notation (JSON), or

both.

PAGE 26

Page 25: Web Services

Use HTTP methods explicitly

•  One-to-one mapping between •  create, read, update, and delete (CRUD) operations •  and HTTP methods.

•  According to this mapping: •  To create a resource on the server, use POST. •  To retrieve a resource, use GET. •  To change the state of a resource or to update it, use PUT. •  To remove or delete a resource, use DELETE.

PAGE 27

Page 26: Web Services

Example: HTTP GET request

GET /users/Robert HTTP/1.1 Host: myserver Accept: application/xml

PAGE 28

Page 27: Web Services

Example: HTTP PUT request

PUT /users/Robert HTTP/1.1 Host: myserver Content-Type: application/xml <?xml version="1.0"?>

<user> <name>Bob</name>

</user>

PAGE 29

Page 28: Web Services

Be stateless

PAGE 30

Stateful design

Stateless design

Page 29: Web Services

Expose directory structure-like URIs

http://www.myservice.org/discussion/topics/{topic} http://www.myservice.org/discussion/{year}/{day}/{month}/{topic} http://www.myservice.org/discussion/2008/12/10/{topic}

PAGE 31

Page 30: Web Services

Transfer XML, JSON, or both

<?xml version="1.0"?> <discussion date="{date}" topic="{topic}"> <comment>{comment}</comment> <replies>

<reply from="[email protected]" href="/discussion/topics/{topic}/joe"/> <reply from="[email protected]" href="/discussion/topics/{topic}/bob"/>

</replies> </discussion>

PAGE 32

Page 31: Web Services

Tools and frameworks

•  Ruby on Rails -- a framework for building RESTful Web applications – http://www.rubyonrails.org/

•  Restlet -- framework for mapping REST concepts to Java classes http://www.restlet.org

•  Django - framework for building RESTful Web applications in Python

•  JAX-RC specification (http://jsr311.java.net/) -provides a Java API for RESTful Web Services over the HTTP

•  RESTEasy (http://www.jboss.org/resteasy/) - Jboss project that provides various frameworks for building RESTful Web Services and RESTful Java applications.

PAGE 33

Page 32: Web Services

Overview

•  Introduction •  Restful services •  Big web services •  Comparison •  Tutorial

•  JAX-WS: Building SOAP-based services in Java •  JAX-RS: Building RESTful services in Java

PAGE 34

Page 33: Web Services

Big web services

•  SOAP (Simple Object Access Protocol) •  WSDL (Web Services Description Language) •  UDDI (Universal Description, Discovery, and

Integration)

PAGE 35

Page 34: Web Services

Roadmap

Service Requester

Service Broker (UDDI)

Service Provider

Find (SOAP)

Publish (WSDL)

Bind (SOAP)

PAGE 36

Page 35: Web Services

What is SOAP

•  SOAP used to stand for Simple Object Access Protocol •  SOAP is a communication protocol •  SOAP is designed to communicate via Internet •  SOAP is based on XML •  SOAP is simple and extensible •  SOAP is platform and language independent •  SOAP is a W3C standard

PAGE 37

Page 36: Web Services

SOAP Message Structure

SOAP Envelope

SOAP Header

SOAP Body

header block

<?xml version='1.0' ?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header> ... </env:Header> <env:Body> ... <env:Fault> ... </env:Fault> </env:Body> </env:Envelope>

body block

PAGE 38

Page 37: Web Services

SOAP Example: RPC-Style Request Message <?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Body> <ts:getPrice xmlns:ts="http://travelagency.example.org/wsdl/trips" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding"> <ts:departing>Amsterdam (Schiphol)</ts:departing> <ts:arriving>Saint-Petersburg (Pulkovo)</ts:arriving> <ts:departureDate>01-05-2010</ts:departureDate> <ts:/getPrice> </env:Body> </env:Envelope>

Request

<?xml version='1.0' ?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">

<env:Body> <ts:getPriceResponse xmlns:ts="http://travelagency.example.org/wsdl/trips" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding" > <ts:price>180.00</ts:price> </ts:getPriceResponse> </env:Body> </env:Envelope>

Response

PAGE 39

Page 38: Web Services

SOAP HTTP Binding: SOAP HTTP Post Usage

POST /pricesService/getPrice HTTP/1.1 Host: http://travelagency.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Body> <ts:getPrice xmlns:ts="http://travelagency.example.org/wsdl/trips"> <ts:departing>Amsterdam (Schiphol)</ts:departing> <ts:arriving>Saint-Petersburg (Pulkovo)</ts:arriving> <ts:departureDate>21-04-2010</ts:departureDate> <ts:/getPrice> </env:Body> </env:Envelope>

PAGE 40

Page 39: Web Services

SOAP HTTP Binding: SOAP Response

HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Body> <ts:getPriceResponse xmlns:ts="http://travelagency.example.org/wsdl/trips"> <ts:price>180.00</ts:price> </ts:getPriceResponse> </env:Body> </env:Envelope>

PAGE 41

Page 40: Web Services

Roadmap

Service Requester

Service Broker (UDDI)

Service Provider

Find (SOAP)

Publish (WSDL)

Bind (SOAP)

PAGE 42

Page 41: Web Services

What is WSDL

•  WSDL stands for Web Services Description Language •  WSDL is used to describe and locate Web Services •  WSDL is based on XML •  WSDL is a W3C standard

PAGE 43

Page 42: Web Services

WSDL

•  Describes three fundamental properties •  What a service does

•  Operations (methods) provided by the service •  How a service is accessed

•  Data format and protocol details •  Where a service is located

•  Address (URL) details

PAGE 44

Page 43: Web Services

WSDL Document Structure

Main structure of WSDL document <definitions targerNamespace=�...�> <types>definition of types...</types> <message>definition of a message...</message> <portType>definition of a port</portType> <binding>definition of a binding...</binding> <service> <port>...</port> </service> </definitions>

WSDL Specification

abstract part

concrete part

types

messages

operations

port types

bindings

service

port

PAGE 45

Page 44: Web Services

WSDL Document Example: Abstract Part

<message name="itineraryMsg"> <part name="departing" type="xs:string"/> <part name="arriving" type="xs:string"/> <part name="departureDate" type="xs:date"/> </message> <message name="itineraryRespMsg"> <part name="price" type="xs:string"/> </message> <portType name="pricesPT"> <operation name="getPrice"> <input message="itineraryMsg"/> <output message="itineraryRespMsg"/> </operation> </portType> PAGE 46

Page 45: Web Services

Operation Types

Type Definition

One-way The operation can receive a message but will not return a response

Request-response

The operation can receive a request and will return a response

Solicit-response The operation can send a request and will wait for a response

Notification The operation can send a message but will not wait for a response

PAGE 47

Page 46: Web Services

Example: One-Way Operation

<message name="newPrices"> <part name="departing" type="xs:string"/> <part name="arriving" type="xs:string"/> <part name="departureDate" type="xs:date"/> <part name="price" type="xs:string"/> </message> <portType name="pricesPT"> ... <operation name="setPrice"> <input message="newPrices"/> </operation> </portType >

PAGE 48

Page 47: Web Services

WSDL Document Example: Concrete Part

<service name="pricesService"> <port name="getPriceRPCPort" binding="ts:b1"> <soap:address location="http://travelagency.example.org/pricesService"> </port> </service>

xmlns:ts='http://travelagency.example.org/wsdl/trips'

PAGE 49

Page 48: Web Services

Roadmap

Service Requester

Service Broker (UDDI)

Service Provider

Find (SOAP)

Publish (WSDL)

Bind (SOAP)

PAGE 50

Page 49: Web Services

What is UDDI

•  UDDI stands for Universal Description, Discovery and Integration •  UDDI a standard for publishing and discovering Web services •  UDDI is a specification for a distributed registry of Web services •  UDDI is built upon standards such as HTTP, XML, XML Schema,

SOAP, WSDL •  UDDI can communicate via SOAP, CORBA, Java RMI Protocol •  UDDI uses WSDL to describe interfaces to Web Services

PAGE 51

Page 50: Web Services

Ways to Use UDDI Registry

•  White pages –  name, address, contact person, Web site •  Yellow pages –  types of business, locations, products, services,

categorizations •  Green pages –  technical information about business services, pointers

to WSDL descriptions of the services

PAGE 52

Page 51: Web Services

UDDI Data Model: UDDI Core Data Types

Example: http://www.tutorialspoint.com/uddi/uddi_data_model.htm PAGE 53

Page 52: Web Services

UDDI Data Model: tModel example

<?xml version="1.0"?> <tModel tModelKey="”>

<name>http://www.getquote.com/StockQuoteService-interface</name> <description xml:lang="en">…</description> <overviewDoc>

<description xml:lang="en”>WSDL Service Interface Document </description> <overviewURL> http://www.getquote.com/services/SQSinterface.wsdl#SingleSymbolBinding </overviewURL> </overviewDoc> <categoryBag> <keyedReference tModelKey="UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4” keyName="uddi-org:types" keyValue="wsdlSpec"/> <keyedReference tModelKey="UUID:DB77450D-9FA8-45D4-A7BC-04411D14E384” keyName="Stock market trading services” keyValue="84121801"/>

</categoryBag> </tModel>

PAGE 54

Page 53: Web Services

UDDI: Programmatic Interfaces

•  UDDI Inquiry Interface: –  find_business, find_service, find_tModel, find_binding,

find_relatedBusiness –  get_businessDetail, get_serviceDetail, get_bindingDetail,

get_tModelDetail •  UDDI Publisher Interface: –  save_business, save_service, save_binding,

save_tModel –  delete_business, delete_service, delete_binding,

delete_tModel –  ...!

PAGE 55

Page 54: Web Services

Big Web Services Examples

•  http://www.xmethods.com •  http://www.programmableweb.com/

PAGE 56

Page 55: Web Services

Web services enable

1.  data exchange between various applications and different platforms 2.  to resolve interoperability issues 3.  applications to function between two different operating systems server 4.  all of the above

PAGE 57

Page 56: Web Services

Which of the following is used to locate and describe web services?

1.  SOAP 2.  Web page 3.  WSDL 4.  UDDI

PAGE 58

Page 57: Web Services

Overview

•  Introduction •  Restful services •  SOAP-based services •  Comparison •  Tutorial

•  JAX-WS: Building SOAP-based services in Java •  JAX-RS: Building RESTful services in Java

PAGE 59

Page 58: Web Services

Big Web Service Operations vs RESTful Web Service URIs

Big WS operations

RESTful WS URIs

getAllUsers() http://example.com/users/ "

getUserById(String id) http://example.com/users/id/{user-id}

getUserByName(…), addUser(…) removeUser(…), updateUser(…)

http://example.com/users/name/{user-name}

PAGE 60

Page 59: Web Services

Big Web Services versus REST

•  A SOAP service has a single endpoint •  that handles all the operations •  therefore it has to have an application-specific

interface.

•  A RESTful service has a number of resources •  so the operations can be distributed onto the resources •  and mapped to a small uniform set of operations.

PAGE 61

Page 60: Web Services

Comparison: Big Web Services vs RESTful Web Services

•  Big Web Services pros: –  protocol transparency and independence –  existence of tools to hide the complexity –  security

•  Big Web Services cons: –  rudimentary processing protocol –  complexity –  heavyweight architecture –  do not get the benefits of resource-oriented services –  opaqueness

PAGE 62

Page 61: Web Services

Comparison: Big Web Services vs RESTful Web Services

•  RESTful Web Services pros: –  simplicity –  lightweight infrastructure –  addressability –  uniform interface –  scalability of stateless RESTful Web Service –  improved performance using JSON

•  RESTful Web Services cons: –  bound to one protocol: HTTP –  only POST and GET can be used in XHTML form –  dealing with large input data - �malformed� URI –  security issues

PAGE 63

Page 62: Web Services

Sources

•  Cesare Pautasso,Olaf Zimmermann,Frank Leymann (2008) RESTful Web Services vs. Big Web Services: Making the Right Architectural Decision. Proc. of the 17th International World Wide Web Conference (WWW2008), Bejing, China, April 2008.

•  Alex Rodriguez. (2008). RESTful Web services: The basics. Available at: http://www.ibm.com/developerworks/webservices/library/ws-restful/

•  Cesare Pautasso and Erik Wilde. Design Principles, Patterns and Emerging Technologies for RESTful Web Services. http://dret.net/netdret/docs/rest-icwe2010/

•  Bernhard Hasl. RESTful web service APIshttp://courses2.cit.cornell.edu/info4302_2012fa/lectures/week7/INFO_CS4302_Lecture12.pdf

PAGE 64