WASP gives Web services development some sting
WASP Server and Developer tools handle real-world Web services management
Although most of the Web services examples in tutorials and books are green-field developments -- that is, started from scratch with little or no concern for legacy systems -- that is not a likely scenario in most enterprises. When large organizations contemplate Web services, they are seeking more efficient interactions with customers or trading partners with whom they already have relationships.
Such relationships are often already cemented into place with some collection of IT resources. As a consequence, real-world Web service deployments can get messy and require a serious development effort. Getting the job done requires development tools, a cluster of run-time servers, and management tools to configure and operate the services once they’re deployed. WASP Server and WASP Developer from Systinet do a nice job of providing these professional-grade tools for creating and deploying Web services in both Java and C++.
WASP Server is a full-featured Web services run-time environment. I tested WASP Server 4.5.1 for Java (the C++ server has the same feature set but differs in how it is deployed). Because both Java and C++ versions are available, it is fairly easy to expose any Java or C++ program as a Web services.
A Web services run-time server has two primary parts. First, a SOAP message processor parses SOAP messages, including the serializing and deserializing of parameters. And second, a Web service container wraps the business logic for the Web service and provides services such as security, life-cycle management, and resource management.
This architecture enables the WASP Server to completely divorce security issues from the business logic, freeing Web services developers from having to write arcane security code and creating an environment where security is configured through an easily managed administrative console.
A big selling point for the WASP Server is performance. The server provides load balancing and clustering, and the container architecture allows the server to manage resources such as threads. Systinet also lays claim to a proprietary XML-processing system that manages XML operations as streams rather than batch jobs. This can reduce system resource demand when processing large blocks of XML.
One of the things that impressed me was the ease with which I could serialize complex data elements for use as parameters in SOAP calls. I’ve struggled with this on some other products and had to do quite a bit of work myself, but WASP Server handled Java-to-SOAP-to-Java typing issues handily.
The WASP serialization subsystem also contains the XML Schema for a large assortment of complex data types including arrays, hashes, and lists. The ability to transmit complex data extends to .NET applications as well, since the precompiled schema is designed with this in mind.
The server should run on any platform with Java 1.3 or 1.4, and although the server isn’t specifically supported on OS X, I did get it working with only a few modifications to some shell scripts that assumed a different layout for the Java installation than OS X provides. I was also able to easily get it working on Windows XP. Nevertheless, remember that performance is directly dependent on the quality of the Java VM available on a particular platform.