You are on page 1of 49

Web Services

Semantic Web - Fall 2005 Computer Engineering Department Sharif University of Technology

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

Outline

What are web services?


Definitions Advantages Challenges Architecture

WS Protocol Stack SOAP WSDL UDDI Apache Axis

2 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 2

Web evolution
IP TCP/
Text
FTP, E-ma il, Go pher

HTML
Hypertext

XML

Technology

Applications

Applications

Connect the Web

Web p ag

es

Browse the Web

Web servi ce

Program the Web


3

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

Definitions

Definition 1:

Definition 2:

A web service is a service (program) that can be invoked from another program via the web. Web Services are self-contained, self-describing, modular applications that can be published, located, and invoked across the Web. IBM Web Services Tutorial A Web Service is a service on the Internet that

Definition 3:

Optional features

Use a standardized XML messaging system Not tied to any operating system or programming language Self-describing: provide public interface to the service via a common XML grammar Discoverable: Interested parties can find a service and locate its interface
4 4

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

Examples

Flight Reservation Weather Service Amazon.com web services Retrieve geographic information

http://terraserver.microsoft.net/TerraService.asmx

Search the web, check spellings


One of the first useful Web Services built around SOAP Allows you to integrate your application with Googles search, spell check, and cached page databases. http://www.google.com/apis/
5

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

A Basic Web Service


XML XML

Language: Perl Operating System: Windows 2000

Language: Java Operating System: Linux

6 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 6

Web Services Advantages

Use open, text-based standards, which enable components written in different languages and for different platforms to communicate. Promote a modular approach to programming, so multiple organizations can communicate with the same Web service. Self-describing (metadata for access and use) Discoverable (search and locate in registries) loosely coupled (i.e. Services should not be dependent on each other).
7

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

Service Oriented Architecture (Basic Model)


WSDL
Publish
SOAP

Service Provider

Bind
SOAP

Service Broker UDDI

Find
SOAP

Service User

SOAP Simple Object Access Protocol / SOA Protocol WSDL Web Services Description Language UDDI Universal, Description, Discovery, and Integration
Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 8 8

Service Interaction
Get a car rental quote locate service ask for quote Is quote good enough? Yes Reserve car, provisionally get other resources reserved Confirm reservation
Ser v Ide ice ntifi er

I organise holidays

I know the weather

I locate services

ote qu
I book car Rentals

I book planes

I book hotels

I convert currency
9

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

Web Service Protocol Stack


Searching / Publishing Web Services Describing Web Services interface Discovery Description XML Messaging Transport Encoding messages in XML format Transporting XML messages between client and server
10 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 10

UDDI WSDL XML-RPC, SOAP,XML HTTP,SMTP,FTP

Simple Object Access Protocol (SOAP)

SOAP is an XML-based protocol designed to exchange information in a distributed environment (a communication protocol). SOAP is platform & language independent SOAP is a W3C standard

11 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 11

SOAP: Message Structure


<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> ... </soap:Header> <soap:Body> ... </soap:Body> </soap:Envelope>

SOAP Envelope SOAP Header Headers SOAP Body Message Name & Data

12 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 12

SOAP: Request Example

13 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 13

SOAP: Response Example

14 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 14

SOAP Advantages/Disadvantages

Advantages

Human-readable XML

Easy to debug Firewalls not affected

SOAP runs over HTTP

Services can be written in any language, platform or operating system. S-L-O.............W

Disadvantages

XML produces a lot of overhead for small messages


15

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

15

WSDL

Web Services Description Language WSDL is an XML-based format designed to describe the interfaces exposed by a service

What a service does? How clients can use it?

Separation of abstract service description from concrete messaging format:


An abstract section describing the interfaces in a protocolindependent way A concrete section relating the abstract definitions with the specific protocols

It can be used with all protocols (HTTP, SMTP, etc.), but it normally runs over HTTP. If sender & receiver share and understand same WSDL file, interoperability is guaranteed.
16 16

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

WSDL: Definitions

A WSDL document defines services as a collection of network endpoints or ports, where the port types are abstract collection of operations, and the concrete protocol and data format specifications for a particular port type constitutes a reusable binding. Types: a container for data type definitions using some type system such as XSD. Message: an abstract, typed definition of the data being communicated. Operation: an abstract description of an action supported by the service. Port Type: an abstract set of operations supported by one or more endpoints.

Binding: a concrete protocol and data format specification for a particular port type.

They are equivalent to interfaces.

Port: a single endpoint defined as a combination of a binding and a network address. Service: a collection of related endpoints.

The interfaces are bound to specific network and transport protocols. It is akin to implementing an interface.

17 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 17

WSDL Structure
<?xml version="1.0" encoding="UTF-8"?> <definitions> <types> <! define the types here using XML Schema </types> <message> <! XML messages the web service uses are defined here </message> <portType> <! define the input and output parameters here - </portType> <binding> <! define the network protocol here </binding> <service> <! location of the service </service> </definitions>
18 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 18

The <types>

The types element contains XML Schemas defining the datatypes that are to be passed to and from the web service

<types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all><element name="tickerSymbol" type="string"/></all> </complexType> </element> <element name="TradePrice"> <complexType> <all><element name="price" type="float"/></all> </complexType> </element> </schema> </types>
Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

19 19

The <message>

The <message> element is used to define the messages that will be exchanged between the client and the service These message elements contain <part> elements, which will be using types defined in the types element
<message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message>

All the parts are namespace qualified

20 20

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

The <portType>

The types and messages have been defined, but they have not been defined in terms of where they fit in the functionality of the web service This is done within <portType> and <operation> elements
<portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType>

A portType is analogous to a class An operation is analogous to a method in that class


21

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

21

Types of <operation>

There are four distinct types of operation Synchronous


Request-response - The service receives a message and sends a reply Solicit-response - The service sends a message and receives a reply message

Asynchronous

One-way - The service receives a message Notification - The service sends a message

All of these can be defined in WSDL


22

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

22

Defining the type of operation

Presence and order of input/output elements defines the type of operation. Request-response <input><output> Solicit-response <output><input> One-way <input> only Notification <output> only
23 23

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

The <binding> element

This element is used to define the mechanism that the client will actually use to interact with the web service The most common choice is currently SOAP The binding element defines the protocol specific information for the portTypes previously defined

24 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 24

The binding tag


<binding name=ez3950SOAPBinding type=tns:ez3950PortTypes> The <binding> tag indicates that we will map a <Port Type> to a protocol

<soap:binding style=rpc transport=http://schemas.xmlsoap.org/soap/http/> Indicates we will be using the SOAP binding extensions to map the operations. The alternative to rpc is document. ( to use GET/POST use <http:binding> to use MIME use <mime:binding..> )
25 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 25

<service>

The final component of a WSDL file is the <service> element The <service> element defines <port> elements that specify where requests should be sent
<service name="StockQuoteService"> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service>

The <soap:address> subelement identifies the URL of the service The precise content of <port> elements will be dependent upon the mechanism, i.e. SOAP, HTTP or MIME
26

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

26

WSDL: Example (1/5)


<?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:xsda="http://example.com/stockquote/schema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote/schema" xmlns="http://www.w3.org/2000/10/XMLSchema"> <complexType name="TimePeriod"> <all> <element name="startTime" type="xsd:timeInstant"/> <element name="endTime" type="xsd:timeInstant"/> </all> </complexType>
27 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 27

WSDL: Example (2/5


<complexType name="ArrayOfFloat"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:float[]"/> </restriction> </complexContent> </complexType> </schema> </types> <message name="GetTradePricesInput"> <part name="tickerSymbol" element="xsd:string"/> <part name="timePeriod" element="xsda:TimePeriod"/> </message>

28 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 28

WSDL: Example (3/5)


<message name="GetTradePricesOutput"> <part name="result" type="xsda:ArrayOfFloat"/> <part name="frequency" type="xsd:float"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice" parameterOrder="tickerSymbol timePeriod result frequency"> <input message="tns:GetTradePricesInput"/> <output message="tns:GetTradePricesOutput"/> </operation> </portType>

29 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 29

WSDL: Example (4/5)


<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetTradePrices"> <soap:operation soapAction="http://example.com/GetTradePrices"/> <input> <soap:body use="encoded" namespace="http://example.com/stockquote encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body use="encoded" namespace="http://example.com/stockquote" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding>
30 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 30

WSDL: Example (5/5)


<service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions>

31 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 31

UDDI

Universal Description, Discovery and Integration

A Web Service registry & discovery mechanism for retrieving pointers for web services interfaces Publish your business information and technical details of your Web Service Search for other Web Services and connect to them UDDI is not only limited to XML Web Services The key to the ultimate success of Web services, but has some key limitations, and alternative discovery methods are provided by ebXML and WS-Inspection.
32

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

32

UDDI Details

SOAP is used to talk to UDDI registries White pages

Business information (name, contact info) Categorization (industry, products, location) Technical specifications (service description)

Yellow pages

Green pages

33 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 33

Addressing Axis EWS JaxMe jUDDI

Kandula Mirae Muse Pubscribe Sandesha Scout SOAP TSIK Woden WSIF

jUDDI (pronounced "Judy") is an open source Java implementation of the Universal Description, Discovery, and Integration (UDDI) specification for Web Services.

WSRF WSS4J XML-RPC

The Web Services Invocation Framework (WSIF) is a simple Java API for invoking Web services, no matter how or where the services are provided.

34 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 34

Apache Axis
Apache Axis is an Open Source SOAP server and client It is completely written in Java The server can be executed as a web application into servlet engines such as Jakarta Tomcat

35 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 35

Standard mappings from WSDL to Java


XML Schema Datatype xsd:base64Binary xsd:boolean xsd:byte xsd:dateTime xsd:decimal xsd:double xsd:float xsd:hexBinary byte[] boolean byte java.util.Calendar java.math.BigDecimal double float byte[] Java Datatype

36 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 36

Standard mappings from WSDL to Java


XML Schema Datatype xsd:int xsd:integer xsd:long xsd:QName xsd:short xsd:string int java.math.BigInteger long javax.xml.namespace.QName short java.lang.String Java Datatype

37 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 37

Publishing Web Services with Axis

Lets say we have a simple Java class like the following:


public class Converter { public double toLire(double euro) { return euro * 1936.27; } public double toEuro(double lire) { return lire / 1936.27; } }
38

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

38

Publishing Web Services with Axis

JWS (Java Web Service) files Instant deploying

Step 1

Copy Converter.java file into your axis webapp directory, and rename it as Converter.jws You should now be able to access the service at the following URL (assuming your Axis web application is on port 8080): http://localhost:8080/axis/Converter.jws

Step 2

39 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 39

Consuming Web Services with Axis


import org.apache.axis.client.Call; import org.apache.axis.client.Service; import javax.xml.namespace.QName; public class ConverterClient { public static void main(String args[]) { try { String endpoint = "http://localhost:8080/axis/Converter.jws"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName(new QName("http://localhost:8080/axis/Converter.jws", "toLire")); Double ret = (Double)call.invoke(new Object[] {new Double(10.0)}); System.out.println("10 euro = " + ret.doubleValue() + " lire"); } catch (Exception e) { e.printStackTrace(); } } }
Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 40 40

Consuming Web Services with .NET (1/2)

C# Client

Create a new C# console application project Add a class called ConverterClient Add a web reference to http://localhost:8080/axis/Converter.jws?wsdl in the project, otherwise the class ConverterService will not be found.

41 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 41

Consuming Web Services with .NET (2/2)


using System; using ConsoleApplication.localhost; namespace ConsoleApplication { /// <summary> /// Summary description for Class1. /// </summary> class ConverterClient { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { ConverterService converter = new ConverterService(); System.Console.WriteLine("10 euro = {0}", converter.toLire(10)); System.Console.ReadLine(); } }
Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

42 42

Using the Axis TCP Monitor (tcpmon)


The tcpmon utility keeps a log of all request/response SOAP messages It can be found in the org.apache.axis.utils package To run it from the command line:

java org.apache.axis.utils.tcpmon

43 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 43

Publishing Web Services with .NET (1/2)

Visual Studio .NET 2003

From the File menu, point to New, and click New Project Select ASP.NET Web service Change the Location if necessary Click OK Open the code window Add the following code

44 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 44

Publishing Web Services with .NET (2/2)


[WebMethod] public double toLire(double euro) { return euro * 1936.27; } [WebMethod] public double toEuro(double lire) { return lire / 1936.27; }

45 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 45

The Java client (1/2)

Generate the stub to access to the Web Service


java org.apache.axis.wsdl.WSDL2Java http://localhost/Converter/Service1.asmx?WSDL

This tool generates the following files:


Service1.java Service1Locator.java Service1Soap.java ServiceSoapStub.java

46 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 46

The Java Client (2/2)


import org.tempuri.*; public class DotNetConverterClient { public static void main(String args[]) { try { Service1 service = new Service1Locator(); Service1Soap calculator = service.getService1Soap(); System.out.println("10 euro = " + calculator.toLire(10) + " lire"); } catch (Exception e) { e.printStackTrace();
}

} }

47 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 47

Web Services Challenges


The standards that drive Web services are still in draft form. Web services need standard security procedures (a common problem to all of the distributed computing solutions). The leading registry, based on the UDDI specification, has some key limitations, and alternative discovery methods are needed. Web services need Quality of Service (QoS) support from Web Services Registries, Brokerages, and Network Providers.
48

Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005

48

References

Web Services Activity

http://www.w3.org/2002/ws/ http://www.w3.org/TR/ws-gloss/

W3C Web Services glossary

49 Semantic web course Computer Engineering Department Sharif Univ. of Technology Fall 2005 49

You might also like