Your SlideShare is downloading. ×
WebServices.pps
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

WebServices.pps

2,783
views

Published on

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,783
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
222
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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: <wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name="nmtoken"> <wsdl:input name="nmtoken"? message="qname"/> </wsdl:operation> </wsdl:portType > </wsdl:definitions> The grammar for a request-response operation is: <wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name="nmtoken" parameterOrder="nmtokens"> <wsdl:input name="nmtoken"? message="qname"/> <wsdl:output name="nmtoken"? message="qname"/> <wsdl:fault name="nmtoken" message="qname"/>* </wsdl:operation> </wsdl:portType > </wsdl:definitions> The grammar for a solicit-response operation is: <wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name="nmtoken" parameterOrder="nmtokens"> <wsdl:output name="nmtoken"? message="qname"/> <wsdl:input name="nmtoken"? message="qname"/> <wsdl:fault name="nmtoken" message="qname"/>* </wsdl:operation> </wsdl:portType > </wsdl:definitions> The grammar for a notification operation is: <wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name="nmtoken"> <wsdl:output name="nmtoken"? message="qname"/> </wsdl:operation> </wsdl:portType > </wsdl:definitions>
  • Transcript

    • 1. Web Services Semantic Web - Fall 2005 Computer Engineering Department Sharif University of Technology
    • 2. Outline
      • What are web services?
        • Definitions
        • Advantages
        • Challenges
        • Architecture
      • WS Protocol Stack
      • SOAP
      • WSDL
      • UDDI
      • Apache Axis
    • 3. 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
    • 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. 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. A Basic Web Service Language: Perl Operating System: Windows 2000 Language: Java Operating System: Linux XML XML
    • 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. 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
    • 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? Yes Reserve car, provisionally … get other resources reserved Confirm reservation Service Identifier I convert currency I know the weather quote
    • 10. 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
    • 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. 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
    • 13. SOAP: Request Example
    • 14. SOAP: Response Example
    • 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. 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 .
    • 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. 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>
    • 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=&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 >
    • 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=&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 >
    • 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=&quot;StockQuotePortType&quot;> < operation name=&quot;GetLastTradePrice&quot;> <input message=&quot;tns:GetLastTradePriceInput&quot;/> <output message=&quot;tns:GetLastTradePriceOutput&quot;/> </ operation > </ portType >
    • 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. 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. 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. 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. <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 >
    • 27. 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>
    • 28. 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>
    • 29. 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>
    • 30. 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>
    • 31. 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>
    • 32. 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.
    • 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.
      • 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
    • 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. 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
    • 37. 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
    • 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. 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. 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(); } } }
    • 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. 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(); } } }
    • 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. 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. 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. 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
    • 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(&quot;10 euro = &quot; + calculator.toLire(10) + &quot; lire&quot;);
      • } catch (Exception e) {
      • e.printStackTrace();
      • }
      • }
      • }
    • 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. References
      • Web Services Activity
        • http://www.w3.org/2002/ws/
      • W3C Web Services glossary
        • http://www.w3.org/TR/ws-gloss/