HomeDigital EditionSys-Con RadioSearch Web Services Cd
B2B Beginning WS Business Process Management Case Studies Content Management Distributing Computing e-Business Electronic Data Interchange Enterprise Industry Insight Integration Interviews Java & Web Services .NET Portal Product Reviews Scalability & Performance Security SOAP Source Code UDDI Wireless WS Standards WS Tips & Techniques WSDL WS Editorials XML

This article, the first of two parts, will compare and contrast Web services with other distributed computing component technologies such as CORBA, J2EE, and DCOM. We look at these approaches in the context of their respective capabilities in support of integration solutions and application architecture domains (e.g., loosely coupled versus tightly coupled applications).

These technologies are complementary, but the most important consideration for choosing a particular technology is its suitability for a particular problem/solution domain.

At a high level, an enterprise application environment consists of domain-specific applications, as well as certain integration applications that involve weaving together parts of the domain-specific applications. For domain-specific applications, it is efficient and feasible to make use of technologies such as J2EE and CORBA, as they provide a solid application development and runtime platform.

While it is technically possible to use J2EE, CORBA, and similar technologies for integration applications, products in the enterprise application integration (EAI) category (which includes, for example, message-oriented middleware products) are a better fit. Web services technologies are best suited for the EAI problem domain and are complementary to the problem domain of J2EE, CORBA, and other distributed component technologies.

In this article we describe the characteristics of the enterprise integration environment, the attributes of an ideal integration solution, and the architectural requirements entailed by these considerations. We look at how Web services can provide solutions for long-standing integration problems, as well as for new classes of integration problems that are not explicitly addressed by component models.

Finally, we'll look at how distributed technologies such as CORBA are better suited for domain-specific application development, and how they complement Web services technologies.

Enterprise Integration Environment
This section describes some of the characteristics of the integration environment for the enterprise, including the technical landscape and specific problem areas typically addressed by integration projects. Most of these problems are commonly applicable to internal integration (such as EAI) as well external integration (commonly referenced as B2Bi). In addition, we'll look at the "political landscape" because organizational considerations can also affect the choice of integration technologies.

The typical enterprise integration environment has the following characteristics:
1.   Multiple applications: Including both packaged applications and those developed in-house.
2.   Different ways to access the functions and data controlled by these applications (e.g., database, API, flat file, etc.) and varying levels of support for integration: Some applications may have been developed with the assumption that they will never have to be integrated with the rest of the enterprise.
3.   Multiple platforms and operating systems: Everything from mainframes to desktops.
4.   Multiple component models: An enterprise will have applications built using CORBA, J2EE, or DCOM that don't "automatically" interoperate.
5.   Multiple models for handling security aspects: Data confidentiality, user authentication, authorization, etc.
6.   Multiple models for handling application transactions: Two-phase commit, open nesting of transactions, etc.
7.   Varying levels of application availability: Some applications are expected to be up and running continuously, while others may have intermittent availability.
8.   Different data formats (both within the enterprise and across trading partners): XML, native text, native binary, etc.
9.   Different network protocols: IIOP, MQ, HTTP(S), etc.
10.   Systems with difficult and expensive problems of software version control and upgrade management: Some systems may require an all-or-nothing upgrade, while others may allow piecemeal upgrades of system components.
11.   Different performance and response requirements: Some systems must provide near real-time response, while others may take days to complete (or much longer in some cases, e.g., a system that wants to be notified whenever a partner contract expires may deploy a "logical workflow" solution that runs for years!).
12.   The political landscape: Note that it may be difficult to get different teams to agree on a common component model, and that different teams may have very different areas of technological expertise. Thus there are costs associated with reaching and implementing a cross-organizational technology agreement - e.g., retraining some or all of the developers.

Given this enterprise integration environment, the next order of business is to identify the precise subsets of the problems, such that a unique solution can be efficiently applied to each subset. The goal therefore is to determine the right tools for a particular job, instead of trying to apply the same tool for every job.

Integration Problem Domain and Architectural Requirements
The previous section highlights the nature of the integration problem, which implicitly places certain architectural constraints on the solutions. These constraints are listed below (numbers in parentheses refer to the integration environment characteristics described above).

It is unlikely that a single solution would fulfill the entire list of requirements and constraints. Therefore, these constraints should not be interpreted as mandating a single comprehensive solution. Products will eventually become available to address more narrowly focused problems. But while a given integration problem is unlikely to require all the capabilities listed below, a comprehensive integration toolkit will exhibit the following characteristics:

  • Capable of integrating different systems via their existing interfaces, preferably with "zero-touch" (1). (Note: "Zero-touch" refers to integration solutions that require no changes to existing application code - not even relinking or recompiling.) Existing applications (e.g., "dusty decks" or packaged applications) may not tolerate any change.
  • Not restricted to any particular mechanisms for interacting with the application systems (2). It should be possible for the "glue code" that implements integration connections to use a file interface, an application API, or any other interaction mechanism.
  • Platform and language independent (3).
  • Neutral with respect to the structure of the implementation behind the endpoints (4, 5, 6, 9). The integration solution should be neutral with respect to the component model (and the security model, the transaction model, etc.) of the application behind an endpoint.
  • Independent of endpoint availability models (7, 11). Only one end of the interaction may be available at a given time. There should be no restriction on how long the interaction should take.
  • Adaptable to any data format (7). Support for a neutral data description language is necessary in order to adapt to any data format. In addition, the data description language should be:
    -   Rich enough to support the semantics and constraints of the different endpoint data formats
    -   Easily translatable to the different endpoint data formats. A self-describing language is the key to making the translation easy
    -   Independent of the transport protocol used for communicating with the endpoints (8).

    Central to most of these requirements is a common theme of neutrality. That is, the integration solution should be neutral to platforms, languages, application component models, transaction models, security models, transport protocols, invocation mechanisms, data formats, endpoint availability models, and so on.

    In other words, the integration solution largely depends upon an abstraction layer that exposes, in a neutral format, the data and service interfaces of different endpoints participating in an integration scenario. Supporting the other aspects of neutrality, such as language neutrality, transport neutrality, etc., also requires support for a neutral data format and neutral service interface specification for different languages, platforms, transports, etc. Once such an abstraction layer is established - to expose in a common language the service and data interfaces of different endpoints - the next challenges are related to interaction patterns between the endpoints.

    The interaction patterns are mainly related to determining the semantics of the data passing through the endpoints, the granularities of the service interfaces offered by the endpoints, the contextual information that needs to be exchanged along with data, and so on.

    These requirements impose constraints on the interaction pattern. Note that the details of the applications behind the endpoints need to be hidden from the integration solution. In order to hide the internal application model, the endpoints must expose coarse-grained interfaces that reduce the number of interactions. The reduced number of interactions requires passing semantically richer data structures through the interfaces, and deriving finer-grained data from these rich data structures. These rich data structures are commonly called business documents, and the interaction between disparate systems via exchange of the business documents is commonly called document-style interactions.

    The other style of interaction (called RPC style) typically involves passing a small number of individual data items in multiple requests, and synchronously getting a small number of reply data items in return. In this environment, the decision to invoke a particular synchronous call, and the data to be passed to the call, depends heavily upon the context, which is defined by the previously invoked RPC calls and the data returned by them.

    A document-style communications approach organizes data within a collection, called business document, and makes far fewer invocations compared with the RPC style. The business document contains all of the information required for business processing and typically contains far more data than the amount passed in RPC-style parameters. While a document processing request/ response could be synchronous, an asynchronous approach is far more common.

    In analyzing the requirements of neutrality with regard to the application model behind the endpoint, it's clear that the desirable interaction pattern in such an enterprise integration environment is that of the coarse-grained document style.

    The document-style interaction pattern is also a natural choice for supporting different availability models. In document-style interaction, all the necessary information for invoking a service is encoded in stand-alone business documents, allowing applications to have life cycles independent of each other, or at least letting each one function normally for prolonged periods of time, without communicating with each other. This makes it possible for clients to make requests, and for a service to consume and process requests, independent of whether the client or service is immediately available.

    Theoretically, the RPC style could also utilize a communication model where the client and server operate independent of each other's availability. However, this is often not useful in practice because applications using the RPC style typically depend upon an immediate response so that the application can decide its next step.

    Another term that is commonly used in describing and differentiating the nature of interactions between endpoints is loosely coupled vs. tightly coupled. The coupling between any two systems essentially indicates the degree of dependency they have on each other. The degree of coupling implies some level of cooperation, as the two communicating systems must have a certain level of agreement and the degree of coupling depends upon the nature of that agreement.

    If the clients are required to program their logic against a specific API and a specific application model exposed and controlled by the service, then the dependency (and hence the coupling) between the client and service is tighter. Such tightly coupled systems typically involve invocation of multiple fine-grained APIs, which essentially visit different parts of the application.

    As a result, tightly coupled interactions largely depend upon a general acceptance of the component model on which the application is designed. In these systems, the connections that a client makes with the service are dedicated to specific purposes and are therefore not reusable in most cases. Integration using such models tends to result in brittle and inflexible systems in the sense that a change in the use of interface on one side requires modification on the other side.

    On the other hand, loosely-coupled systems do not bind to each other using application-specific interfaces. Instead, these systems make use of abstract message definitions to mediate their binding with respect to each other. For example, the interfaces of loosely coupled systems focus on the message definitions instead of method signatures. This supports general-purpose message definitions such that the application code can independently handle the complexity of processing specific message instances, which makes the interfaces reusable.

    While a tightly coupled approach offers tremendous runtime efficiency (because the common component model can be directly exploited for low-level use case scenarios), a loosely coupled approach provides flexibility to support different high-level use cases.

    Conclusion
    In summary, the requirements described here demand an integration technology that is neutral with respect to object models, interaction styles, and transports, and which can provide very high interoperability. The interoperability is determined by the way the exchanged documents are defined, produced, and consumed. The integration technology needs to support defining the data and service interfaces in a neutral manner - and must build on this semantically rich layer of data and service descriptions so as to support document-style, loosely coupled interactions between the endpoints.

    Note that in addition to the documents themselves, the endpoints pass additional metadata such as security context. Therefore, the solution must also take care of packaging and exchanging such context information in an interoperable manner.

    These interoperability considerations affect the standardization of the packaging, as well as the standardization of the actual exchange of packaged messages (in other words, both the document and metadata). Again, it should be possible to use any transport for actual exchange of the messages; the choice of the transport is based primarily on the transport facilities required by a particular use case, such as reliable messaging, message brokering, etc.

    *  *  *

    The second article in this series will describe how Web services address the architectural requirements of the integration problem domain.

    Author Bios
    Sanjay Patil is a distinguished engineer within the Web Services Integration Platform group at IONA Technologies. He is actively involved with many e-business standards; his areas of interest are distributed infrastructure for B2B and enterprise integration, Web services, and Internet technologies. sanjay.patil@iona.com

    Nick Simha is a sales engineer working with IONA's customers to help architect e-Business solutions. His areas of interest are application integration, Web services, supply chain management, and security. nsimha@iona.com

    All Rights Reserved
    Copyright ©  2004 SYS-CON Media, Inc.

      E-mail: info@sys-con.com

    Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, Inc.