Appendix
Retired Content |
---|
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
Integration Patterns
June 2004
Summary: This appendix contains a table that lists patterns and pattlets that are referenced in this book. Pattlets are actual patterns that this book refers to; however, the book does not discuss them in detail. The table also provides a reference to the original work that identified the pattern or pattlet, if applicable.
List of Patterns and Pattlets
This appendix contains a table that lists patterns and pattlets that are referenced in this book. Pattlets are actual patterns that this book refers to; however, the book does not discuss them in detail. The table also provides a reference to the original work that identified the pattern or pattlet, if applicable.
Table 1: List of Patterns and Pattlets
Pattern or pattlet | Problem | Solution | Source |
---|---|---|---|
Entity Aggregation | How can enterprise data that is redundantly distributed across multiple repositories be effectively maintained by applications? | Introduce an Entity Aggregation layer that provides a logical representation of the entities at an enterprise level with physical connections that support the access and that update to their respective instances in back-end repositories. | |
Process Integration | How do you coordinate the execution of a long-running business function that spans multiple disparate applications? | Define a business process model that describes the individual steps that make up the complex business function. Create a separate process manager component that can interpret multiple concurrent instances of this model and that can interact with the existing applications to perform the individual steps of the process. | |
Portal Integration | How can users efficiently perform tasks that require access to information that resides in multiple disparate systems? | Create a portal application that displays the information that is retrieved from multiple applications in a unified user interface. The user can then perform the required tasks based on the information that appears in this portal. | |
Data Integration | How do you integrate information systems that were not designed to work together? | Integrate applications at the logical data layer. Use a Shared Database, a File Transfer, or a Maintain Data Copies implementation. | |
Shared Database (a kind of data integration) |
How can multiple applications work together to exchange information? | Have multiple applications store their data in a single database. Define a schema that handles the needs of all the relevant applications. | Shared Database pattern [Hohpe04]. |
Maintain Data Copies (a kind of data integration) |
How can multiple applications work together to exchange information? | Have multiple applications access multiple copies of the same data. Maintain state integrity between copies. | Maintain Data Copies is the root pattern for twelve patterns (the data movement cluster) that are presented in "Data Patterns" [Teale03]. |
File Transfer (a kind of data integration) |
How can multiple applications work together to exchange information? | At regular intervals, make each application produce files that contain the information that the other applications must consume. After a file is created, do not maintain the file. | File Transfer pattern [Hohpe04]. |
Functional Integration | How do you integrate information systems that were not designed to work together? | Integrate applications at the logical business layer. Use Distributed Object Integration, (proprietary) Message-Oriented Middleware Integration, or Service-Oriented Integration. | |
Presentation Integration | How do you integrate information systems that were not designed to work together? | Access the application's functionality through the user interface by simulating a user's input and by reading data from the screen. | |
Message Broker | How do you integrate applications without enforcing a common interface and also allow each application to initiate interactions with several other applications? | Extend the integration solution by using Message Broker. A message broker is a physical component that handles the communication between applications. Instead of communicating with each other, applications communicate only with the message broker. An application sends a message to the message broker to give the message broker the logical name of the receivers. The message broker looks up applications that are registered under the logical name and then passes the message to them. | |
Distributed Object Integration (a kind of functional integration) |
How do you integrate applications at the logical business layer? | Develop systems that have object interfaces that can be consumed remotely by other systems. | Remote Procedure Invocation [Hohpe04]. |
Message-Oriented Middleware Integration (a kind of functional integration) |
How do you integrate applications at the logical business layer? | Use proprietary message-oriented middleware to send messages asynchronously. | Messaging [Hohpe04]. |
Service-Oriented Integration
(a kind of functional integration) |
How do you integrate applications at the logical business layer? | Use Web services to expose interfaces that can be consumed remotely by other systems. | |
Point-to-Point Connection | How do you ensure that exactly one receiver receives a message? | Use Point-to-Point Connection to integrate two systems. The sending system must translate the message into a format that the receiving system understands. When you use point-to-point connections, each system determines the address of all the other nodes that it communicates with. |
|
Broker | How can you structure a distributed system so that application developers do not have to concern themselves with the details of remote communication? | Introduce a broker whose tasks are to locate services, to forward requests, and to return responses to clients. Services register themselves with the broker. Clients access services by making a service request through the broker. | [Buschmann96]. |
Direct Broker | How do you integrate applications without enforcing a common interface, allow each application to initiate interactions with several other applications, and reduce hot spots (performance problems that occur under high loads in specific areas)? | Extend the integration solution by using a direct broker component that handles the communication between applications. Initially, the application asks the broker to locate the other registered applications based on the logical names of those applications. From this point forward, all communication is made directly between applications. | |
Indirect Broker | How do you integrate applications without enforcing a common interface, but allow each application to initiate interactions with several others? | Extend the integration solution by using an indirect broker component that handles the communication between applications. Instead of communicating directly, applications communicate only with the message broker. An application sends a message to the broker. This message provides the logical name of the receivers. The broker then looks up applications that are registered under the logical name and passes the message to that application. | |
Publish/Subscribe | How can an application in an integration architecture only send messages to the applications that are interested in receiving the messages without knowing the identities of the receivers? | Extend the communication infrastructure by creating topics or by dynamically inspecting message content. Enable listening applications to subscribe to specific messages. Create a mechanism that sends messages to all interested subscribers. There are three variations of the Publish/Subscribe pattern that you can use to create a mechanism that sends messages to all interested subscribers. The three variations are List-Based Publish/Subscribe, Broadcast-Based Publish/Subscribe, and Content-Based Publish/Subscribe. | |
Message Bus | As an integration solution grows, how can you lower the cost of adding or removing applications? | Connect all applications through a logical component known as a message bus. A message bus specializes in transporting messages between applications. A message bus contains three key elements: a set of agreed-upon message schemas; a set of common command messages [Hohpe04], and a shared infrastructure for sending bus messages to recipients. | |
Pipes and Filters | How do you implement a sequence of transformations so that you can combine and reuse them independently? | Implement the transformations by using a sequence of filter components, where each filter component receives an input message, applies a simple transformation, and sends the transformed message to the next component. Conduct the messages through pipes [McIlroy64] that connect filter outputs and inputs, and that buffer the communication between the filters. | |
Gateway | How can you make the applications of an integration solution access an external system without introducing many-to-one coupling between the applications and the external system? | Add a Gateway component that abstracts the access to the external resource. The gateway presents a single interface to the integrated applications while hiding the external resource interface. In addition, the gateway encapsulates any protocol translation that may be necessary to communicate with the external resource. |
Retired Content |
---|
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |