I like the book's emphasis on consuming web services from different types of clients. The coverage on SOAP extensions is interesting.
However, going through the book has been very frustrating for the following reasons:
1) Code examples (on page 60, 154, 281, etc), instructions (on page 66, 77, etc), and notes (on page 79, 252, etc) failed on the Visual Studio.NET release version (also known as RTM - Release To Manufacturing). Looks like the book was based on VS.NET Beta. I wish the book had been up front by warning its readers. After all, people can no longer obtain VS.NET Beta.
2) Page 41 mentioned an URL for downloading the book's code samples. Thus, after encountering the first beta-related code error, I downloaded the online code samples. I was hoping that, after the book went to print, the code samples had been revised to work in the release version of VS.NET. But they were not! When I last checked on 10/May/2002, the errors were still in the online code samples.
3) Code samples (on page 60, 350, and 383) have syntax errors and therefore could not even compile in the way they were shown.
4) There are numerous text errors through out the book. The most glaring and incredible is the one in chapter 8. That chapter is supposed to examine the WSDL produced for code previously used in chapter 4 and 5. However, what was actually shown and commented on was the WSDL of code in chapter 2 and 3, not 4 and 5. What made the error even more confusing was the last paragraph on page 131. It said, "You might be wondering how developerEstimate and developerEstimateResponse got added to the [WSDL] document when they were not part of the original Web Service you created in Chapter 4 and 5. The .NET framework's created them..." For those who haven't read the book, "developerEstimate" was a Web Method in the Web Service created in chapter 2 and 3, but not in chapter 4 and 5. Chapter 4 and 5's Web Service does have a Web Method, but it is called "CalculateEstimate" on page 69.
5) It appears that not all of the recommended ways of doing things had been verified. For instance, chapter 19 recommended using WaitHandle.WaitAll in a Windows Form. But when the button2_Click code on page 315 was executed, Windows returned the error "WaitAll for multiple handles on an STA thread is not supported." That was because .NET Windows Forms use native Win32 Windows Forms which use Single Thread Apartment(STA) model.