Cover | Table of Contents
It is not the strongest of the species that survive, nor the most intelligent, but the ones most responsive to change.
There is no such thing as a "quick fix . . . ". Organizations are complex business systems, within which a change in any one component is likely to have an impact on other components.
Alexander Pasik, a former analyst at Gartner, coined the term SOA for a class on middleware that he was teaching in 1994. Pasik was working before XML or Web Services were invented, but the basic SOA principles have not changed.Pasik was driven to create the term SOA because "client/server" had lost its classical meaning. Many in the industry had begun to use "client/server" to mean distributed computing involving a PC and another computer. A desktop "client" PC typically ran user-facing presentation logic, and most of the business logic. The backend "server" computer ran the database management system, stored the data, and sometimes ran some business logic. In this usage, "client" and "server" generally referred to the hardware. The software on the frontend PC sometimes related to the server software in the original sense of client/server, but that was largely irrelevant. To avoid confusion between the new and old meanings of client/server, Pasik stressed "server orientation" as he encouraged developers to design SOA business applications.
Although Web Services do not necessarily translate to SOA, and not all SOA is based on Web Services, the relationship between the two technology directions is important and they are mutually influential: Web Services momentum will bring SOA to mainstream users, and the best-practice architecture of SOA will help make Web Services initiatives successful.
SOA is an architectural paradigm for dealing with business processes distributed over a large landscape of existing and new heterogeneous systems that are under the control of different owners.
The noun "service" is defined in dictionaries as "The performance of work (a function) by one for another."
The noun "service" is defined in dictionaries as "The performance of work (a function) by one for another."
Essentially, SOA is a software architecture that starts with an interface definition and builds the entire application topology as a topology of interfaces, interface implementations and interface calls. SOA would be better-named "interface-oriented architecture."
string). Be careful with more complicated fundamental data types, though. The goal is to minimize dependencies so that a SOA is appropriate for distributed systems with different owners. See for details.
A service is the IT realization of some self-contained business functionality.
Tight coupling | Loose coupling | |
|---|---|---|
Physical connections | Point-to-point | Via mediator |
Communication style | Synchronous | Asynchronous |
Data model | Common complex types | Simple common types only |
Type system | Strong | Weak |
Interaction pattern | Navigate through complex object trees | Data-centric, self-contained message |
Control of process logic | Central control | Distributed control |
Binding | Statically | Dynamically |
Platform | Strong platform dependencies | Platform independent |
Transactionality | 2PC (two-phase commit) | Compensation |
Deployment | Simultaneous | At different times |
Versioning | Explicit upgrades | Implicit upgrades |