semantic web course – computer engineering department – sharif univ. of technology – fall 2005...

49
Semantic web course – Computer Engineering Department – Sharif Univ. of Technology – Fall 2005 1 Web Services Semantic Web - Fall 2005 Computer Engineering Department Sharif University of Technology

Post on 18-Dec-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

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

Web Services

Semantic Web - Fall 2005Computer Engineering Department

Sharif University of Technology

2

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

Outline What are web services?

Definitions Advantages Challenges Architecture

WS Protocol Stack SOAP WSDL UDDI Apache Axis

3

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

Web evolution

Program the Web

XML

Browse the Web

HTML

TCP/IP

Connect the Web

Technology

Applications

Text Hypertext ApplicationsFTP, E-mail, Gopher Web pages

Web services

4

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

Definitions Definition 1:

A web service is a service (“program”) that can be invoked from another program via the web.

Definition 2: “Web Services are self-contained, self-describing,

modular applications that can be published, located, and invoked across the Web”. – IBM Web Services Tutorial

Definition 3: A Web Service is a service on the Internet that

Use a standardized XML messaging system Not tied to any operating system or programming language

Optional features Self-describing: provide public interface to the service via a

common XML grammar Discoverable: Interested parties can find a service and

locate its interface

5

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

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 Google’s search,

spell check, and cached page databases. http://www.google.com/apis/

6

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

A Basic Web Service

Language: PerlOperating System: Windows 2000

Language: JavaOperating System: Linux

XML

XML

7

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

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).

8

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

Service Oriented Architecture (Basic Model)

ServiceBroker

ServiceUser

ServiceProvider

Find

Publish Bind

UDDI

WSDL

SOAP

SOAP SOAP

SOAP – Simple Object Access Protocol / SOA ProtocolWSDL – Web Services Description LanguageUDDI – Universal, Description, Discovery, and Integration

9

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

Service Interaction

I book planes I book car Rentals

I book hotels

I locate services

I organise holidays Get a car rental quote

locate service ask for quote

Is quote good enough?YesReserve car, provisionally

… get other resources reserved

Confirm reservation

Service Identifier

I convert currency

I know the weather

quote

10

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

Web Service Protocol Stack

Discovery UDDIDiscovery UDDI

Description WSDLDescription WSDL

XML Messaging XML-RPC, SOAP,XMLXML Messaging XML-RPC, SOAP,XML

Transport HTTP,SMTP,FTPTransport HTTP,SMTP,FTP

Transporting XML messages between client and server

Encoding messages in XML format

Describing Web Services interface

Searching / Publishing Web Services

11

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

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

12

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

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

SOAP Body

Message Name & Data

Headers

13

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

SOAP: Request Example

14

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

SOAP: Response Example

15

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

SOAP Advantages/Disadvantages Advantages

Human-readable XML Easy to debug

SOAP runs over HTTP Firewalls not affected

Services can be written in any language, platform or operating system.

Disadvantages S-L-O.............W

XML produces a lot of overhead for small messages

16

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

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 protocol-

independent 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.

17

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

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. They are equivalent to interfaces.

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

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

Port: a single endpoint defined as a combination of a binding and a network address.

Service: a collection of related endpoints.

18

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

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>

19

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

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>

20

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

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

All the parts are namespace qualified

<message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message>

<message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/></message>

21

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

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

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

<portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation></portType>

22

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

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

23

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

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

24

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

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

25

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

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…..> )

26

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

<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

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

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

27

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

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>

28

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

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>

29

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

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>

30

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

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>

31

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

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>

32

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

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.

33

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

UDDI Details SOAP is used to talk to UDDI registries White pages

Business information (name, contact info) Yellow pages

Categorization (industry, products, location) Green pages

Technical specifications (service description)

34

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

Addressing Axis EWS JaxMe jUDDI

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

Kandula Mirae Muse Pubscribe Sandesha Scout SOAP TSIK Woden WSIF

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

WSRF WSS4J XML-RPC

35

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

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

36

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

Standard mappings from WSDL to Java

XML Schema Datatype Java Datatype

xsd:base64Binary byte[]

xsd:boolean boolean

xsd:byte byte

xsd:dateTime java.util.Calendar

xsd:decimal java.math.BigDecimal

xsd:double double

xsd:float float

xsd:hexBinary byte[]

37

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

Standard mappings from WSDL to Java

XML Schema Datatype Java Datatype

xsd:int int

xsd:integer java.math.BigInteger

xsd:long long

xsd:QName javax.xml.namespace.QName

xsd:short short

xsd:string java.lang.String

38

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

Publishing Web Services with Axis Let’s 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;

}

}

39

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

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

Step 2 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

40

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

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();}

}}

41

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

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.

42

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

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(); }

}}

43

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

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

44

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

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

45

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

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;

}

46

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

The Java client (1/2) Generate the stub to access to the Web

Servicejava 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

47

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

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();}

}}

48

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

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.

49

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

References Web Services Activity

http://www.w3.org/2002/ws/

W3C Web Services glossary http://www.w3.org/TR/ws-gloss/