转一个soa的帖子

原帖http://esoft.ctocio.com.cn/40/12134540_2.shtml
SOA规范的要求
  SOA的规范要达到的要求主要有以下几点:

  ·统一的交互方式:这个目标就是解决上面异构系统之间的通讯问题

  ·服务品质:也叫做QoS,包括了通讯的安全,可靠的访问。每个服务能支撑的访问量是有限的,流量控制,机器资源负载分配等等措施都是保证服务质量的。

  ·依赖管理:大系统内部往往是小系统之间的耦合工作来完成,那么系统和系统间少不了就要产生耦合,或者说是依赖。那么SOA就需要有解系统间耦合的规定,不能让不同系统强制耦合在一起。

  ·高性能,高可用:协作的系统,当然要性能过关,客户用着用着说,怎么报出Exception了,或者说"系统正在维护,请耐心等待"
  与其说SOA提出这些规范,不如说SOA提出了这些目标。实现了这些目标,那么至少说您的大系统、大软件是符合SOA规范的。

  实现SOA规范的,可参考的标准有SCA和ESB。

SOA实现

  首先大家不要误会,SCA和ESB不是2个对立的东东,他们不是麦当劳和肯德基,他们的关系类似于JPA规范和Hibernate实现之间的关系。ESB更像是个抽象的概念,而SCA是一个面向应用的编程和组装方式。使用SCA,开发人员基本不用考虑技术接口, 代码是纯业务逻辑。

  SCA的发布服务:

  SCA为了减少对现有系统的入侵,将现有系统的服务类抽象成接口,当然如果原先就是接口+实现类就更方便了。通过SCA配置默认将系统接口暴露成为SCA服务。至于具体的配置文件格式和相关实现类的配置Demo在此先暂时放一放。

  SCA的调用服务:

  调用服务的方式可以采用xml配置实现,借助Spring集成相关SCA框架的整合可以很方便的使用SCA服务完成自己的业务。这个有点类似Spring集成CXF,这个内容在此也先不介绍。

  SCA支持的通信及其交互方式:

  SCA规范规定通讯方式有3种方式,JMS、WebService、跟情况而定,如果应用处于同一JVM采用JMS,不同则采用WebService。当然了,通过扩展SCA也可以支持其他通讯方式。

  对于系统间的依赖管理SCA并没做太多解决的规范,而调试跟踪也没提出具体规定性的方案。这当然取决于具体的SCA实现框架,或者借助其他开源工具,比如Maven、TestNG整合等等手工措施待见属于你们公司自己的基于SOA思想的SCA平台。

  ESB和SCA不是竞争关系,ESB算是提出一些基于SOA理念的一些抽象概念,核心思想是基于消息中间件来实现系统之间的交互,将系统要通讯的消息动作放到一个统一的寻呼台(消息中间件),处理消息队列的时候,消息自身带着目的信息,之后就发送过去,完成业务逻辑,就相当于麦当劳有个中央总控,所有人都有一个随身携带着的寻呼机,客户来了买餐,前台打开寻呼机往中央寻呼台发送一条消息:“客人点餐,儿童套餐”,发送完毕后,中央寻呼机将此消息发给了后厨,后厨赶紧炸薯条,烤面胚,微波炉热牛肉。一切皆由消息总线进行任务分发。

  其实ESB相当于承担了SOA提出的统一服务方式进行交互。

sca 的实现 tuscany apache项目http://tuscany.apache.org/
esb 开源 mule serviceMix等等。

简单点就是camel+activemq.

猜你喜欢

转载自makeyouown.iteye.com/blog/1144895