Chapter 3:Programming Web ServicesService-Oriented Computing: Semantics, Processes, Agents– Munindar P. Singh and Michael N. Huhns, Wiley, 2005
Chapter 3 2Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Highlights of this Chapter Representational State Transfer
(ReST or REST) Developing and Using Web
Services Web Service Interoperability
Chapter 3 3Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Representational State Transfer REST is an architectural style for
networked systems that constrains the connector semantics (not the component semantics)
The Web is a network of hyperlinked resources A resource is anything identified by a URI
A Web application works as a state machine
A client selecting a link is a state transition, resulting in receiving the next page (next state) of the application
Chapter 3 4Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and Michael Huhns
Characteristics of REST Client-Server Statelessness: requests cannot take advantage
of stored contexts on a server Great for load balancing
Caching: responses can be labeled as cacheable
Uniform interface – URIs, hypermedia Layered components Focus on resources as opposed to methods:
Read, construct, update a resource representation Well-suited to hypermedia applications
HTTP Verbs Popular verbs
Get: query (no side effects) Post: update Put Delete
Idempotent operations Multiple executions = one execution
Challenge: the specification imposes requirements but with no way to judge compliance
Especially, can use Get and Post instead of much of SOAP
Chapter 3 5Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Chapter 3 6Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Software for Open Environments Tempting to simply lift current
database and programming techniques for open environments
Popular pitfall (blame the tools for it) Think of objects (get and set methods);
use Web services standards to invoke them
Poor performance Tight coupling
Error: services at too fine a granularity
Chapter 3 7Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Suppose you want to sell cameras over the Web, debit a credit card, and guarantee next-day delivery
Your application must update sales database debit the credit card send an order to the shipping department receive an OK from the shipping department
for next-day delivery update an inventory database
Problems: Some steps complete but not all
Simple B2C Web Service Example
InternetSellCameraWeb Service
Shipping Database
Sales Database
Inventory Database
User
Chapter 3 8Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
“Traditional” B2C Problems
What if the order is shipped, but the debit fails?
What if the debit succeeds, but the order was never entered or shipped?
Chapter 3 9Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Traditional (Database) Approach
A traditional database approach works only for a closed environment:
Transaction processing (TP) monitors (such as IBM’s CICS, Transarc’s Encina, BEA System’s Tuxedo) can ensure that all or none of the steps are completed, and that systems eventually reach a consistent state
But what if the user’s modem is disconnected right after he clicks on OK? Did the order succeed? What if the line went dead before the acknowledgement arrives? Will the user order again?
The TP monitor cannot get the user into a consistent state!
Chapter 3 10Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Approach for Open Environment
Server application could send email about credit problems, or detect duplicate transactions
Downloaded applet could synchronize with server after broken connection was restored, and recover transaction; applet could communicate using http, or directly with server objects via CORBA/IIOP or RMI
If there are too many orders to process synchronously, they could be put in a message queue, managed by a Message Oriented Middleware server (which guarantees message delivery or failure notification), and customers would be notified by email when the transaction is complete
The server behaves like an agent!
Chapter 3 11Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Requirements Cross-enterprise processes
Autonomy leading to updates by “whim”
Exception handling Revisions leading to updates by
necessity Conversations and long-lived
transactions Contracts among parties involved
Chapter 3 12Service-Oriented Computing: Semantics, Processes, Agents - Munindar Singh and
Michael Huhns
Chapter 3 Summary Tools help with low-level details
Agreeing on standards is more important than the standards themselves
Should conceptualize interactions in a manner compatible with the Web architecture Can simplify from SOAP in many cases
The above is a small point anyway Bigger challenges are in ensuring larger-scale
interactions, ensuring integrity, handling exceptions, …
Sophisticated programming models are emerging