Title: Remote%20Procedure%20Calls%20and%20Web%20Services
1Remote Procedure Calls and Web Services
- Zachary G. Ives
- University of Pennsylvania
- CIS 455 / 555 Internet and Web Systems
- June 5, 2018
2Today
- Reminder HW2 Milestone 2 due tonight
- HW3 pre-release today
3What Does MapReduce Do Well?
- What are its strengths?
- What about weaknesses?
4MapReduce is a ParticularProgramming Model
- But its not especially general (though things
like Pig Latin improve it) - Suppose we have autonomous application components
that wish to communicate - Weve already seen a few strategies
- Request/response from client to server
- HTTP itself
- Asynchronous messages
- Router gossip protocols
- P2P finger tables, etc.
- Are there general mechanisms and principles?
- (Of course!)
- Lets first look at what happens if we need
in-order messaging
5Communication Mechanisms
- Weve already seen a few
- Request/response from client to server
- HTTP itself
- Asynchronous messages
- Router gossip protocols
- P2P finger tables, etc.
- Are there general mechanisms and principles?
- (Of course!)
- Lets first look at what happens if we need
in-order messaging
6Message-Queuing Model (1)
- Four combinations for loosely-coupled
communications using queues.
2-26
7Message-Queuing Model (2)
- Basic interface to a queue in a message-queuing
system.
Primitive Meaning
Put Append a message to a specified queue
Get Block until the specified queue is nonempty, and remove the first message
Poll Check a specified queue for messages, and remove the first. Never block.
Notify Install a handler to be called when a message is put into the specified queue.
8General Architecture of a Message-Queuing System
(1)
- The relationship between queue-level addressing
and network-level addressing.
9General Architecture of a Message-Queuing System
(2)
- The general organization of a message-queuing
system with routers.
2-29
10Benefits of Message Queueing
- Allows both synchronous (blocking) and
asynchronous (polling or event-driven)
communication - Ensures messages are delivered (or at least
readable) in the order received - The basis of many transactional systems
- e.g., Microsoft Message Queue (MMQ), IBM
MQseries, etc.
11Some Common Modes of Building Distributed
Applications
- Data-intensive
- XQuery (fetch XML from multiple sites, produce
new XML) - Turing-complete functional programming language
- Good for Web Services not much support for I/O,
etc. - MapReduce (built over DHT or distributed file
system) - Single filter (map), followed by single
aggregation (reduce) - Languages over it Sawzall, Pig Latin, Dryad,
- Message passing / request-response
- e.g., over a DHT, sockets, or message queue
- Communication via asynchronous messages
- Processing in message handler loop
- Function calls
- Remote procedure call / remote method invocation
12Fully Synchronous Request/Response Remote
Procedure Calls
- Remote procedure calls have been around forever,
including - COM
- CORBA
- Java RMI
- The basic idea put a function elsewhere in the
system, call in distributed fashion but using
standard languages, methods - An RPC API defines a format for
- Initiating a call on a particular server,
generally in a reliable way - Sending parameters (marshalling) to the server
- Receiving a return value, which may require
marshalling as well - And an RPC call is synchronous (i.e., it
generally blocks)
13A Remote Procedure Call Visualized
server waits for req.
function
server is busy
RPCServer
request
RPC Client
working
client blocks
time
14How RPC Generally Works
- You write an application with a series of
functions - One of these functions, F, will be distributed
remotely - You call a stub generator
- A caller stub emulates the function F
- Opens a connection to the server
- Requests F, marshalling all parameters
- Receives Fs return status and parameters
- A server stub emulates the caller
- Receives a request for F with parameters
- Unmarshals the parameters, invokes F
- Takes Fs return status (e.g., protection fault),
return value, and marshals it back to the client
15Passing Value Parameters
- Steps involved in doing remote computation
through RPC
2-8
16RPC Components
- Generally, you need to write
- Your function, in a compatible language
- An interface definition, analogous to a C header
file, so other people can program for F without
having its source - Generally, software will take the interface
definition and generate the appropriate stubs - (In the case of Java, RMIC knows enough about
Java to run directly on the source file) - The server stubs will generally run in some type
of daemon process on the server - Each function will need a globally unique name or
GUID
17Parameter Passing Can Be TrickyBecause of
References
- The situation when passing an object by reference
or by value.
2-18
18What Are the Hard Problems with RPC? Esp.
Inter-Language RPC?
- Resolving different data formats between
languages (e.g., Java vs. Fortran arrays) - Reliability, security
- Finding remote procedures in the first place
- Extensibility/maintainability
- (Some of these might look familiar from when we
talked about data exchange!)
19Web Services
- Goal provide an infrastructure for connecting
components, building applications in a way
similar to hyperlinks between data - Its another distributed computing platform for
the Web - Goal Internet-scale, language-independent,
upwards-compatible where possible - This one is based on many familiar concepts
- Standard protocols HTTP
- Standard marshalling formats XML-based, XML
Schemas - All new data formats are XML-based
20One Alternative REST(Representational State
Transfer)
- Not really a standard a style of development
- Data is represented in XML, e.g., with a schema
- Function call interface uses URIs
- Server is to be stateless
- And the HTTP request type specifies the operation
- e.g., GET http//my.com/rest/service1
- e.g., POST http//my.com/rest/service1 body
adds the body to the service
21The Standard for Web Services Three Parts
- Wire / messaging protocols
- Data encodings, RPC calls or document passing,
etc. - Describing what goes on the wire
- Schemas for the data
- Service discovery
- Means of finding web services
22The Protocol Stacks of Web Services
High-levelstate transition msgingdiagramsbetw
een modules
WS-AtomicTransaction,WS-Coordination
Other extensions
Orchestration (WS-BPEL)
SOAP Attachments
WS-Addressing
MessageSequencing
WS-Security
Service Capabilities(WS-Capability)
SOAP, XML-RPC
Directory (UDDI)
Service Description (WSDL)
XML
XML Schema
Inspection
Wire Format Stack
Description Stack
Discovery Stack
Enhanced expanded from a figure from IBMs Web
Services Insider,http//www-106.ibm.com/develope
rworks/webservices/library/ws-ref2/
23Messaging Protocol SOAP
- Simple Object Access Protocol XML-based format
for passing parameters - Has a SOAP header and body inside an envelope
- As a defined HTTP binding (POST with content-type
of application/soapxml) - A companion SOAP Attachments encapsulates other
(MIME) data - The header defines information about processing
encoding, signatures, etc. - Its extensible, and theres a special attribute
called mustUnderstand that is attached to
elements that must be supported by the callee - The body defines the actual application-defined
data
24A SOAP Envelope
- ltSOAP-ENVEnvelopexmlnsSOAP-ENVhttp//www.w3.o
rg/2001/12/soap-envelopexmlnsxsdhttp//www.w3
.org/www.w3.org/2001/XMLSchema-instancegt - ltSOAP-ENVHeadergt
- lttTransaction xmlnstwww.mytrans.com
SOAP-ENVmustUnderstand1 /gt - lt/SOAP-ENVHeadergt
- ltSOAP-ENVBodygt
- ltmPlaceOrder xmlnsmwww.somewhere/theregt
ltorderno xsitypexsdstringgt12lt/ordernogtlt/mPl
aceOrdergt - lt/SOAP-ENVBodygt
- lt/SOAP-ENV Envelopegt
25Making a SOAP Call
- To execute a call to service PlaceOrder
- POST /PlaceOrder HTTP/1.1
- Host my.server.com
- Content-Type application/soapxml
charsetutf-8 - Content-Length nnn
- ltSOAP-ENVEnvelopegt
-
- lt/SOAP-ENVEnvelopegt
26SOAP Return Values
- If successful, the SOAP response will generally
be another SOAP message with the return data
values, much like the request - If failure, the contents of the SOAP envelop will
generally be a Fault message, along the lines
of - ltSOAP-ENVBodygt
- ltSOAP-ENVFault xmlnsmynamespacegt
- ltfaultcodegtSOAP-ENVClientlt/faultcodegt
- ltfaultstringgtCould not parse messagelt/faultstrin
ggt
27How Do We Declare Functions?
- WSDL is the interface definition language for web
services - Defines notions of protocol bindings, ports, and
services - Generally describes data types using XML Schema
- In CORBA, this was called an IDL
- In Java, the interface uses the same language as
the Java code
28A WSDL Service
Service
Port
Port
Port
PortType
PortType
PortType
Operation
Operation
Operation
Operation
Operation
Operation
Binding
Binding
Binding
29Web Service Terminology
- Service the entire Web Service
- Port maps a set of port types to a transport
binding (a protocol, frequently SOAP, COM, CORBA,
) - Port Type abstract grouping of operations, i.e.
a class - Operation the type of operation
request/response, one-way - Input message and output message maybe also
fault message - Types the XML Schema type definitions
30Example WSDL
- ltservice namePOServicegt
- ltport bindingmyPOBindinggt
- ltsoapaddress locationhttp//yyy9000/POSvc/gt
- lt/portgt
- lt/servicegt
- ltbinding xmlnsmy namePOBindinggt
- ltsoapbinding stylerpc transporthttp//www.w3
.org/2001/... /gt - ltoperation namePOrdergt
- ltsoapoperation soapActionPOService/POBinding
stylerpc /gt - ltinput namePOrdergt
- ltsoapbody useliteral namespacePOService
/gt - lt/inputgt
- ltoutput namePOrderResultgt
- ltsoapbody useliteral namespacePOService
/gt - lt/outputgt
- lt/operationgt
- lt/bindinggt
31JAX-RPC Java and Web Services
- To write JAX-RPC web service endpoint, you
need two parts - An endpoint interface this is basically like
the IDL statement - An implementation class your actual code
- public interface BookQuote extends
java.rmi.Remote - public float getBookPrice(String isbn) throws
java.rmi.RemoteException -
- public class BookQuote_Impl_1 implements
BookQuote - public float getBookPrice(String isbn) return
3.22
32Different Options for Calling
- The conventional approach is to generate a stub,
as in the RPC model described earlier - You can also dynamically generate the call to the
remote interface, e.g., by looking up an
interesting function to call - Finally, the DII (Dynamic Instance Invocation)
method allows you to assemble the SOAP call on
your own
33Creating a Java Web Service
- A compiler called wscompile is used to generate
your WSDL file and stubs - You need to start with a configuration file that
says something about the service youre building
and the interfaces that youre converting into
Web Services
34Example Configuration File
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltconfiguration xmlns"http//java.sun.com/xml/ns/j
ax- rpc/ri/config"gt - ltservice name"StockQuote" targetNamespace"http/
/example.com/stockquote.wsdl" typeNamespace"http
//example.com/stockquote/types"
packageName"stockqt"gt - ltinterface name"stockqt.StockQuoteProvider"
servantName"stockqt.StockQuoteServiceImpl"/gt - lt/servicegt
- lt/configurationgt
35Starting a WAR
- The Web Service version of a Java JAR file is a
Web Archive, WAR - Theres a tool called wsdeploy that generates WAR
files - Generally this will automatically be called from
a build tool such as Ant - Finally, you may need to add the WAR file to the
appropriate location in Apache Tomcat (or
WebSphere, etc.) and enable it - See http//java.sun.com/developer/technicalArticle
s/WebServices/WSPack2/jaxrpc.html for a detailed
example
36Finding a Web Service
- UDDI Universal Description, Discovery, and
Integration registry - Think of it as DNS for web services
- Its a replicated database, hosted by IBM, HP,
SAP, MS - UDDI takes SOAP requests to add and query web
service interface data
37Whats in UDDI
- White pages
- Information about business names, contact info,
Web site name, etc. - Yellow pages
- Types of businesses, locations, products
- Includes predefined taxonomies for location,
industry, etc. - Green pages what we probably care the most
about - How to interact with business services business
process definitions etc - Pointer to WSDL file(s)
- Unique ID for each service
38Data Types in UDDI
- businessEntity top-level structure describing
info about the business - businessService name and description of a
service - bindingTemplate how to access the service
- tModel (t type/technical) unique identifier
for each service-template specification - publisherAssertion describes relationship
between businessEntities (e.g., department,
division)
39Relationships between UDDI Structures
publisherAssertion
n
tModel
2
businessEntity
n
1
m
n
businessService
bindingTemplate
1
n
40Example UDDI businessEntity
- ltbusinessEntity businessKey0123
xmlnsurnuddi-orgapi_v2gt - ltdiscoveryURLsgt
- ltdiscoveryURL useTypebusinessEntitygt
- http//uddi.ibm.com/registery/uddiget?businessKey
0123... - lt/discoveryURLgt
- ltnamegtMy Bookslt/namegt
- ltdescriptiongtTechnical Book Wholesalerlt/descriptio
ngt -
- ltbusinessServicesgt
-
- lt/businessServicesgt
- ltidentifierBaggt
- lt! keyedReferences to tModels ?
- lt/identifierBaggt
- ltcategoryBaggt lt/categoryBaggt
- lt/businessEntitygt
41UDDI in Perspective
- Original idea was that it would just organize
itself in a way that people could find anything
they wanted - Today UDDI is basically a very simple catalog of
services, which can be queried with standard APIs - Its not clear that it really does what people
really want they want to find services like Y
or that do Z
42The Problem With UDDI and Plenty of Other
Situations
- Theres no universal, unambiguous way of
describing what I mean - Relational database idea of normalization
doesnt convert concepts into some normal form
it just helps us cluster our concepts in
meaningful ways - Knowledge representation tries to encode
definitions clearly but even then, much is up
to interpretation - The best we can do describe how things relate
- pollo chicken poulet ? ? ji ??????
murg - Note that this mapping may be imprecise or
situation-specific! - Calling someone a chicken, vs. a chicken thats a
bird
43This Brings Us to XQuery,Whose Main Role Is to
Relate XML
- Suppose we define an XML schema for our target
data and our source data - Can directly translate between XML schemas or
structures - Describes a relationship between two items
- Transform 2 into 6 by add 4 operation
- Convert from S1 to S2 by applying the query
described by view V - Often, we dont need to transfer all data
instead, we want to use the data at one source to
help answer a query over another source
44Lazy Evaluation A Virtual View
Browser/App
Server(s)
Source1.xml
XQuery
VirtualXML doc.
QueryForm
XQuery
Source2.xml
Source1.xml
XSLT
HTML
QueryResults
ComposedXQuery
Source2.xml
45Lets Look at Some SimpleMappings
- Beginning with examples of using XQuery to
convert from one schema to another, e.g., to
import data - First lets review what our mappings need to
accomplish
46Challenges of Mapping Schemas
- In a perfect world, it would be easy to match up
items from one schema with another - Each element would have a simple correspondence
to an element in the other schema - Every value would clearly map to a value in the
other schema - Real world as with human languages, things
dont map clearly! - Different decompositions into elements
- Different structures
- Tag name vs. value
- Values may not exactly correspond
- It may be unclear whether a value is the same
- Its a tough job, but often things can be mapped
47Example Schemas
- Bobs Movie Database
- ltmoviegt lttitlegtlt/titlegt ltyeargtlt/yeargt
ltdirectorgtlt/directorgt lteditorgtlt/editorgt
ltstargtlt/stargtlt/moviegt
- Marys Art List
- ltworkOfArtgt ltidgtlt/idgt lttypegtlt/typegt
ltartistgtlt/artistgt ltsubjectgtlt/subjectgt
lttitlegtlt/titlegtlt/workOfArtgt
Want to map data from one schema to the other
48Mapping Bobs Movies ? Marys Art
- Start with the schema of the output as a
template - ltworkOfArtgt ltidgtilt/idgt lttypegtylt/typegt
ltartistgtalt/artistgt ltsubjectgtslt/subjectgt
lttitlegttlt/titlegtlt/workOfArtgt - Then figure out where to find the values in the
source, and create XPaths
49The Final Schema Mapping
- Marys Art ? Bobs Movies
- for m in doc(movie.xml)//movie, a in
m/director/text(), i in m/title/text(),
t in m/title/text()return ltworkOfArtgt
ltidgtilt/idgt lttypegtmovielt/typegt
ltartistgtalt/artistgt lttitlegttlt/titlegt lt/work
OfArtgt
Note the absence of subjectWe had no reasonable
source,so we are leaving it out.