Web Services – Part I

40
1 Web Services – Part I CS 236607, Spring 2008/9

description

Web Services – Part I. CS 236607, Spring 2008/9. What is a Web Service?. Web Service: "Web services are loosely coupled software components delivered over Internet standard technologies." “Software that makes services available on a network using technologies such as XML and HTTP” - PowerPoint PPT Presentation

Transcript of Web Services – Part I

Page 1: Web Services – Part I

1

Web Services – Part I

CS 236607, Spring 2008/9

Page 2: Web Services – Part I

2

What is a Web Service? Web Service:

1. "Web services are loosely coupled software components delivered over Internet standard technologies."

2. “Software that makes services available on a network using technologies such as XML and HTTP”

Service-Oriented Architecture (SOA): “Development of applications from distributed

collections of smaller loosely coupled service providers”

Web services support service-oriented architectures, using in particular XML and HTTP.

Page 3: Web Services – Part I

3

What is a Web Service? (Cont.) Self-contained, modular Web application that can

be published, located and invoked across the Web A Web service can perform functions of varying

complexities. Once deployed, other applications (and other Web

services) can discover and invoke the deployed service

Page 4: Web Services – Part I

4

Why a New Framework?

CORBA, DCOM, Java/RMI, ... already exist

XML+HTTP: platform neutral, widely accepted and utilized

Page 5: Web Services – Part I

Example Scenario – Online Trade

Book Store

The Hobbit (5)Price: 25.95

Copies in Stock: 1

The Hobbit (5)Price: 25.95

Copies in Stock: 0

Book Store

The Hobbit (5)Price: 20.95

Copies in Stock: 5

Buy The Hobbit (5)

Buy The Hobbit (5)

How Much?

20.95

Buy it

The Hobbit (5)Price: 20.95

Copies in Stock: 4

The Hobbit (5)Price: 25.95

Copies in Stock: 1

The Hobbit (5)Price: 25.95

Copies in Stock: 0

Page 6: Web Services – Part I

6

Why is it Difficult to Use Ordinary Web Sites as Services? Consider an application that should return the

price of the book “The Hobbit” The application needs to fill the required form and

launch a “browser-like” request The application needs to parse the page, based on its

specific HTML structure, and retrieve the price Once the Web site changes its user interface, your

program is useless How can we find new online stores?

Page 7: Web Services – Part I

What is the price here?

How can we find this URL?

Page 8: Web Services – Part I

8

Calling Remote Functions Could Help It would help if we could call functions, such as:

Amazon.getPrice(“The Hobbit") Amazon.buyBook(“The Hobbit", myId)

getPrice(…)

The Internet

Page 9: Web Services – Part I

9

Difficulties in Using Remote Functions For each remote function, we need to phrase a call

in the specific language that is used for its implementation

For each remote function, we need to contact the provider in order to find out what exactly the signature (i.e., parameters, return value, inc. the type) is

On the server side, each remote function needs to listen to a server socket bound to a specific port Not in line with protection by firewalls

Page 10: Web Services – Part I

10

A Solution

Use an agreed interface and a syntax that all applications are familiar with (e.g., XML) For example, SOAP

Use HTTP to transfer data through port 80 Use a standard for publishing methods, their

signatures and their usage For example, WSDL

Use standard directory structures for publishing available services For example, UDDI

Page 11: Web Services – Part I

11

Available Web Services Examples http://seekda.com/ Google search (http://www.google.com/apis) Weather reports Stock prices Currency exchanges Sending SMS messages, faxes Prices of books in Barnes and Nobles Dictionaries And more…

Page 12: Web Services – Part I

12

Essential TechnologiesA range of protocols has been suggested in the last

years. We will discuss what are commonly believed to be the essential technologies: SOAP – exchanging XML messages on a network WSDL – describing interfaces of Web services UDDI – managing registries of Web services

SERVICEREGISTRY

SERVICEUSER (Client)

SERVICEPROVIDER

publish

messages

find

Page 13: Web Services – Part I

13

SOAP

Used to be “Simple Object Access Protocol” but no longer an acronym...

Page 14: Web Services – Part I

14

What is SOAP? SOAP is a protocol for invoking Web Services SOAP is XML based In SOAP, applications may exchange information

over HTTP HTTP is just one possible communication pattern

supported by SOAP (e.g. SMTP)

Page 15: Web Services – Part I

15

SOAP Envelope

<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope"> <Header>...</Header> <Body>...</Body></Envelope>

Envelope Headers: Encryption information Access control Routing ...

Page 16: Web Services – Part I

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body> <ns1:getRate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:xmethods-CurrencyExchange">

<country1 xsi:type="xsd:string">Euro</country1> <country2 xsi:type="xsd:string">Israel</country2> </ns1:getRate> </soapenv:Body></soapenv:Envelope>

A request to A request to servicesservices..xmethodsxmethods..net:80net:80

Page 17: Web Services – Part I

<?xml version='1.0' encoding='UTF-8'?>

<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' soap:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>

<soap:Body> <n:getRateResponse xmlns:n='urn:xmethods-CurrencyExchange'>

<Result xsi:type='xsd:float'>5.5825</Result> </n:getRateResponse> </soap:Body></soap:Envelope>

The ResponseThe Response

Page 18: Web Services – Part I

18

A SOAP Message

A SOAP message is an ordinary XML document containing the following elements: Envelope – identifies the XML document as a SOAP

message: required Header – contains header information: optional Body – contains call or response information: required Fault – provides information about errors that occurred

while processing the message: optional

Page 19: Web Services – Part I

19

Special SOAP Header Attributes

mustUnderstand And more

Example:...<env:Header> <c:encoding env:role="http://encodings.example.org/decoder" env:mustUnderstand="true"> gzip+base64 </c:encoding></env:Header>...

INITIALSENDER

INTERMEDIARY

INTERMEDIARY

INTERMEDIARY

ULTIMATERECEIVER

role

Page 20: Web Services – Part I

20

SOAP Response on Error

In loosely connected distributed systems many things can go wrong: Invalid data may be transmitted Servers may be unavailable

SOAP provides a uniform way to indicate such errors.

Page 21: Web Services – Part I

21

Faults Example<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:w="http://www.widget.inc/shop"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> <env:Subcode> <env:Value>w:InvalidBuyRequest</env:Value> </env:Subcode> </env:Code> <env:Reason> <env:Text xml:lang="en"> The value of 'amount' is invalid! </env:Text> <env:Text xml:lang="da"> Værdien af 'amount' er ugyldig! </env:Text> </env:Reason> </env:Fault> </env:Body></env:Envelope>

Page 22: Web Services – Part I

22

Protocol Binding Transmitting a SOAP message requires a

communication protocol to carry the message. This is called SOAP protocol binding . Transmission protocols: HTTP, SMTP, ... Message exchange patterns:

request–response (for RPC) POST SOAP response (Only the response is a SOAP

message) GETHow will we know what

To use?

Page 23: Web Services – Part I

23

WSDL

Web Services Description Language

Page 24: Web Services – Part I

24

Describing a Web Service

Need a standard way to describe a Web Service: The methods available Their parameters How to communicate Etc.

Page 25: Web Services – Part I

25

Describing a Web Service – WSDL Answer

WSDL is a standard for describing Web services using XML.

WSDL Can Describe: What a Web service can do Where it resides How to invoke it

Page 26: Web Services – Part I

Structure of a WSDL Description<description xmlns="http://www.w3.org/2004/08/wsdl"

targetNamespace="..." ...> <types> <!-- XML Schema description of types being used in messages --> ... </types> <interface name="..."> <!-- list of operations and their input and output --> ... </interface> <binding name="..." interface="..." type="..."> <!-- message encodings and communication protocols --> ... </binding> <service name="..." interface="..."> <!-- combination of an interface, a binding, and a service location --> ... </service></description>

Page 27: Web Services – Part I

27

A Recipe Server with XML and HTTP Let’s think of a Recipe Server which under an Ad

hoc approach, RPC-style, it would have the following functionalities: Recipes getRecipes() Lock lockRecipe(ID) void writeRecipe(Lock,Recipe) void unlockRecipe(Lock)

This is how it’s WSDL would look like (The following slides)

Page 28: Web Services – Part I

Recipe Server with WSDL and SOAP (1/6)

<description xmlns="http://www.w3.org/2004/08/wsdl" targetNamespace="http://www.brics.dk/ixwt/recipes/wsdl" xmlns:x="http://www.brics.dk/ixwt/recipes/wsdl"> <types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace= "http://www.brics.dk/ixwt/recipes/wsdl/types" xmlns:t="http://www.brics.dk/ixwt/recipes/wsdl/types">

<xs:import namespace="http://www.brics.dk/ixwt/recipes" schemaLocation="recipes.xsd"/>

<xs:element name="lock"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="16"/> </xs:restriction> </xs:simpleType> </xs:element>

Page 29: Web Services – Part I

Recipe Server with WSDL and SOAP (2/6)

<xs:element name="lockError" type="xs:string"/>

<xs:element name="getRecipes"> <xs:complexType><xs:sequence/></xs:complexType> </xs:element>

<xs:element name="lockRecipe"> <xs:complexType> <xs:sequence> <xs:element name="id" type="xs:NMTOKEN"/> </xs:sequence> </xs:complexType> </xs:element>

<xs:element name="lockRecipeResponse"> <xs:complexType> <xs:sequence> <xs:element ref="t:lock"/> </xs:sequence> </xs:complexType> </xs:element>

Page 30: Web Services – Part I

Recipe Server with WSDL and SOAP (3/6)

<xs:element name="writeRecipe"> <xs:complexType> <xs:sequence> <xs:element ref="t:recipe"/> <xs:element ref="t:lock"/> </xs:sequence> </xs:complexType> </xs:element>

<xs:element name="unlockRecipe"> <xs:complexType> <xs:sequence> <xs:element ref="t:lock"/> </xs:sequence> </xs:complexType> </xs:element>

</xs:schema> </types>

Page 31: Web Services – Part I

Recipe Server with WSDL and SOAP (4/6)

<interface name="recipeserverInterface" xmlns:t="http://www.brics.dk/ixwt/recipes/wsdl/types" styleDefault="http://www.w3.org/2004/03/wsdl/style/rpc">

<fault name="lockFault" element="t:lockError"/>

<operation name="getRecipesOperation" pattern="http://www.w3.org/2004/03/wsdl/in-out"> <input messageLabel="In" element="t:getRecipes"/> <output messageLabel="Out" element="t:collection"/> </operation>

<operation name="lockRecipeOperation" pattern="http://www.w3.org/2004/03/wsdl/in-out"> <input messageLabel="In" element="t:lockRecipe"/> <output messageLabel="Out" element="t:lockRecipeResponse"/> <outfault ref="x:lockFault" messageLabel="Out"/> </operation>

Page 32: Web Services – Part I

Recipe Server with WSDL and SOAP (5/6)

<operation name="writeRecipeOperation" pattern= "http://www.w3.org/2004/03/wsdl/robust-in-only"> <input messageLabel="In" element="t:writeRecipe"/> <outfault ref="x:lockFault"/> </operation>

<operation name="unlockRecipeOperation" pattern="http://www.w3.org/2004/03/wsdl/in-only"> <input messageLabel="In" element="t:lock"/> </operation>

</interface>

Page 33: Web Services – Part I

Recipe Server with WSDL and SOAP (6/6)

<binding name="recipeserverSOAPBinding" interface="x:recipeserverInterface" type="http://www.w3.org/2004/08/wsdl/soap12" xmlns:ws="http://www.w3.org/2004/08/wsdl/soap12" ws:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP" ws:mepDefault= "http://www.w3.org/2003/05/soap/mep/request-response" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <fault ref="x:lockFault" ws:code="soap:Sender"/> </binding>

<service name="recipeserver" interface="x:recipeserverInterface"> <endpoint name="recipeserverEndpoint" binding="x:recipeserverSOAPBinding" address= "http://www.widget.inc/personal/jdoe/recipeserver"/> </service></description>

Page 34: Web Services – Part I

34

To Put It Briefly… This particular WSDL description tells us that

there is a Web service at the URI http://www.widget.inc/personal/jdoe/recipeserver

It understands the RPC-style operations getRecipes, lockRecipe, writeRecipe, and unlockRecipe

The communication uses SOAP with the SOAP HTTP binding

Certain faults may occur And input and output values are required to be

valid according the given schema definitions.

Page 35: Web Services – Part I

35

UDDI

Universal Description, Discovery, and Integration

Page 36: Web Services – Part I

36

A Telephone Book

How can you find a Web service? How can you register your Web service so that

others will find it? UDDI is a mechanism for registering and

discovering Web services. Think of UDDI as a telephone book

Page 37: Web Services – Part I

37

More about UDDI

UDDI has grown from the equivalent of a simple yellow pages directory to a framework for brokering collaboration between Web services.

For the applications we have considered so far, an external Web service would typically be discovered manually by the programmer and be hardwired into the application. This is known as static discovery.

UDDI also targets dynamic discovery, where the application itself at runtime finds a required Web service selected on the basis of, for example, price, availability, or efficiency.

Page 38: Web Services – Part I

38

More about UDDI (Cont.)

UDDI has as yet few applications, compared to the more widespread use of SOAP and WSDL, and most available case studies only consider static discovery.

Page 39: Web Services – Part I

39

Summary

SOAP – A protocol for exchanging XML messages on a network (focusing on HTTP)

WSDL – A language for describing Web services interfaces.

UDDI – A system for managing registries of Web services

Page 40: Web Services – Part I

40

Resources

An Introduction to XML and Web Technologies / Anders Møller and Michael I. Schwartzbach – course literature

W3C’s SOAP Specifications W3C’s WSDL Specifications UDDI The Web Service Interoperability Organizat

ion HU