Service Oriented Architecture: Inventory of Distributed Computing Concepts
Before examining SOA elements in detail in the following chapters, we will review existing concepts of distributed computing. This is important because we are not planning to develop an SOA from scratch. Instead, an SOA will have to incorporate existing middleware technologies and distributed computing concepts. This is particularly important because earlier attempts to replace existing middleware with a new, ubiquitous software bus (e.g., CORBA) have failed, and a successful SOA will have to embrace existing and upcoming technologies instead of replacing or precluding them. Many authors cover the intrinsic details of communication networks and middleware, such as Tanenbaum [Tan2002, Tan2003] and Coulouris [Cou2001]. Aiming our discussion at the application architecture level, we will provide only a brief overview of the most fundamental communication middleware concepts here (including Remote Procedure Calls, Distributed Objects, and Message-Oriented Middleware), followed by a more detailed discussion on the impact that different types of communication middleware have on the application level (including synchrony, invocation semantics, and application coupling).
3.1 Heterogeneity of Communication Mechanisms
Techniques for the distribution of enterprise software components are manifold. As will be seen in the remainder of this book, this heterogeneity is inevitable due to the various communication requirements of enterprises.
The situation is comparable to communication in real lifemany forms of communication exist (verbal, non-verbal, written, etc.), and every form has its own purpose. It is not possible to replace one form with another without reducing expressiveness.
Figure 3-1 depicts three possible levels of heterogeneity of distribution techniques:
Additional runtime features
Figure 3-1 Distribution techniques for enterprise applications are characterized by manifold requirements and consequently by various dimensions of heterogeneity.
Communication modes are basically distinguished between synchronous and asynchronous mechanisms. Evidently both are required in real-world projects. However, in practice, there are usually numerous variants of these basic modes of communication. Obviously, one can encounter numerous products that provide distribution mechanisms. In addition, a concept that is supposed to cover all the distribution issues of an enterprise must also provide a set of additional runtime features such as security support, fault tolerance, load balancing, transaction handling, logging, usage metering, and auditing.
It should be noted that our classification scheme is arbitrary. It is possible to define other classifications or to find additional levels of heterogeneity. However, independent of the classification scheme, it is true that enterprise distribution techniques tend to create heterogeneity at different levels.
From a technical point of view, this scenario leads to three different layers, as shown in Figure 3-2. The first layer contains the core assets of the enterprise application landscape, including all business logic. The second layer provides technology-dependent adapters that connect the core assets to various software busses. Finally, the third layer represents the sum of the enterprise's communication facilities.
Figure 3-2 Technology-dependent adapters connect participants of an enterprise application landscape with its communication infrastructure.
The remainder of this chapter focuses on the second layer. Chapters 4 to 7 provide an in-depth discussion of the first layer, while Chapter 9 discusses the third layer.