Table of Contents Previous Next
Logo
Chapter 1
Copyright © 2003-2009 ZeroC, Inc.

Chapter 1 

Introduction

1.1 Introduction

Since the mid-nineties, the computing industry has been using object-oriented middleware platforms, such as DCOM [3] and CORBA [4]. Object-oriented middleware was an important step forward toward making distributed computing available to application developers. For the first time, it was possible to build distributed applications without having to be a networking guru: the middleware platform took care of the majority of networking chores, such as marshaling and unmarshaling (encoding and decoding data for transmission), mapping logical object addresses to physical transport endpoints, changing the representation of data according to the native machine architecture of client and server, and automatically starting servers on demand.
Yet, neither DCOM nor CORBA succeeded in capturing a majority of the distributed computing market, for a number of reasons:
• DCOM was a Microsoft-only solution that could not be used in heterogeneous networks containing machines running a variety of operating systems.
• DCOM was impossible to scale to large numbers (hundreds of thousands or millions) of objects, largely due to the overhead of its distributed garbage collection mechanism.
• Although CORBA was available from a variety of vendors, it was rarely possible to find a single vendor that could provide an implementation for all of the environments in a heterogeneous network. Despite much standardization effort, lack of interoperability between different CORBA implementations continued to cause problems, and source code compatibility for languages such as C or C++ was never fully achieved, usually due to vendor-specific extensions and CORBA’s lack of a specification for multi-threaded environments.
• Both DCOM and CORBA suffered from excessive complexity. Becoming proficient and designing for and programming with either platform was a formidable task that took many months (or, to reach expert level, many years) to master.
• Performance issues have plagued both platforms through their respective histories. For DCOM, only one implementation was available, so shopping around for a better-performing implementation was not an option. While CORBA was available from a number of vendors, it was difficult (if not impossible) to find standards-compliant implementations that performed well, mainly due to the complexity imposed by the CORBA specification itself (which, in many cases, was feature-rich beyond need).
• In heterogeneous environments, the coexistence of DCOM and CORBA was never an easy one either: while some vendors offered interoperability products, interoperability between the two platforms was never seamless and difficult to administer, resulting in disconnected islands of different technologies.
DCOM was superseded by the Microsoft .NET platform [11] in 2002. While .NET offers more powerful distributed computing support than DCOM, it is still a Microsoft-only solution and therefore not an option for heterogeneous environments. On the other hand, CORBA has been stagnating in recent history and a number of vendors have left the market, leaving the customer with a platform that is no longer widely supported; the interest of the few remaining vendors in further standardization has waned, with the result that many defects in the CORBA specifications are not addressed, or addressed only years after they are first reported.
Simultaneously with the decline of DCOM and CORBA, a lot of interest arose in the distributed computing community around SOAP [26] and web services [27]. The idea of using the ubiquitous World Wide Web infrastructure and HTTP to develop a middleware platform was intriguing—at least in theory, SOAP and web services had the promise of becoming the lingua franca of distributed computing on the Internet. Despite much publicity and many published papers, web services have failed to deliver on that promise: as of this writing, very few commercial systems that use the web services architecture have been developed. There are a number of reasons for this:
• SOAP imposes very serious performance penalties on applications, both in terms of network bandwidth and CPU overhead, to the extent that the technology is unsuitable for many performance-critical systems.
• While SOAP provides an "on-the-wire" specification, this is insufficient for the development of realistic applications because the abstraction levels provided by the specifications are too low. While an application can cobble SOAP messages together, doing so is tedious and error-prone in the extreme.
• The lack of higher-level abstractions prompted a number of vendors to provide application development platforms that automate the development of SOAP-compliant applications. However, these development platforms, lacking any standardization beyond the protocol level, are by necessity proprietary, so applications developed with tools from one vendor cannot be used with middleware products from other vendors.
• There are serious concerns [15] about the architectural soundness of SOAP and web services. In particular, many experts have expressed concerns about the inherent lack of security of the platform.
• Web services is a technology in its infancy. Little standardization has taken place so far [27], and it appears that it will be years before standardization reaches the level of completeness that is necessary for source code compatibility and cross-vendor interoperability.
As a result, developers who are looking for a middleware platform are faced with a number of equally unpleasant options:
• Choose .NET/WCF
The most serious drawback is that it supports only a limited number of languages and platforms.
• Choose Java RMI
This is a Java-only solution and so does not qualify as middleware.
• Choose CORBA
The most serious drawbacks are the high degree of complexity of an aging platform, coupled with ongoing vendor attrition.
• Choose Web Services
The most serious drawbacks are the severe inefficiencies and the need to use proprietary development platforms, as well as security issues.
These options look very much like a no-win scenario: you can choose a platform that will run only with limited languages or platforms, you can choose a platform that is complex and suffering from gradual abandonment, or you can choose a platform that is inefficient and, due to the lack of standardization, proprietary.
Table of Contents Previous Next
Logo