ws-intro - University of California San Diego

Download Report

Transcript ws-intro - University of California San Diego

An Introduction to Web Services
Sriram Krishnan, Ph.D.
[email protected]
Acknowledgements
• This presentation is based on a prior Web services
tutorial presented at the Joint ACM Java GrandeISCOPE 2002 Conference, Seattle, WA, Nov 2002 by
Madhusudhan Govindaraju, Aleksander Slominski,
Sriram Krishnan, and Dennis Gannon
Web Services: Definition
• Many different definitions are available
• IBM (Gottschalk, et al): A web service is an
interface that describes a collection of
operations that are network accessible through
standardized XML messaging.
• Microsoft (on MSDN): A programmable
application logic accessible using standard
Internet protocols.
• Another Web Service definition:
– A network service that provides a programmatic
interface to remote clients
Web Services: Requirements
• Accessible through standard Web
protocols
– Interoperability is important
• Standard description language
• Publishable to a registry of services
• Discoverable via standard mechanisms
Web Services: Features
• Independent of programming language and OS
• Not bound to any single platform or specific
protocol
• All information required to contact a service
is captured by the Web Service Description
– Web Services Description encapsulates an interface
definition, data types being used, and the protocol
information
Web Services Architecture
Service
Registry
Lookup
Service
Requestor
Publish
Interact
Service
Provider
Need to know three things about WS
• What does the service do?
• How is the service accessed?
• Where is the service located?
WSDL
• Web Services Definition Language (WSDL)
• Standard to describe the invocation syntax of a
Web Service
• Authors: IBM, Microsoft and others
• WSDL is an XML document that describes
– Interface types for each port
– Content of messages it receives and sends
– Bindings of interfaces to protocols
• SOAP is default, others possible
• Describes the access points (host/port) for the protocol
Web Services Stack
Service Discovery Layer
Service Description Layer
Service Messaging Layer
Service Transport Layer
WSDL Elements
•
•
•
•
•
•
PortTypes
Message
Types
Binding
Port
Service
SoapStruct echoStruct(SoapStruct ss)
WSDL: Types
• Types: collection of all data types used in the Web service
(any schema language can be used, typically XML
Schemas)
– referenced by messages
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="SOAPStruct">
<all>
<element name="varString" type="string"/>
<element name="varInt" type="int"/>
</all>
</complexType>
</schema>
</types>
WSDL: Message
• Message: abstract, typed definition of the data
being sent
<message name="echoStructRequest">
<part name="inputStruct“ type="s:SOAPStruct"/>
</message>
<message name="echoStructResponse">
<part name="return" type="s:SOAPStruct"/>
</message>
WSDL: PortType
• portType: an abstract set of operations supported
by one or more endpoints
<portType name="TestPortType">
<operation name="echoStruct">
<input message="tns:echoStructRequest"/>
<output message="tns:echoStructResponse"/>
</operation>
</portType>
WSDL: Binding
•
Protocol Binding: details of how elements in PortType are converted into concrete
representations
<binding name="TestSoapBinding" type="tns:TestPortType">
<soap:binding style="rpc“ transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="echoStruct">
<soap:operation soapAction="http://test.org/"/>
<input>
<soap:body use="encoded" namespace="http://test.org/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="http://test.org/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
WSDL: Service and Port
• Service: a named collection of ports
• Port: how a binding is deployed to a particular
endpoint
<service name="TestService">
<port binding="tns:TestSoapBinding“
name="echo">
<soap:address
location="http://test.org:5049/serv/echo"/>
</port>
</service>
Three properties of a Web service
• PortType: What does the service do?
• Binding: How is the service accessed?
• Service: Where is the service located?
Web Services Stack
Service Discovery Layer: WSIL, UDDI
Service Description Layer: WSDL, RDF
Service Messaging Layer: SOAP
Service Transport Layer: HTTP, SMTP
WSDL Information Model
• Separation between
– Abstract specification
– Concrete implementation of specification
• In WSDL
– Abstract: portType + messages
– Concrete: service + port + binding
SOAP
• SOAP = HTTP + XML
• XML
– De facto standard for representing data in a
platform independent way
• HTTP
– Simple universally supported protocol
• Interoperability:
– Easily understood Network Protocol: HTTP
– Common Data Format: XML
Characteristics of SOAP
• XML based
• Internet-based
• Independent of
– Programming language
– Transport mechanism
• Can be used with protocols other than
HTTP
– SMTP: Simple Mail Transfer Protocol
– JMS: Java Message Service
Example of SOAP request
POST /serv/echo HTTP/1.1
Host: www.test.org
Content-Type: text/xml
Content-Length: 357
SoapAction:” http://test.org/”
<SOAP-ENV:Envelope
xmlns:SOAP-ENV = http://schemas…envelope”
SOAP-ENV:encodingStyle=“http://…/encoding”>
<SOAP-ENV:Body>
<m:echoStructRequest xmlns:m=“http://test.org/”>
<inputStruct>
<varString>Stay Classy, San Diego!</varString>
<varInt>2006</varInt>
</inputStruct>
</m:echoStructRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Example of SOAP response
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 343
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=“http://…/envelope/”
SOAP-ENV:encoding=“http://…/encoding/”>
<SOAP-ENV:Body>
<m:echoStructResponse xmlns=“http://../”>
<return>
<varString>I am Ron Burgundy?</varString>
<varInt>2006</varInt>
</return>
</m:echoStructResponse>
</SOAP-ENV:Body>
</SOAP-Env:Envelope>
Web Service Toolkits
• Apache Axis: http://ws.apache.org/axis/
– One of the most popular toolkits
– User by several projects here like NBCR,
GEON, CAMERA, GLEON
• Microsoft .NET:
http://msdn.microsoft.com/webservices/
• SUN: http://java.sun.com/webservices/
• Several other lightweight implementations:
XSUL, ZSI (Python), SOAP::Lite (Perl)
Writing a Web Service: Apache Axis
• Define a Web service interface
– Use WSDL to define port types, messages,
and data types
• Use a stub compiler to generate Java
sources
– WSDL2Java generates client and server side
bindings from the WSDL
– Also generates Web Services Deployment
Descriptors (WSDD)
Writing a Web Service: Apache Axis (contd.)
• Implement the service implementation (serverside)
• Deploy the service into a Container
– Jakarta Tomcat: http://tomcat.apache.org/
– Hosting environment - provides desirable features
such as reliability, scalability, security, etc
• Write custom clients based on the generated
stubs
– Can also write clients in other languages, viz. Python,
Javascript, Perl, etc
Summary
• Hopefully, we have a better idea of what
Web services are
– What? How? Where?
• Next, we will see how Web services are
applicable to the scientific community