After publishing the WWS article I received some questions about how this compares to ATL’s SOAP stack. I’m certainly not trying to convince anyone to switch over to WWS but it has some benefits that may be useful in some scenarios. I also haven’t used the ATL/ServerXMLHTTP stack much so I’m probably not the best person to do a comparison. From what I can tell however it uses either WinHTTP or WinInet and MSXML. Given that there are some things I can point out
1. WWS is not limited to SOAP over HTTP and provides first-class support for TCP and UDP bindings. It’s also not limited to text encoding and can provide a considerable performance boost with binary encoding when applicable. It is possible for developers to modify the ATL source code to use a different transport and encoding as several teams at Microsoft have done in the past but you are on your own when doing this whereas WWS can handle this for you.
2. The XML layer in WWS, which includes serialization for C data types and structures, is much faster than XmlLite which in turn is much faster than MSXML. In some scenarios that can make a big difference. Control over memory management and reduced working set is also critical for many customers (many of whom live within Windows core). This also has a big impact on throughput which is critical in scenarios like financial services.
3. I didn’t touch on this in the article but there’s a very nice (and efficient) asynchronous programming and cancellation model that works with completion ports making it really scalable.
4. ATL SOAP is no longer in active development and Microsoft only supports the version of ATL SOAP that shipped with Visual Studio 2005. Of course if this works for you that’s great.
The list can go on. One of the biggest reasons for using WWS that I’ve heard from Microsoft and others is the interoperability with modern SOAP stacks like WCF, WebSphere, Weblogic, and others. With ATL SOAP it is only possible to build clients for services that use the basic SOAP services specs that fall under the Basic Profile 1.0. If a service uses any of the WS-* standards released past 2002, ATL SOAP just doesn’t support it out of the box.
Concerns over platform support are warranted although a lightweight redistributable for WWS is available going back to Windows XP.