1541-4922/04/$25.00 © 2004 IEEE
Published by the IEEE Computer Society
Standards for Talking Computers
Fernando Berzal
Web Services recently emerged as the ideal choice for building distributed applications in heterogeneous environments where competing technologies (such as the Object Management Group's Corba, Microsoft's Distributed Component Object Model, or Sun's Java Remote Method Invocation) never really caught on. Web Services employ XML to facilitate communication in distributed heterogeneous systems. XML's easy-to-interpret format is perfect for building interoperable systems. In the unlikely case that an XML parser doesn't already exist in your programming environment, you can implement it in a breeze. Moreover, XML syntax is human-readable-a highly desirable property for debugging sessions. In short, using XML simplifies computer-computer interaction so that distributed applications can more easily share data.
WEB SERVICES IN THE .NET FRAMEWORK
In .NET Web Services: Architecture and Implementation, Keith Ballinger clearly introduces Web Services and related standards as the way to get access to application logic through Internet standards. SOAP is the de facto standard at the heart of Web Services, providing the messaging protocol for building them. It's normally used on top of W3C recommendations, such as HTTP, to capitalize on their abilities to deal with failures and latency in network communications. Although SOAP makes XML Web Services work, you need standards to describe them, such as the Web Services Description Language (WSDL), and standards to discover existing services, such as Universal Description, Discovery, and Integration (UDDI). These standards' modular design makes them flexible enough to evolve over time. In fact, the alphabet soup surrounding Web Services is due to the modular design of their baseline specifications, which are presented in the first part of Ballinger's book and treated in detail in separate chapters.
As a logical consequence of this book's inclusion in the Microsoft .NET Development Series, its core-about 100 pages-is devoted to Web Services using Microsoft's programming platform. It covers implementing ASP.NET Web Services in detail. The .NET class library includes standard classes that you can use to build Web Services. Using the WebMethod attribute is the simplest way to build a Web Service in the .NET platform, as the book clearly describes. It also discusses how to configure Web Services in order to control the format of the actual SOAP messages that are exchanged.
After introducing Web Services, the book discusses accessing such services from .NET applications. You usually build such clients from WSDL descriptions, but the book also explains manually creating Web Service clients, providing a thorough understanding of the ASP.NET Web Services innards.
For complete coverage of Web-service-related topics in the .NET platform, a whole chapter covers the .NET XML serialization mechanism-somewhat a misnomer because it maps class structure to XML Schemas. Unlike Java serialization, XML serialization does allow the operation of Web Service clients whose version doesn't match that of the Web Service provider. Ballinger even describes how you can use SOAP extensions to monitor and modify SOAP messages on the fly.
Web Services Standards and Design
After giving the whole picture of Web Services in the .NET platform, the author devotes more than half the book to the standards that make Web Services workable. Although SOAP is transport independent, one chapter describes the most common transport protocols SOAP is used on, with examples adapted to the .NET framework. Unfortunately, it doesn't discuss using those protocols to build .NET Web Services, and the chapter boils down to a tutorial on using sockets in the .NET framework.
A good overview on XML and XML Schema describes the format by which data are transferred when using Web Services. The book also discusses the .NET standard classes that let the programmer deal with XML documents. One chapter also examines in great detail the SOAP protocol-the enveloping mechanism for sending data via XML. Another chapter discusses WSDL anatomy and its use in the .NET platform, making clear that implementation details (that is, object classes) shouldn't dictate Web Services interfaces (that is, the SOAP wire format). Another chapter presents UDDI, which provides the yellow pages for Web Services by means of a standardized SOAP-based database.
This part of the book also includes brief descriptions of other Web-Service-related standards that might interest developers, from Web Services Routing to Web Services Security. It even mentions some yet-to-be-developed standards to provide an encompassing view of the Web Services world.
Last but not least, the final chapter gives tips on Web Services design. The book objectively describes how the server incurs a performance penalty to improve client interoperability. This penalty is tolerable because of the significant flexibility benefits. On the one hand, you can often obviate performance problems using asynchronous calls. On the other hand, Web Services provide a loosely coupled interprocess-communication mechanism that makes versioning easy. If you respect the XML document-encoding format, Web Services aren't only language independent but also implementation independent.
This book is a good overview of the standards that make it possible for computers to talk to each other using XML as their lingua franca. For developers who work with .NET, Ballinger provides valuable insights into using and implementing .NET Web Services-insights that are very hard to find in other sources.
Fernando Berzal is an assistant professor in the Department of Computer Science and Artificial Intelligence at the University of Granada and a cofounder of iKor Consulting. Contact him at berzal@acm.org.