Iverson, Will. Real world Web services. Sebastopol, CA: O'Reilly, 2004. 207 p. ISBN 0-596-00642-X. $29.95 £20.95
Iverson has written a very useful overview of Web services. Many desktop applications and Web pages exploit Web services to obtain readily available Web information. If that sounds arcane, consider that anyone who has ever played a music CD on their computer has probably unwittingly used a Web service that supplied the artist, album and track listing information, or anyone who has ever purchased a book online has had the shipping cost calculated in real time by a Web service. Web services represent the behind-the-scenes building blocks of the nascent semantic Web. The Information Research community has already been alerted to Web services ("Watch This: Web Services" volume 8, number 1, 2002) that outlined the motivation to build Web services and sketched a little of their technology. The column suggested that Web services would flourish in 'communities of trust'. At this moment on the Web, the major centers of trustworthy interconnectedness would be the Web-based enterprises of Amazon.com, Google, FedEx, eBay and so on, all of whom provide Web services and are included in this book. In short, right now Google provides us with a Web service and invites us to stitch it into the applications we build. Iverson's book is useful by showing us how to do exactly that.
Iverson's ambition is to provide a highly conceptual approach to Web services and their technologies. In the first several chapters he sketches how the basic client server paradigms evolved towards the Web server model. Especially refreshing is his ironic detachment in pointing out all sorts of maintenance problems that may beleaguer distributed and interdependent systems such as error handling, protocol conflict, security, bandwidth and latency issues, and so on. At the same time, he convinces that Web services are indispensible to doing a high-volume business on the Web. Imagine receiving numerous PayPal alerts daily that each require a responding confirmation of sale by fax. He supplies an example of an application that automates this potentially time-consuming process. The key insight of the book is found in the early chapters that bridges from the Web of static pages to the Web of active streams of information:
Once you start thinking of the Internet and networking as readable (and possibly mutable) streams of bytes, many interesting ideas become apparent. For example, certain products read and then pass along stream of bytes. A stream might alter a Web page to block pornography or generate reports on the information being sent. Another obvious example is a server application that goes out on the Internet, automatically downloads Web pages, searches for links and other information, and the builds a searchable index (such as Google.com and Internet search engines). (p. 17)
In a book designed to be a survey of current applications and potentialities, supplying the technological examples is always difficult. First, there has been considerable churing of the dominant Web services technologies and protocols in the last few years. Commonly developers either find themselves balkanized into a family of technologies (e.g., .Net or Java). Therefore, Iverson's multi-page Java examples are bound to disappoint the .Net community, as well as break up the flow of his conceptual exposition. There has also been some Darwinianism among Web services proposals that Iverson lumps together in his concluding chapter. For example, the "Watch This: Web Services" spoke approvingly of UDDI (Universal Description, Discovery and Integration) as a fundamental tool for sharing Web services. UDDI has not flourished as predicted and a more detailed treatment of the cultural or sociological limitations of Web services would have enriched the book.
Iverson presents us with eight projects that exemplify current Web service applications. The typical example builds an application that permits a user to input a book title and ISBN number, then links to Amazon.com for current prices, links to Google to find comments about the book and links to eBay for price bids. The most valuable aspect is his guide to these current Web services, his screen grabs and Web addresses. The most tiresome part of the book are the busy pages of Java code, that might be moved to an appendix or to a Web site in a future edition.
A future edition is a necessity. Web services are evolving rapidly and a book like this is no more than a snapshot of the 'real world' right now. But in acting as a pathfinder in the Web services area, Iverson has done us all a favour. I may not use his code examples, but I'm certainly going to investigate the Web services examples that he has provided.
Terrence A. Brooks