Upcoming SlideShare
Loading in...5







Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • Therefore, methods can be grouped together in portType elements. Similar to methods in a Java class would be.
  • The grammar for a one-way operation is: * The grammar for a request-response operation is: * * The grammar for a solicit-response operation is: * * The grammar for a notification operation is: *

WebServices.pps WebServices.pps Presentation Transcript

  • Web Services Semantic Web - Fall 2005 Computer Engineering Department Sharif University of Technology
  • Outline
    • What are web services?
      • Definitions
      • Advantages
      • Challenges
      • Architecture
    • WS Protocol Stack
    • SOAP
    • WSDL
    • UDDI
    • Apache Axis
  • Web evolution Program the Web XML Browse the Web HTML T C P/IP Connect the Web Technology Applications Text Hypertext Applications FTP, E-mail, Gopher Web pages Web services
  • 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
  • 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 /
  • A Basic Web Service Language: Perl Operating System: Windows 2000 Language: Java Operating System: Linux XML XML
  • 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).
  • Service Oriented Architecture (Basic Model) Service Broker Service User Service Provider Find Publish Bind UDDI WSDL SOAP SOAP SOAP SOAP – Simple Object Access Protocol / SOA Protocol WSDL – Web Services Description Language UDDI – Universal, Description, Discovery, and Integration
  • 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? Yes Reserve car, provisionally … get other resources reserved Confirm reservation Service Identifier I convert currency I know the weather quote
  • Web Service Protocol Stack Discovery UDDI Description WSDL XML Messaging XML-RPC, SOAP,XML Transport HTTP,SMTP,FTP Transporting XML messages between client and server Encoding messages in XML format Describing Web Services interface Searching / Publishing Web Services
  • 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
  • SOAP: Message Structure
    • <?xml version=&quot;1.0&quot;?>
    • <soap:Envelope
    • xmlns:soap=&quot;http://www.w3.org/2001/12/soap-envelope“
    • soap:encodingStyle=&quot;http://www.w3.org/2001/12/soap-encoding&quot;>
    • <soap:Header>
    • ...
    • </soap:Header>
    • <soap:Body>
    • ...
    • </soap:Body>
    • </soap:Envelope>
    SOAP Envelope SOAP Header SOAP Body Message Name & Data Headers
  • SOAP: Request Example
  • SOAP: Response Example
  • 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
  • WSDL
    • W eb S ervices D escription L anguage
    • 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 .
  • 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.
  • WSDL Structure <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <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>
  • 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=&quot;http://example.com/stockquote.xsd&quot; xmlns=&quot;http://www.w3.org/2000/10/XMLSchema&quot;> <element name=&quot;TradePriceRequest&quot;> <complexType> <all><element name=&quot;tickerSymbol&quot; type=&quot;string&quot;/></all> </complexType> </element> <element name=&quot;TradePrice&quot;> <complexType> <all><element name=&quot;price&quot; type=&quot;float&quot;/></all> </complexType> </element> </ schema > </ types >
  • 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=&quot;GetLastTradePriceInput&quot;> < part name=&quot;body&quot; element=&quot;xsd1:TradePriceRequest&quot;/> </ message > < message name=&quot;GetLastTradePriceOutput&quot;> < part name=&quot;body&quot; element=&quot;xsd1:TradePrice&quot;/> </ message >
  • 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=&quot;StockQuotePortType&quot;> < operation name=&quot;GetLastTradePrice&quot;> <input message=&quot;tns:GetLastTradePriceInput&quot;/> <output message=&quot;tns:GetLastTradePriceOutput&quot;/> </ operation > </ portType >
  • 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
  • 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
  • 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
  • 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…..> )
  • <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=&quot;StockQuoteService&quot;> < port name=&quot;StockQuotePort&quot; binding=&quot;tns:StockQuoteBinding&quot;> < soap:address location=&quot;http://example.com/stockquote&quot;/> </ port > </ service >
  • WSDL: Example (1/5)
    • <?xml version=&quot;1.0&quot;?>
    • <definitions name=&quot;StockQuote&quot;
    • targetNamespace=&quot;http://example.com/stockquote.wsdl&quot;
    • xmlns:tns=&quot;http://example.com/stockquote.wsdl&quot;
    • xmlns:xsd=&quot;http://www.w3.org/2000/10/XMLSchema&quot;
    • xmlns:xsda=&quot;http://example.com/stockquote/schema&quot;
    • xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;
    • xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;
    • xmlns=&quot;http://schemas.xmlsoap.org/wsdl/&quot;>
    • <types>
    • <schema targetNamespace=&quot;http://example.com/stockquote/schema&quot;
    • xmlns=&quot;http://www.w3.org/2000/10/XMLSchema&quot;>
    • <complexType name=&quot; TimePeriod &quot;>
    • <all>
    • <element name=&quot; startTime &quot; type=&quot;xsd:timeInstant&quot;/>
    • <element name=&quot; endTime &quot; type=&quot;xsd:timeInstant&quot;/>
    • </all>
    • </complexType>
  • WSDL: Example (2/5
    • <complexType name=&quot; ArrayOfFloat &quot;>
    • <complexContent>
    • <restriction base=&quot;soapenc:Array&quot;>
    • <attribute ref=&quot;soapenc:arrayType&quot; wsdl:arrayType=&quot;xsd:float[]&quot;/>
    • </restriction>
    • </complexContent>
    • </complexType>
    • </schema>
    • </types>
    • <message name=&quot; GetTradePricesInput &quot;>
    • <part name=&quot; tickerSymbol &quot; element=&quot;xsd:string&quot;/>
    • <part name=&quot; timePeriod &quot; element=&quot;xsda:TimePeriod&quot;/>
    • </message>
  • WSDL: Example (3/5)
    • <message name=&quot; GetTradePricesOutput &quot;>
    • <part name=&quot; result &quot; type=&quot;xsda:ArrayOfFloat&quot;/>
    • <part name=&quot; frequency &quot; type=&quot;xsd:float&quot;/>
    • </message>
    • <portType name=&quot; StockQuotePortType &quot;>
    • <operation name=&quot; GetLastTradePrice &quot; parameterOrder=&quot; tickerSymbol timePeriod result frequency &quot;>
    • <input message=&quot; tns:GetTradePricesInput &quot;/>
    • <output message=&quot; tns:GetTradePricesOutput &quot;/>
    • </operation>
    • </portType>
  • WSDL: Example (4/5)
    • <binding name=&quot; StockQuoteSoapBinding &quot; type=&quot; tns:StockQuotePortType &quot;>
    • <soap:binding style=&quot;rpc&quot; transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/>
    • <operation name=&quot;GetTradePrices&quot;>
    • <soap:operation soapAction=&quot;http://example.com/GetTradePrices&quot;/>
    • <input>
    • <soap:body use=&quot;encoded&quot; namespace=&quot;http://example.com/stockquote“ encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/>
    • </input>
    • <output>
    • <soap:body use=&quot;encoded&quot; namespace=&quot;http://example.com/stockquote&quot;
    • encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/>
    • </output>
    • </operation>
    • </binding>
  • WSDL: Example (5/5)
    • <service name=&quot; StockQuoteService &quot;>
    • <documentation>My first service</documentation>
    • <port name=&quot; StockQuotePort &quot; binding=&quot; tns:StockQuoteBinding &quot;>
    • <soap:address location=&quot; http://example.com/stockquote &quot;/>
    • </port>
    • </service>
    • </definitions>
  • UDDI
    • U niversal D escription, D iscovery and I ntegration
    • 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.
  • 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)
    • Addressing
    • Axis
    • EWS
    • JaxMe
    • jUDDI
      • jUDDI (pronounced &quot;Judy&quot;) 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
  • 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
  • Standard mappings from WSDL to Java byte[] xsd:hexBinary float xsd:float double xsd:double java.math.BigDecimal xsd:decimal byte xsd:byte java.util.Calendar xsd:dateTime boolean xsd:boolean Java Datatype XML Schema Datatype byte[] xsd:base64Binary
  • Standard mappings from WSDL to Java java.lang.String xsd:string short xsd:short javax.xml.namespace.QName xsd:QName long xsd:long java.math.BigInteger xsd:integer int xsd:int Java Datatype XML Schema Datatype
  • 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; } }
  • 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
  • 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 = &quot;http://localhost:8080/axis/Converter.jws&quot;; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint)); call.setOperationName( new QName(&quot;http://localhost:8080/axis/Converter.jws&quot;, &quot;toLire&quot;)); Double ret = (Double)call.invoke( new Object[] { new Double(10.0)}); System.out.println(&quot;10 euro = &quot; + ret.doubleValue() + &quot; lire&quot;); } catch (Exception e) { e.printStackTrace(); } } }
  • 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.
  • 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(&quot;10 euro = {0}&quot;, converter.toLire(10)); System.Console.ReadLine(); } } }
  • 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
  • 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
  • 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;
    • }
  • 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
  • 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(&quot;10 euro = &quot; + calculator.toLire(10) + &quot; lire&quot;);
    • } catch (Exception e) {
    • e.printStackTrace();
    • }
    • }
    • }
  • 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.
  • References
    • Web Services Activity
      • http://www.w3.org/2002/ws/
    • W3C Web Services glossary
      • http://www.w3.org/TR/ws-gloss/