企业集成模式(中文).docVIP

  • 233
  • 0
  • 约3.7万字
  • 约 53页
  • 2016-06-09 发布于安徽
  • 举报
企业集成模式(中文).doc

最近在了解ESB,发现无法逃避的知识是enterprise integration pattern , 而且发现绕来绕去都会有一本经典的书需要去读,那就是《Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions》这本书,于是决定读读这个理论。 一, 绪论 这本书主要介绍如何为企业内的不同消息产品和技术进行集成,而不是介绍具体的什么产品和技术。 当前的消息技术和阵营有 JMS;Microsofts Message Queuing (MSMQ),嵌入式的webservice等 而产品厂商很多有: IBM (WebSphere MQ Family), Microsoft (BizTalk), TIBCO, WebMethods, SeeBeyond, Vitria等 介绍 一个消息的大概会有下面几个步骤,如图 有创建create;发送send;传送deliver; 接收receive;处理process 五个步骤 其中两个重要的概念 Send-and-forget :消息发送后不需要在等待回复就能确保接收者能接受到消息,同时消息发送者可以去做其他事情。 Store-and-forward:发送者先存储消息然后forward到接收者机器,接收者机器存储后在进行处理。 从上面模型可以看出,从step2到step4 其实就是整个ESB产生的雏形。 通常我们通过异步消息方式来构建ESB。 集成 六种集成场景 Information portals:多个数据源获取某个完整数据,比如生成报表。 Data Replication:同类数据的复制 Shared Business Function: 共用的信息:将通用的数据作为function或者service共外部多系统使用。 Service-Oriented Architecture:面向服务架构 Distributed Business Process:分布式事务处理:通常比如一个操作事务存在多个系统,而这种往往和面向服务架构类型界限不是那么清楚。 Business-to-Business Integration 上面基本都是单企业之间系统的集成,那么这个模型表示多企业之间的集成。 集成方法的具体技术类型 File Transfer: 文件传输 shared Database:共享数据库 Remote Procedure Invocation:远程过程调用 Messaging:消息 消息系统 在企业集成模式中,消息方式则更为灵活有效,因此常常基于消息方式的系统成为企业集成的首选,很多流行的ESB也大部分基于消息方式 消息系统中的几个概念: Channels:通道,用于传输数据 Messages:消息,传输数据的载体 Pipes and Filters:管道和过滤器, 将原数据进行过滤或处理. Routing:路由,对消息进行路由 Transformation: 转换, 根据目标数据的要求对原数据进行数据格式的转换. Endpoints:终端的插件,可以根据协议或标准构建,可以和信息系统进行集成. Message Channel: Channel 是消息系统的逻辑地址,有了channel, 发送者将消息放入channel而不用关心接收者是否已经收到该消息,这个由channel来保证. 虽然消息系统可以在某些应用运行是启动新加的channel,但其他应用则不一定能知道该新加的channel,因此我们还是建议在配置的时候来添加channel. 在具体技术实现上,开发人员可以通过代码来添加channel,比如JMS中用createQueue ; .NET 则用 new MessageQueue. Channels虽然消耗资源比较少,但他也不是一点资源都不消耗,因此在创建成千上万这样的channels需要综合考虑各个因素以及选择适合的高扩展性的消息系统. 在使用过程中,通常对channel有两步操作: 配置channel 获取channel 如: J2ee的jms 配置channel: 通过j2eeadmin工具 j2eeadmin -addJmsDestination jms/mytopic topic j2eeadmin -addJmsDestination jms/myqueue queue 获取channel: Context jndiContext = new InitialContext(); Queue myQueue = (Queue) jndiContext.lookup(jms/myqueue); Topic myTopic = (Topi

文档评论(0)

1亿VIP精品文档

相关文档