As you saw in Chapter 4, "Basic Web Services," Visual Studio .NET makes it very easy to create and consume Web services. Whether you use the wsdl.exe tool explicitly or use a Web reference to call it implicitly, your client applications can use WSDL to create fully-functional proxy classes that seamlessly tie them to Web services servers. But you might find situations in which this automatic connection isn't quite flexible enough to do everything that you want. In this chapter, you'll learn about three advanced Web service techniques:
Custom wire formatting
Each of these techniques has its own set of applications. SOAP extensions enable you to modify the SOAP messages between client and server by inserting your own custom code into the message-creation process. Usually SOAP extensions are deployed in pairs, with matching extensions on client and server.
Asynchronous calls are a client-side technique for making more efficient use of Web services. When your code calls a Web method asynchronously, it is not blocked while waiting for the results of the call. Although the proxy classes created by wsdl.exe automatically enable asynchronous calls, you'll need to understand the various techniques for using these calls.
Finally, custom wire formatting enables you to dictate the formatting of the SOAP messages used by a Web service (the messages that are sent "over the wire"). This is most useful when you're developing a Web service that must interoperate with client software that expects messages in a particular format. By using attributes within your code, you can control the formatting of these messages precisely.