an introduction to web services sriram krishnan, ph.d. sriram@sdsc.edu

Post on 01-Apr-2015

226 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

An Introduction to Web ServicesAn Introduction to Web Services

Sriram Krishnan, Ph.D.sriram@sdsc.edu

Web Services: DefinitionWeb 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: RequirementsWeb 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: FeaturesWeb 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 ArchitectureWeb Services Architecture

ServiceRegistry

ServiceRequestor

ServiceProvider

Lookup Publish

Interact

Need to know three things about WSNeed to know three things about WS

• What does the service do?

• How is the service accessed?

• Where is the service located?

WSDLWSDL

• 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 StackWeb Services Stack

Service Discovery Layer

Service Description Layer

Service Messaging Layer

Service Transport Layer

WSDL ElementsWSDL Elements

• PortTypes• Message• Types• Binding• Port• Service

SoapStruct echoStruct(SoapStruct ss)

WSDL: TypesWSDL: 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: MessageWSDL: 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: PortTypeWSDL: 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: BindingWSDL: 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 PortWSDL: 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 serviceThree 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 StackWeb Services Stack

Service Discovery Layer: WSIL, UDDI

Service Description Layer: WSDL, RDF

Service Messaging Layer: SOAP

Service Transport Layer: HTTP, SMTP

WSDL Information ModelWSDL Information Model

• Separation between– Abstract specification – Concrete implementation of specification

• In WSDL– Abstract: portType + messages– Concrete: service + port + binding

SOAPSOAP

• 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 SOAPCharacteristics 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 Example of SOAP request

POST /serv/echo HTTP/1.1Host: www.test.orgContent-Type: text/xmlContent-Length: 357SoapAction:” http://test.org/”

<SOAP-ENV:Envelopexmlns: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 responseExample of SOAP response

HTTP/1.1 200 OKContent-Type: text/xmlContent-Length: 343

<SOAP-ENV:Envelopexmlns: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 ToolkitsWeb 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 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.) Writing a Web Service: Apache Axis (contd.)

• Implement the service implementation (server-side)

• 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

SummarySummary

• 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

top related