XML transformation deals with changing data from one XML structure to another, or changing data from XML to some other format. It is key when integrating different applications and probably presents the greatest performance challenge.
Just because Web services are a relatively new application paradigm, this does not mean that classic performance best practices do not apply—they do! Three common-sense practices exist:
- PROACTIVE STRATEGY: Involves training engineering and QA staff on writing optimized XML Web services
- DEFINITIVE STRATEGY: Follow irrespective of the stringent performance requirements
- REACTIVE STRATEGY: Defining and addressing performance-oriented requirements right in the design phase; i.e., software performance engineering (SPE). SPE is the discipline that identifies best practices and necessary hardware and software for leveraging performance. The reactive strategy involves analyzing bottlenecks and weak links that may be causing performance problems. Once issues are identified, they are resolved by both analyzing and tweaking the code, or by changing the design.
REDUCING THE SIZE OF XML
We can use traditional ZIP/GZIP compression with a variety of similar tools. While ZIP compression can yield 10:1 compression, both the endpoints must understand and abide by the same compression algorithms. In addition, the compressed XML completely loses all human readability and requires additional processing cycles.
Compact encoding, such as WAP Binary XML (WBXML), can reduce the number of bytes to a great extent and also eases parsing overhead at both endpoints. Unfortunately, the industry has not yet established an encoding compression standard.
OPTIMIZING XML VALIDATION
Assuming the application has been written to specifications, you can turn on the validation when the incoming XML document has originated from outside the application. Additionally, since an XML document that originated from outside the application has already been validated, turn off validation when XML documents are exchanged within the components of the application itself. However, one important caveat is that this is not a viable solution for exchanging documents between different applications. Studies have shown that validation adds two to three times more processing when compared to an XML document that is not validated.
Much of what has already been discussed has centered on application performance, issues that can negatively impact an application’s performance, and the possible remedies. However, without measurement, we cannot manage such applications.
Believe it or not, it is potentially easier to monitor application availability and performance when using Web services than for traditional distributed computing environments. There are several reasons for this:
- SOAP provides a clear starting point for defining and subsequently monitoring “transaction” performance. Content formatted in XML is easily parsed by software and readily understood by humans. Measurement tools can then access and act on the detailed application information contained within SOAP messages. Potentially, workload characterization can reach a detailed level of granularity that would otherwise require detailed knowledge of application logic and a willingness to make significant source code modifications.
- WSDL files provide information necessary for automated setup and dynamic discovery of new services. Though WSDL files are meant to expose Web services for use by external consumers, their mere existence implies the ability to discover new services as soon as the Web service becomes available. This makes it possible for measurement tools to discover the services they need to monitor and to adapt automatically to changes in the Web services available in their environments. Thus, setup and operation can, in principle, be automated to a degree that would be very difficult to achieve in other environments.
- Passive surveillance of SOAP messages via “software observers” is a new technique developed specifically for Web services environments. The basic idea is to insert a data capture module into the chain of handlers that process incoming and outgoing SOAP messages. Its main function is to copy XML tags and variables (e.g., name of Web service being invoked, IP address of system invoking the service, length of the incoming SOAP message, and arrival time). These tags and variables are copied from the object prepared by the SOAP engine during parsing to a monitoring object. Subsequently, this new object is processed asynchronously by other components of the performance monitoring subsystem. This strategy should keep overhead very low.
SUMMARY AND FUTURE
In the future, we would expect to see more articles that address the details surrounding the performance of SOAP/XML. In addition, we hope to see case study-type articles that would examine the not-so-obvious “gotchas” in implementing XML-based solutions. As with the development of any complex application, great care must be taken to ensure that efficient design and coding strategies be employed. The use of Web services is no exception. While you might at first think that Web services applications may impose difficulties in terms of performance management, this environment would seem to contradict that conclusion. Alternative measurement strategies are emerging with the proliferation of Web services applications. Analysts will no doubt carefully study the different strategies. From a performance perspective, Web services have again confirmed that we live in interesting times!
If you wish to learn more about Web services and performance, I’ve listed several interesting works for your continued study.
- Creating and Using Web Services With the .NET Framework and Visual Studio.Net¸ Rick Strahl, www.westwind.com/presentations/dotnetwebservices/DotNetWebServices.asp
- Creating Web Services From Existing Applications, Sanat Gersappa, www.indiawebdevelopers.com/technology/XML/creating_web_services.asp
- “Enabling Your Key Services as Web Services,” White Paper, www.webenable.com/business/enabling_key_services.pdf
- Creating Web Services for DB2 UDB for OS/390 Stored Procedures Using WebSphere Studio Version 5, Peter Xu, www7b.software.ibm.com/dmdd/library/techarticle/0304xu/0304xu.html
- Creating Web Services With Visual C++.NET, Mark Schmidt, Richard Simon, www.informit.com/isapi/ product_id~%7B9DA03878-E791- 441A-86A3-18518F79F2E6%7D/-content/index.asp
- Creating Web Services in Java, Mark Wutka, http://docs.rinet.ru:8083/JSol/ch23.htm
- Creating and Consuming Web Services in Visual Basic, Scott Seely, Deon Schaffer, Eric A. Smith, Addison- Wesley, www.amazon.com/exec/obidos/tg/detail/-/0672321564/102-0675553-092147?v=glance#productdetails. Z