The term 'web services' has been bandied around so long without anything the general public has seen to show for it, they probably shouldn't be blamed for wondering if it's anything more than vapourware. As developers of course, just the increase in system interoperability is enough to warrant continuing research time into the topic, and with Microsoft, IBM, Sun and a host of others backing web services, it's not going to go away.
As a DevelopMentor branded book, Yasser's tome seemed as good a place as any to start learning about web services and I'm happy to say that it doesn't disappoint. Even though I'm a C# fan and his examples are exclusively in VB .NET or VB6, the text is easy to follow and packed with useful information and tips obviously gained from lengthy immersion in the subject.
Chapter 1 is a quick introduction to the web service base platform, the standards it comprises, how they've been derived and how to write your first web service. It concludes with a short piece on when and when not to use web services. Essentially just an introduction to topics that are covered in the rest of the book, it's a quick 101 on the subject.
Chapters 2 to 4 look in greater depth at three of the standards that make up the base platform - XSD, SOAP and WSDL. At 160 pages for the three topics, they are unsurprisingly covered in great detail and in a clear manner that leaves you with only thoughts of what to write first instead of the questions the chapters haven't answered. Sometimes the answers are in between the lines for you to figure out yourself but they are there.
With the base technologies out of the way, Chapters 5 and 6 demonstrate its two 'web service toolkits', the SOAP Toolkit for COM developer and the .asmx functionaltity that's part of ASP.NET. The COM chapter is particularly good, working through both high and low-level APIs in some detail but without forgetting that it's introducing readers to something new and assuming prior knowledge.
Chapters 7 to 9 build on the platform built in chapter 6, teaching us how .NET allows us to work with SOAP Headers and Faults, and how to move data around with web services using ADO .NET. These two subjects are separated by a look at how we can use a WSDL document and the wsdl tool in .NET as a start point to create both an abstract service implementation and service proxies for our clients.
Again these are good chapters, especially the one on ADO.NET, but the other two seemed a little isolated. SOAP Headers are vital to the growth of web services and SOAP Faults are necessary for exception handling, but the discussion seemed to exist in its own small chapter simply because it didn't fit anywhere else. Why not expand the discussion to include or at least give a hint as to the headers that will be standardized soon. Likewise, in a chapter which talks about interface generation from a WSDL document, why not also mention the automatic generation of classes from the schema inside the WSDL file? A missed opportunity, but not one that really detracted from the chapter as a whole.
Finally in Chapter 10, we learn how to extend the .NET web service platform using SOAP Extensions. This is the most challenging chapter of the book, but again it's explained well and Yasser provides some really good examples here to illustrate every point he makes.
UDDI is the topic for Chapter 11. Like chapters 2 to 4, this chapter looks at the surface of UDDI (what it is, typical usage scenarios, how to publish service info to a UDDI server), but quickly heads underneath to work through its main data structures and demonstrate how to use the UDDI API. This chapter was the biggest eye-opener for me, although the level of its discourse fluctuated throughout which sometimes annoyed.
Last but one, Chapter 12 looks very practically at the key to web service - interoperability - by taking a few of the other SOAP Toolkits available today (COM, Java, DHTML) and trying to create clients on the .NET services already created in the book. There's a neat discussion for each kit, noting any difficulties that might be encountered when working cross-kits, although quite naturally there's only a taster here on this subject rather than a full exposé which would take another book.
Finally, Chapter 13 is a case study demonstrating the web service specific tools in Visual Studio .NET and the application of some of the concepts made plain in the rest of the book. The service is .NET and submitted to UDDI while the client is built in VB6. This was a nice wrap up to the book and a good way to finish up the other pieces of the puzzles (tools, procedures, code, etc) that hadn't been explained so far.
Overall, this is a very good book for .NET developers, for COM developers less so. The material is strong throughout and with only a few editorial quibbles and the overlarge body text font that irk, it's well worth the money and a recommended buy for web service developers, new and experienced. Even C# developers will get a lot out of it and the examples are reasonably simple to translate.