Web Services
Download
Report
Transcript Web Services
Web Services
A good choice for sharing
[ocean science] data.
Distributed Computing
Connecting systems
Transparency
Scalability
Fault Tolerance
Data Sharing Obstacles
Platforms
Languages
Transports
Data Sharing Methods
CORBA, RMI, DCOM
Problems
Goals lacked heterogeneous environment
Difficult-to-implement
Proprietary protocols
Not modular – crammed specifications
The Web Service
Defined: Process between systems
Leverage Internet standards
Passes XML messages over HTTP
Promotes
Interoperability
Perl to C++ to AppleScript…
Loose coupling
Implementation-independent & Versioning
SOAP
The Emerging Web Service
Interface to existing programs
Modular Design
Extensible – add-on distinct specs
Security
Reliability
Customizable – combine features as needed
No forced model
80+ implementations (platforms,languages)
SOAP: Requirements
Application
Application Server
SOAP Implementation
XML parser (sometimes)
SOAP: How It Works
Calls functions of existing programs
Application server knows:
Available functions
How to decode requests
How to encode responses
XML Request – invokes a function call
With function parameters (if necessary)
XML Response
Packages returned data of the function
SOAP: Getting Started
Receiving SOAP requests
Define a SOAP “Service”
Tell Server “Providing” program
How to translate data (mapping)
Sending SOAP requests
Write SOAP call
Knowing what you are receiving
What parameters to pass along (if necessary)
SOAP Example
Online Address Book
Functions:
getAddressForName( name )
addEntry( <some data> )
getAllListings()
SOAP Response: Notify Server
<isd:service …
id="urn:AddressFetcher">
<isd:provider
type="java" ...
methods="getAddressFromName addEntry getAllListings" …
class="samples.addressbook.AddressBook" …
…
<isd:mappings>
…
</isd:service>
SOAP Request: Making the Call
URL url = new URL("http://ragnarok.whoi.edu:7001/soap/servlet/rpcrouter");
…
Call call = new Call(); …
call.setTargetObjectURI("urn:AddressFetcher");
call.setMethodName("getAddressFromName");
…
Vector params = new Vector();
params.addElement( … "John B. Good“ …);
call.setParams(params);
Response response = call.invoke(url);
Parameter ret = response .getReturnValue();
…
<do something>
SOAP: In Action
getAddressFromName(“John B. Good”)
Try it
addEntry(“John Doe ...”)
Try it
getAddressFromName(“John Doe”)
Try it
getAllListings()
Try it
SOAP: Drawbacks
Performance
XML lacks efficiency of parsing
XML Infoset (W3C recommendation)
HTTP limitations
Popular Web Services
Product
Apache SOAP
GLUE
WASP
SOAP::Lite
SOAPx4
Support OS
UNIX, Windows
UNIX, Windows
UNIX, Windows
UNIX, Windows
UNIX
Language
Java
Java
C++
Perl
PHP