`
ahuaxuan
  • 浏览: 633390 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

EAI企业应用集成场景及解决方案

阅读更多
/**
*作者:张荣华(ahuaxuan)
*2007-9-20
*转载请注明出处及作者
*/

首先来一段名词解释吧:

名词解释:
B2B,business to business。(非电子商务中的b2b)
A2A, Application to Application。(可以翻译为应用到应用)
第二个概念好像不是很常见,我暂且用来表示企业内部的应用。B2B用来表示不同企业的应用。
Message Endpoint: 消息端点,接受消息的端点(我们把企业应用之间传输的数据可以称之为消息,那么接受消息的端点就是Message Endpoint)
Adapter: 这是一个非常重要的概念,这里的Adaptor可能是应该应用,或者是组件,为了消除不同系统之间的差异性而产生的。

看了几个基础概念之后,对消息比较熟悉的人大概都知道我在说什么了,没错,还是SOA,但是今天主要不是谈概念,而是架构。

我们知道随着社会的发展,企业内部和企业之间的交互变的越来越频繁,尤其是企业内部的系统。一个大型企业会用到大小不一的多个系统,他们可能是用不同的语言写的,运行在不同的机器上,有不同的系统平台,但是随着企业的发展,他们之间开始需要有信息交互。那么他们就需要被集成起来。
除了企业内部的系统集成,还有一种就是企业之间系统的集成,他们需要共享信息,或者他们通过系统来做生意,这些都是企业之间的系统集成。

下面我们来设定一个具体的场景:某企业内部有多个独立的系统,但是这多个系统需要有信息的交互,而且这多个系统之间的某一个系统还需要和其他企业的系统进行交互。看上去问题域非常明确,就是信息交换。我用visio画了一幅图来表示这种场景。

见图1


从图上看来,有四家公司有着业务上的联系,他们分别是A,B,C,D四家公司。A公司分别和B,C,D三家公司有业务往来。A公司内部有多个系统进行交互,我们就叫它A2A。显然A公司和B,C,D三家公司之间存在着不可避免的差异性,但是这不是我们要关注的重点,重点是A和BCD是属于哪种情况,很显然是B2B。那么在上面这张图中同时出现了A2A和B2B两种情况,这两种情况可以说是SOA中常见的场景了。

在这里我也不打算提供企业应用集成(EAI)服务器和企业服务总线方面的讨论,因为我也没有研究或使用过哪个EAI和ESB框架(但将来可能会使用,“将来的事将来再说“)。

我们可以把A公司的app称之为endpoint,其他应用的接入点称之为adapter(内容应用之间也有可能存在adapter,其他企业接入点绝大多数都需要adapter了)。如图中所示,这样我们就可以明确整个图的概况了。A的整个应用体系由endpoint和adapter构成。

我们可以看到在A2A的情况下有一个JMS server,还有轻量级远程调用,我也知道,很多公司在A2A的情况下使用了webservice,但是我认为这是不恰当的,太重量级了,不合适企业内部应用之间的调用(特殊情况例外,比如两个应用使用不同语言开发等等,有时候这种特殊情况是很多的,呵呵)。那么A2A的情况下用什么比较好,个人觉得如果都是构建于java语言,那么使用jms+httpinvoke或者jms+Hessian比较好。为什么,简单。两个都是java的应用使用xml作为通信的结构会带来不必要的复杂,而且会浪费大量的带宽,而且是大师推荐(该点仅作为参考)。

而在B2B的情况下,好像选择也不是很多,一般就是基于xml+http,还有就是webservice.(虽然还是xml+http),这种情况应该很常见,实际上我们可以看作是通过文件来作为消息传递,但是这个文件的格式被统一化,规范化了,就是xml。

在我看来图中所描述的业务模型就是A2A+B2B的结合体,当然我们也要区分他们,区别对待,因为不同的场景都技术的需求是不一样的,比如B2B的场景中我们可能需要security(我们可以现在ws-security),而A2A的场景中绝大多数不需要security支持(这也是jms规范中为什么没有定义security相关内容的原因)当然授权和验证不能属于security,授权和验证大多数remote invoke技术都是支持的。这里讲的security是指”对称加密”,”非对称加密”,”数字签名”,”双重签名”的支持等。

当然这所有的一切都是基于都业务和系统的了解,如果对业务不了解就不要谈架构了。说到这里我想批评一下自己,原来一直不重视业务,为了技术而技术,后来慢慢发现业务的重要性,可以这样说,如果对业务不熟悉就不能给整个系统作一个合理的架构,如果对业务不熟悉也不能写出好的代码来,因为代码就是对业务的抽象,不熟悉业务怎么可能写出好代码(当然并不是说熟悉了业务就一定能写出好代码,这还得看程序员得水平了)。

至于具体的技术的特性(如,jms,webservice,hessian等等)不在这篇文章的讨论之列,本文假设大家对这些技术都比较了解。

欢迎大家对技术的选择提出不同的看法。而且我觉得这篇文章是比较high level的,如果大家比较感兴趣,我会接下去和大家一起学习讨论具体的技术。
 

  • 描述: 图1
  • 大小: 39.3 KB
分享到:
评论
4 楼 ahuaxuan 2007-10-15  
liquidthinker 写道
请教楼主Hessian可不可以走https,如果可以的话a2a,b2b都可以放心使用,请问楼主是否有相关资料,感谢!

1可以的,走https主要是配置服务器,跟hessian没多大关系,不过https貌似挺慢的呀,建议使用对称加密,一端加密,另一端解密。比如使用3DES,
可以参考一下 http://www.iteye.com/topic/70663这个贴,这样基本就够了。

如果说密码传递有问题,那就考虑一下双重签名吧。

2即使hessian走https,那么用在b2b上也是不合适的,hessian不合适用在b2b上不是因为安全性问题,而是他的面向接口调用,用在b2b上的话就得拿到对方得接口,和参数类型,貌似很不方便,不如直接走http+xml了
3 楼 liquidthinker 2007-10-15  
请教楼主Hessian可不可以走https,如果可以的话a2a,b2b都可以放心使用,请问楼主是否有相关资料,感谢!
2 楼 ahuaxuan 2007-10-15  
JavaInActoin 写道
 我了解的情况,现在的集成方式都是在最低层的数据集成。而且没有规划,都是上一个软件,搞一套方案,集成都是点到点,这种n*(n-1)/2的复杂性会随着n的增加而变的难以驾驭。

同意, 甚至有的公司开发数据库,来做集成,相当恶搞。
确实企业集成只有在需要集成的场景下才需要考虑(废话),不过也有的系统生来就是为了和其他系统集成的。而且这种系统也在不断的增多。
JavaInActoin 写道
 
ahuaxuan 写道

 在这里我也不打算提供企业应用集成(EAI)服务器和企业服务总线方面的讨论,因为我也没有研究或使用过哪个EAI和ESB框架(但将来可能会使用,“将来的事将来再说“)。

我想这已经不是将来的事了,以遵循soa架构为主的集成平台会迅速发展起来,对于软件供应商来说,在软件中携带集成平台的企业会占有主动权。
从什么地方可以看出来携带集成平台的企业会占有主动权呢。
1 楼 JavaInActoin 2007-10-14  
  集成这东西很难讨论,太复杂。不同的环境下(软件类型,软件来源,软件架构,应用状态...),不同的视角下(应用企业,供应商,集成商),问题域都不一样。
  对于一个新应用系统,在没有考虑与别的系统交互之前,就不存在集成的问题,根据这个思路,对于企业内部的系统,最好的做法就是尽量把“各个APP”做成一个APP。但在实际情况中,企业内不但有多个APP,而且有多个软件供应商,各个APP的开放程度也不一样,我了解的情况,现在的集成方式都是在最低层的数据集成。而且没有规划,都是上一个软件,搞一套方案,集成都是点到点,这种n*(n-1)/2的复杂性会随着n的增加而变的难以驾驭。
ahuaxuan 写道

 在这里我也不打算提供企业应用集成(EAI)服务器和企业服务总线方面的讨论,因为我也没有研究或使用过哪个EAI和ESB框架(但将来可能会使用,“将来的事将来再说“)。

我想这已经不是将来的事了,以遵循soa架构为主的集成平台会迅速发展起来,对于软件供应商来说,在软件中携带集成平台的企业会占有主动权。

相关推荐

Global site tag (gtag.js) - Google Analytics