semantic web course – computer engineering department – sharif univ. of technology – fall 2005...
Post on 18-Dec-2015
217 views
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.