150 likes | 1.13k Views
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
E N D
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