Since its inception, Web services have gained industry-wide acceptance and usage. Web services provide communication across various disparate applications, operating systems, and vendors. However, despite the fact that Web services are often based on a standard XML message format (SOAP), and leverage a standard description language (WSDL), any number of issues can introduce interoperability problems. These issues include the way types are serialized in SOAP messages, how headers are constructed, the complexity of the WSDL standard, and the vast extensibility that can be applied on WSDL documents, schemas, and SOAP messages.
The problem of interoperability is further expanded due to various WS-* standards (such as WS-Security, WS-Addressing, WS-ReliableMessaging, etc.) and a variety of SOA components (such as registries, XML gateways, monitoring and WS Management tools, etc.). With many organizations just beginning to experiment with such standards and components, interoperability issues are only barely reaching the surface.
It is important to note here that these issues are not only a result of vendor implementations of these standards, but also a result of the way they are coded by developers. Therefore, Web services interoperability is very much a concern to all organizations deploying Web services.
The Importance of interoperability
The importance of interoperability can be viewed in terms of internal and external contexts.
Internal interoperability deals with reuse and governance. Asset reuse is one of the core drivers of the SOA or Web service ROI. For example, an airline company may have a Web service that returns available flights from one city to another. Such a service can be invoked by a customer support application (used by customer support reps), agents at the airport terminal, an online reservation portal, shipping, accounting, etc. Without a reusable service, the company would need to implement end-to-end integration points, supply and configure middleware to do protocol translation, or maintain and distribute libraries to all consumers in order to allow for the communication to take place.
A Web services-powered service-oriented architecture transforms the IT infrastructure to increase business flexibility, connectivity, and control. The fact that it is possible for any service consumer (another application, a system in another department, etc.) to access and invoke the Web service makes reuse possible and allows the organization to respond to changing business needs quickly, efficiently, and with great agility. However, if interoperability issues surface, reuse can be compromised and any SOA benefits would be diminished.
In an external context, Web services enable business partners to integrate faster and better than ever before. For example, an airline reservation application may need to communicate with a car rental partner for car reservations, and then with a hotel partner for room reservations. Such scenarios are in demand in today's eBusiness environment. Only organizations that have an agile IT infrastructure can respond to these demands in a competitive manner. Such agility can only be achieved if interoperability is in place, or else the costs of integration and system maintenance explode.
The ability to attain the benefits of service orientation is largely constrained by the ability to manage the various SOA domains: security, management, registry, development, orchestration/composite services, and enablement/integration. The lack of a solid SOA governance strategy throughout the entire service lifecycle can result in an inconsistent and uncontrollable IT infrastructure that compromises the benefits of SOA. Therefore, it is critical that SOA governance includes interoperability as the highest priority concern to be addressed.
SOA governance, as defined above, and as an overarching management activity, is what determines the policies on how services are handled in their different lifecycle stages, from inception to discovery, to invocation and consumption.
It is crucial for developers to have some sort of control or process for determining what services are published and becomes a part of the SOA being built. In order to control how Web services are defined, developed, and deployed, companies utilize internal standards and policies, or industry guidelines and best practices. These policies include what standards are adopted within a particular organization, and what version of these standards is endorsed. For example, companies may choose WSDL 1.1, SOAP 1.2, WS-Security 1.0, etc. Once these adopted standards with versions are selected, it is critical that the governance policy is enforceable.
Therefore, in order to achieve interoperable Web services, organizations must have a governance solution that ensures the enforcement of the various standards and policies. Automated policy enforcement tools, such as Parasoft SOAtest, provide a governance solution that allows the control of policies and enforces them explicitly as part of the overall quality process of a service-oriented architecture.
Policies can be enforced with the following practices:
1. requiring schema validation tests against the respective standard schemas
2. executing XML static analysis to ensure that the correct standards are used and implemented correctly
3. performing semantic analysis to ensure that XML artifacts are not only schema valid, but can also be interpreted correctly by the consumers
Because compliance to policies is preventative rather than reactive, the above practices prevent policy violations from creeping into the SOA, thereby reducing cost and decreasing time to market, and ensuring interoperable Web services.