Unwrapping Microsoft's SOAP Toolkit
|"Web services let you provide information from other sites rather than developing the resources yourself."|
SOAP, the Simple Object Access Protocol, is gaining steam as a way to make method calls across the Web. Based on XML, it allows application and object activation across platforms, a feature crucial to distributed Web applications. Microsoft has been one of the biggest proponents of the proposed SOAP standard, and is actively designing it into the next generation of their Web and development tools. The company has released the SOAP Toolkit, the preview edition of tools they hope will banish script from the Web forever and make Visual Basic and Visual C++ the Web development tools of choice. SOAP itself and the tools in the SOAP toolkit seem to have what it will take to make this kind of a fundamental change to the Web.
The toolkit is not a separate product in itself, but is a technology preview of some of the features the company is developing for its next version of Visual Studio and Web servers. It supports Web Services, programmable URL addresses that can process and return data. For example, you can develop a single Web page with the current time in Malaysia, the weather in Sri Lanka, and translations into ten languages of a greeting appropriate to the time of day. Nothing particularly new in that. But Web services let you provide this information from other sites rather than developing the resources yourself.
Web architects envision that sites will develop and market these kinds of services. SOAP provides the remote method invocations across HTTP, the transport protocol of the Web. By using HTTP, it is able to support multiple platforms and avoid messy network security issues such as firewalls by sticking to port 80.
These are the features that Microsoft is building into Visual Studio 7still its working nameand the SOAP toolkit lets developers start working with the technologies now. The toolkit brings together several technologies that developers can use togetherXML, HTTP, SOAP, Service Description Language (SDL), COM, and IISsome old, some new. More now than ever, developers will need to have a good mix of both traditional programming language and Web technology skills.
SOAP Toolkit Goodies
The toolkit contains a mix of documentation, tools, preliminary specifications, and sample code, enough to fill a couple of days of exploration and play. But beware: the user is constantly reminded that this is a work in progress, both in its informality and sparseness, and can change in its entirety at almost any time.
Documentation consists of a reasonably good HTML help file and Service Description Language (SDL) specification in the form of a Word document. The help file provides introductory material, explanations of the sample code in the toolkit, and a complete ROPE API reference (discussed more below). The SDL specification describes a standard XML document format used to expose the methods, parameter types, and return types of the particular Web service. Other documentation covers using SOAP with low-level ISAPI development, troubleshooting, and data conversions between COM and XML.
The sample application provides a good introduction to the use of SOAP, ROPE, and Web Services. The client application, shown in Figure 1, retrieves the current stock price for a given stock symbol, the current time on the server, the current Universal Coordinated Time from the U.S. Naval Observatory, and translates text among six language. The client sample is initially set up to use a server that Microsoft has set up on its own servers for the application, but the toolkit also provides all the source for setting up your own server for testing. The client also includes code to use SOAP directly and to use the ROPE automation objectsdiscussed belowthat simplify coding on the client side, so you can get a feel for how everything works.
As Figure 1 shows, the sample client application in the SOAP toolkit is a forms-based Visual Basic app that demonstrates how clients can consume Web services. Clients don't need to be browser-based.