A Comparison of Service-oriented, Resource-oriented, and Object-oriented Architecture Styles

Jørgen Thelin · 2003

The three common software architecture styles commonly used in distributed systems and XML Web Services are compared and contrasted. In particular, the key differences between traditional SOAP and REST styles are explored. Guidelines are presented on which style is most applicable for certain application scenarios, and when a combination of styles is necessary. Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Agenda Architecture Patterns and Styles Distributed System Types Request / Response Message passing Architecture styles Object-oriented architectures Resource-oriented architectures Service-oriented architectures REST Choosing Architecture Style and Implementation Technology Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Cape Clear Start-up founded in 1999 by several executives from Iona Technologies Venture capital funding from Greylock and Accel Partners Offices in: Dublin, Ireland London, UK San Mateo, CA, USA Waltham, MA, USA The company is totally focused on XML Infrastructure, including Web Services Products: WSDL Editor Web Services Development tool set XML Integration Server supporting Web Services Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Setting the Scene – Architecture Patterns and Styles Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. What is a Pattern? Martin Fowler defines a “Pattern” as: An “idea” that has been useful in one practical context and will probably be useful in others” [Martin Fowler, “Analysis Patterns”, 1997] The concept of patterns can be applied at many levels in software projects: Design / Code Patterns Analysis / Model Patterns Architecture Patterns / Architectural Styles Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Pattern Levels – Design / Code Patterns Lowest level of patterns in software Based around a reusable chunk of code to solve a particular problem Typically implemented through source code templates and/or code generation Provides a “template” for implementing a system function, but requiring elaboration to complete Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Pattern Levels – Analysis / Model Patterns Reusable object models (for example UML) Typically implemented through UML model templates or perhaps meta-models Provides a “template” for a group of related system functions, but often within a specific domain (for example Finance) Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Pattern Levels – Architecture Patterns / Architecture Styles Reusable system structures, interconnections and interactions Typically implemented through architecture standards and policies Provides a “template” for subsystem structure and communications between subsystems Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. What is Software Architecture? The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them. [Bass, Clements & Kazman, “Software Architecture in Practice”, 1998] Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. What is a Software Architecture Style? #1 An architectural style defines: a family of systems in terms of a pattern of structural organization a vocabulary of components and connectors, with constraints on how they can be combined [Shaw & Garlan, “Software Architecture: Perspectives on an Emerging Discipline”, 1996] Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. What is a Software Architecture Style? #2 An architecture style: Describes a class of architectures or significant architecture pieces Is found repeatedly in practice Is a coherent package of design decisions Has known properties that permit reuse [Clements, Kazman & Klein, “Evaluating Software Architecture”, 2002] In other words, architecture styles are like “design patterns” for the structure and interconnection within and between software systems. Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Distributed Systems Architecture Styles Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Distributed Systems Types Two main types of distributed software systems: Request / Response type systems Also known as “call & return” type systems Message passing type systems Also known as “document passing” type systems Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Distributed System Type #1 – Request / Response Systems Request / Response type systems are: Call oriented systems Usually synchronous in nature Approach: Operations have input parameters and output / return values Focus is on: The particular operation to be invoked The set of input values The set of output values The correlation of replies with requests No real focus on: How the individual values are marshalled as a unit How the output values are produced from the input values (assuming the correct output is produced!) Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Distributed Systems Type #2 Message Passing Systems Message passing type systems are: Data oriented systems Usually asynchronous in nature Approach: Messages are constructed and send to a destination Focus is on: Constructing the message payload in the correct format How to dispatch the message (transport medium) Where to dispatch the messages to (endpoint) No real focus on: What will happen to messages after they are dispatched Whether there will be a corresponding reply message Copyright © 2003 Jorgen Thelin / Cape Clear Software Inc. Architecture Styles for Distributed Systems For “call-based” distributed systems, there are three main architecture styles commonly used:

Read the paper · More papers on PaperTik