Web Services
Web Technology - 2ID60
26 November 2013
Katrien Verbert
Natasha Stash
George Fletcher
Plan for today
• 
• 
• 
• 
• 
• 

Recap: Web fundamentals
APIs, Web Services
Restful services
SOAP-based services
Comparis...
Recap: Web Fundamentals
Key Architectural Components
•  Identification: URI
•  Interaction: HTTP
•  Standardized Document ...
URIs / resources
•  URIs identify interesting things
•  documents on the Web
•  relevant aspects of a data set

•  HTTP UR...
Resource representation

PAGE 7
Plan for today
• 
• 
• 
• 
• 
• 

Recap: Web fundamentals
APIs, Web Services
RESTful services
SOAP-based services
Comparis...
APIs
What is an API?
and
Why do we need APIs?

PAGE 9
(Web) APIs
•  Application Programming Interface
•  Specifies how software components communicate
with each other
•  e.g., ...
Web Services, Web Applications and
APIs (Application Programming Interface)
•  Web Applications == Web Services == Web API...
Web Services, Web Applications and
APIs (Application Programming Interface)
•  Web Applications are designed to be accesse...
Web Services
•  “Web Services”

“Web APIs”

•  Build on the design principles and architectural
components of the Web
•  P...
Web Services

Example operations:
•  Publish image on Flickr
•  Order a book at Amazon
•  Post a message on your friend’s ...
What Are Web Services?

PAGE 15
Example client application

http://ariadne.cs.kuleuven.be/alocom/alocom_plugin/alocom_plugin.swf
PAGE 16
PAGE 17
Disaggregation service

PAGE 18
What Are Web Services?
•  W3C definition:
•  A software system designed to support
interoperable machine-to-machine intera...
Web Services Use
•  Connect existing software
•  Reusable application components

PAGE 20
Major classes of Web Services
•  Big Web Services (L. Richardson and S. Ruby)
•  RESTful (REST-compliant) Web Services

PA...
PAGE 22
PAGE 23
Overview
• 
• 
• 
• 
• 

Introduction
RESTful services
SOAP-based services
Comparison
Tutorial
•  JAX-WS: Building SOAP-ba...
A RESTful Web service...
•  ... exposes its data and functionality through
interlinked Web resources identified by URI.
• ...
Four basic design principles
• 
• 
• 
• 

Use HTTP methods explicitly.
Be stateless.
Expose directory structure-like URIs....
Use HTTP methods explicitly
•  One-to-one mapping between
•  create, read, update, and delete (CRUD) operations
•  and HTT...
Example: HTTP GET request
GET /users/Robert HTTP/1.1
Host: myserver
Accept: application/xml

PAGE 28
Example: HTTP PUT request
PUT /users/Robert HTTP/1.1
Host: myserver
Content-Type: application/xml
<?xml version="1.0"?>
<u...
Be stateless
Stateful design

Stateless design

PAGE 30
Expose directory structure-like URIs
http://www.myservice.org/discussion/topics/{topic}
http://www.myservice.org/discussio...
Transfer XML, JSON, or both
<?xml version="1.0"?>
<discussion date="{date}" topic="{topic}">
<comment>{comment}</comment>
...
Tools and frameworks
•  Ruby on Rails -- a framework for building RESTful Web
applications – http://www.rubyonrails.org/
•...
Overview
• 
• 
• 
• 
• 

Introduction
Restful services
Big web services
Comparison
Tutorial
•  JAX-WS: Building SOAP-based...
Big web services
•  SOAP (Simple Object Access Protocol)
•  WSDL (Web Services Description Language)
•  UDDI (Universal De...
Roadmap
Service
Broker
(UDDI)

Find
(SOAP)

Service
Requester

Publish
(WSDL)

Bind
(SOAP)

Service
Provider

PAGE 36
What is SOAP
• 
• 
• 
• 
• 
• 
• 

SOAP used to stand for Simple Object Access Protocol
SOAP is a communication protocol
S...
SOAP Message Structure

SOAP Envelope
SOAP Header
header block
SOAP Body
body block

<?xml version='1.0' ?><env:Envelope
x...
SOAP Example: RPC-Style Request Message
<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-env...
SOAP HTTP Binding:
SOAP HTTP Post Usage
POST /pricesService/getPrice HTTP/1.1
Host: http://travelagency.example.org
Conten...
SOAP HTTP Binding:
SOAP Response
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?x...
Roadmap
Service
Broker
(UDDI)

Find
(SOAP)

Service
Requester

Publish
(WSDL)

Bind
(SOAP)

Service
Provider

PAGE 42
What is WSDL
• 
• 
• 
• 

WSDL stands for Web Services Description Language
WSDL is used to describe and locate Web Servic...
WSDL
•  Describes three fundamental properties
•  What a service does

• 

• 

How a service is accessed

• 

• 

Operatio...
WSDL Document Structure
WSDL Specification
abstract part
types
messages
operations

Main structure of WSDL document
<defin...
WSDL Document Example:
Abstract Part
<message name="itineraryMsg">
<part name="departing" type="xs:string"/>
<part name="a...
Operation Types
Type

Definition

One-way

The operation can receive a message but will not return
a response

Requestresp...
Example: One-Way Operation
<message name="newPrices">
<part name="departing" type="xs:string"/>
<part name="arriving" type...
WSDL Document Example:
Concrete Part
<service name="pricesService">
<port name="getPriceRPCPort" binding="ts:b1">
<soap:ad...
Roadmap
Service
Broker
(UDDI)

Find
(SOAP)

Service
Requester

Publish
(WSDL)

Bind
(SOAP)

Service
Provider

PAGE 50
What is UDDI
•  UDDI stands for Universal Description, Discovery and Integration
•  UDDI a standard for publishing and dis...
Ways to Use UDDI Registry
•  White pages
–  name, address, contact person, Web site

•  Yellow pages
–  types of business,...
UDDI Data Model:
UDDI Core Data Types

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

PAGE 53
UDDI Data Model:
tModel example
<?xml version="1.0"?>
<tModel tModelKey="”>
<name>http://www.getquote.com/StockQuoteServic...
UDDI: Programmatic Interfaces
•  UDDI Inquiry Interface:
–  find_business, find_service, find_tModel, find_binding,
find_r...
Big Web Services Examples
•  http://www.xmethods.com
•  http://www.programmableweb.com/

PAGE 56
Web services enable
1. 
2. 
3. 
4. 

data exchange between various applications and different platforms
to resolve interop...
Which of the following is used to locate
and describe web services?
1. 
2. 
3. 
4. 

SOAP
Web page
WSDL
UDDI

PAGE 58
Overview
• 
• 
• 
• 
• 

Introduction
Restful services
SOAP-based services
Comparison
Tutorial
•  JAX-WS: Building SOAP-ba...
Big Web Service Operations vs
RESTful Web Service URIs
Big WS operations

RESTful WS URIs

getAllUsers()

http://example.c...
Big Web Services versus REST

•  A SOAP service has a single endpoint
•  that handles all the operations
•  therefore it h...
Comparison:
Big Web Services vs RESTful Web Services
•  Big Web Services pros:
–  protocol transparency and independence
–...
Comparison:
Big Web Services vs RESTful Web Services
•  RESTful Web Services pros:
– 
– 
– 
– 
– 
– 

simplicity
lightweig...
Sources
•  Cesare Pautasso,Olaf Zimmermann,Frank Leymann (2008)
RESTful Web Services vs. Big Web Services: Making the Righ...
k.verbert@tue.nl
n.v.stash@tue.nl
g.h.l.fletcher@tue.nl

PAGE 65
Upcoming SlideShare
Loading in...5
×

Web Services

2,430

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
2,430
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
90
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Web Services

  1. 1. Web Services Web Technology - 2ID60 26 November 2013 Katrien Verbert Natasha Stash George Fletcher
  2. 2. 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
  3. 3. Recap: Web Fundamentals Key Architectural Components •  Identification: URI •  Interaction: HTTP •  Standardized Document Formats: HTML, XML, JSON, etc. PAGE 5
  4. 4. 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
  5. 5. Resource representation PAGE 7
  6. 6. 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
  7. 7. APIs What is an API? and Why do we need APIs? PAGE 9
  8. 8. (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
  9. 9. Web Services, Web Applications and APIs (Application Programming Interface) •  Web Applications == Web Services == Web APIs ? PAGE 11
  10. 10. 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
  11. 11. 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
  12. 12. Web Services Example operations: •  Publish image on Flickr •  Order a book at Amazon •  Post a message on your friend’s Facebook wall PAGE 14
  13. 13. What Are Web Services? PAGE 15
  14. 14. Example client application http://ariadne.cs.kuleuven.be/alocom/alocom_plugin/alocom_plugin.swf PAGE 16
  15. 15. PAGE 17
  16. 16. Disaggregation service PAGE 18
  17. 17. What Are Web Services? •  W3C definition: •  A software system designed to support interoperable machine-to-machine interaction over a network... PAGE 19
  18. 18. Web Services Use •  Connect existing software •  Reusable application components PAGE 20
  19. 19. Major classes of Web Services •  Big Web Services (L. Richardson and S. Ruby) •  RESTful (REST-compliant) Web Services PAGE 21
  20. 20. PAGE 22
  21. 21. PAGE 23
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. Example: HTTP GET request GET /users/Robert HTTP/1.1 Host: myserver Accept: application/xml PAGE 28
  27. 27. 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
  28. 28. Be stateless Stateful design Stateless design PAGE 30
  29. 29. 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
  30. 30. Transfer XML, JSON, or both <?xml version="1.0"?> <discussion date="{date}" topic="{topic}"> <comment>{comment}</comment> <replies> <reply from="joe@mail.com" href="/discussion/topics/{topic}/joe"/> <reply from="bob@mail.com" href="/discussion/topics/{topic}/bob"/> </replies> </discussion> PAGE 32
  31. 31. 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
  32. 32. 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
  33. 33. Big web services •  SOAP (Simple Object Access Protocol) •  WSDL (Web Services Description Language) •  UDDI (Universal Description, Discovery, and Integration) PAGE 35
  34. 34. Roadmap Service Broker (UDDI) Find (SOAP) Service Requester Publish (WSDL) Bind (SOAP) Service Provider PAGE 36
  35. 35. 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
  36. 36. SOAP Message Structure SOAP Envelope SOAP Header header block SOAP Body body 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> PAGE 38
  37. 37. 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=" Response 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> PAGE 39
  38. 38. 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
  39. 39. 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
  40. 40. Roadmap Service Broker (UDDI) Find (SOAP) Service Requester Publish (WSDL) Bind (SOAP) Service Provider PAGE 42
  41. 41. 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
  42. 42. WSDL •  Describes three fundamental properties •  What a service does •  •  How a service is accessed •  •  Operations (methods) provided by the service Data format and protocol details Where a service is located •  Address (URL) details PAGE 44
  43. 43. WSDL Document Structure WSDL Specification abstract part types messages operations Main structure of WSDL document <definitions targerNamespace= ... > <types>definition of types...</types> <message>definition of a message...</message> port types <portType>definition of a port</portType> concrete part bindings service port <binding>definition of a binding...</binding> <service> <port>...</port> </service> </definitions> PAGE 45
  44. 44. 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
  45. 45. Operation Types Type Definition One-way The operation can receive a message but will not return a response Requestresponse 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
  46. 46. 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
  47. 47. 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
  48. 48. Roadmap Service Broker (UDDI) Find (SOAP) Service Requester Publish (WSDL) Bind (SOAP) Service Provider PAGE 50
  49. 49. 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
  50. 50. 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
  51. 51. UDDI Data Model: UDDI Core Data Types Example: http://www.tutorialspoint.com/uddi/uddi_data_model.htm PAGE 53
  52. 52. 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
  53. 53. 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
  54. 54. Big Web Services Examples •  http://www.xmethods.com •  http://www.programmableweb.com/ PAGE 56
  55. 55. Web services enable 1.  2.  3.  4.  data exchange between various applications and different platforms to resolve interoperability issues applications to function between two different operating systems server all of the above PAGE 57
  56. 56. Which of the following is used to locate and describe web services? 1.  2.  3.  4.  SOAP Web page WSDL UDDI PAGE 58
  57. 57. 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
  58. 58. 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
  59. 59. 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
  60. 60. 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
  61. 61. 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
  62. 62. 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/wsrestful/ •  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 APIs http://courses2.cit.cornell.edu/info4302_2012fa/lectures/week7/ INFO_CS4302_Lecture12.pdf PAGE 64
  63. 63. k.verbert@tue.nl n.v.stash@tue.nl g.h.l.fletcher@tue.nl PAGE 65
  1. A particular slide catching your eye?

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

×