<!----><o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
通常,通过消息系统集成的应用很少有同样的消息格式。比如说,一个帐务系统同一个CRM系统对客户对象是有着不同的概念的。基于这个,一个系统可能将消息存储在关系表中,另一个可能存储在文件中。集成已存在的系统通常意味着我们没有修改系统以便使他们更好的一起工作的自由。然而,集成方案不得不协调和解决各种系统之间的不同。Message Translator模式提供了一个通用的解决方案。这里解释几种特定的Message Translator。
<o:p> </o:p>
Message Transformation包含以下几种模式:
l Envelope Wrapper
l Content Enricher
l Content Filter
l Claim Check
l Normalizer
l Canonical Data Model
<o:p> </o:p>
大多数消息系统放置特定的需求在消息头的格式和内容中。我们包装有效数据到一个Envelope Wrapper中以适应消息基础设施的需求。如果消息需要穿过不同的消息基础设施,可以结合多个Envelope Wrapper。
如果原始系统不能提供目标系统需要的数据域,可以使用一个Content Enricher。它可以查找缺少的信息并从已有数据中计算出它。Content Filter正好相反,它从消息中删除不需要的数据。Claim Check也从消息中删除数据,但是它将存储他们以便以后取回。Normalizer将多个不同格式的消息翻译成统一格式。
<o:p> </o:p>
消除依赖<o:p></o:p>
<o:p> </o:p>
消息转换在集成中是一个很深的话题。Message Channels和Message Routers可以通过消除应用必须知道另外一个应用的位置的需求从而解除应用间的基本依赖。
一个应用可以发送一个消息到Message Channel而不必担心谁来取出消息。然而消息格式增加了另外一种依赖。如果一个应用不得不将消息格式化成另外一个应用的数据格式,通过Message Channel解耦的说法就像一个幻想。接收系统的任何改变或切换到另外一个接收系统都需要对发送应用进行改变。Message Translators可以帮助除去这种依赖。
<o:p> </o:p>
元数据管理<o:p></o:p>
<o:p> </o:p>
将消息从一个消息格式转换到另一个格式需要操作元数据 - 描述数据格式的数据。
元数据在两个并行系统之间的集成中扮演着非常重要的角色。一个处理实际的消息数据,另外一个处理元数据。许多用于处理消息数据的模式也同样可以管理元数据。比如说,Channel Adapter不仅可以从一个系统中移进和移出消息,还可以从一个外部应用中获取元数据,并将其加载到一个元数据仓库中。使用这个仓库,集成开发者可以定义应用元数据与Canonical Data Model.之间的转换。
<o:p> </o:p>
<o:p> </o:p>
元数据集成<o:p></o:p>
<o:p> </o:p>
<!----><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>
举例来说,上面的图描述了两个需要交换客户信息的应用的集成。每个系统的客户数据的定义稍有不同。从A到B的消息需要转换一下才能被B接收。如果Channel Adapters可以抽取元数据的话,创建一个转换将非常简单。然后这个元数据可以被放入一个仓库,大大的简化了Message Translator的配置和验证。元数据可以被存储成不同的格式。通常XML消息使用XSD格式。其他EAI工具实现所有元数据格式,但是允许管理员导入或导出到其他格式。
<o:p> </o:p>
消息系统外的数据转换<o:p></o:p>
<o:p> </o:p>
这些转换模式组成的很多原则可以被应用于非消息集成。比如说,File Transfer可以执行系统间的转换工作。类似的,Remote Procedure Invocation必须使请求使用要调用的service的格式,即使应用本身的格式可能不同。典型的,需要调用程序来执行转换。一些最成熟的转换引擎组成了ETL工具,比如Informatica或者DataMirror。这些工具一般都一次转换大量的数据,而不是转换单个消息。
Message System应专注于几种基本的Message Translator模式。而不应该关心实体间结构转换的细节(不同的数据模型之间的转换,比如ER模型不支持多对多关系而其他的支持这种)。关于这个主题最老也使最相关的书是Kent的《Data and Reality》。
<o:p> </o:p>
分享到:
相关推荐
Oracle之ESB培训 00_Overview 01_ESB_Resources 02_ContextVariable 03_ServiceBusConsole 04_MessageFlow 05_MessageEnrichment 06_ESB_EJB 07_MessageFlowActions 08_Transformation 09_ESB_Debug
Mule ESB的架构设计围绕着核心模块构建,包括Routing(路由)、Transaction Management(事务管理)、Transformation(转换)、Message Broker(消息代理)、Transportation Management(传输管理)和Security(安全...
Mule 通过 Transports/Connectors 与外围的异构系统连接,提供 Routing(路由)、Transaction Management(事务管理)、Transformation(转换) 、Message Broker(消息代理) 、Transportation Management(传输...
4. **转换引擎(Transformation Engine)**:处理不同格式的数据转换,使得不同系统的数据可以在ESB上进行交互。 5. **安全组件(Security Components)**:确保服务的安全性,通过认证、授权和加密等机制保护数据...
- **作用**:通过标准化的消息传递模式,ESB能够简化系统之间的通信,并提供灵活性和可扩展性。 ##### 1.2 SOA与ESB的关系 - **SOA(面向服务的架构)**:SOA是一种设计原则,强调通过服务来构建和组织应用,这些...
#### 四、MuleESB 3.0 的其他增强 - **FLOW配置**:配置过程更加流程化,简化了配置步骤。 - **Patterns**:配置模式化,有助于简化不同情况下的配置。 - **Annotation**:改进后的注释机制对于组件中的依赖注入、...
- **消息转换(Message Transformation)**:通过XSLT、Java或表达式语言转换数据格式。 - **路由策略(Routing Policies)**:基于条件将消息分发到不同的业务服务。 - **错误处理和异常管理**:提供一套机制来处理...
- **WebSphere Message Broker**:IBM 提供的一款企业服务总线 (ESB) 产品,用于实现不同系统和服务之间的集成与通信。 - **Event Broker**:作为 WebSphere Message Broker 的一部分,它专注于处理事件驱动的应用...
图整体结构从上图可见,Mule通过Transports/Connectors与外围的异构系统连接,提供Routing(路由)、TransactionManagement(事务管理)、Transformation(转换)、MessageBroker(消息代理)、...
2. **Core Modules**:包括 Routing(路由)、Transaction Management(事务管理)、Transformation(转换)、Message Broker(消息代理)、Transportation Management(传输管理)、Security(安全)等。...
- **Message Broker**:消息经纪人是ESB的核心,负责接收、路由和转发消息。它确保消息在不同的系统间正确传递,并支持多种消息格式,如XML、SOAP等。 - **Service Bus**:服务总线提供了服务注册、发现和管理的...
- **Apache ServiceMix**: The most popular and powerful distributed open-source Enterprise Service Bus (ESB) and Java Business Integration (JBI) container. #### Getting Started To start using Apache ...