SOA 的特征

基于上面的讨论,我们给出 SOA 的下面一些特征:
1)服务的封装(encapsulation):将服务封装成用于业务流程的可重用组件的应用程序
函数。它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变。封装隐
藏了复杂性。服务的 API 保持不变,使得用户远离具体实施上的变更。
2)服务的重用(reuse):服务的可重用性设计显著地降低了成本。为了实现可重用性,
服务只工作在特定处理过程的上下文(context)中,独立于底层实现和客户需求的变更。
3)服务的互操作(interoperability):互操作并不是一个新概念。在 CORBA、DCOM、
web service 中就已经采用互操作技术。在 SOA 中,通过服务之间既定的通信协议进行互操
作。主要有同步和异步两种通信机制。SOA 提供服务的互操作特性更有利于其在多种场合被
重用。
4)服务是自治的(Autonomous)功能实体:服务是由组件组成的组合模块,是自包含
和模块化的。
SOA 非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,
如.NET Remoting、EJB、COM 或者 CORBA,都需要有一个宿主(Host 或者 Server)来存放和
管理这些功能实体;当这些宿主运行结束时,这些组件的寿命也随之结束。这样当宿主本身
或者其他功能部分出现问题的时候,在该宿主上运行的其他应用服务就会受到影响。
SOA 架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如
事务处理(Transaction)、消息队列(Message Queue)冗余部署(Redundant Deployment)和集群系
统(Cluster)在 SOA 中都起到至关重要的作用。
5)服务之间的松耦合度(Loosly Coupled):服务请求者到服务提供者的绑定与服务之间
应该是松耦合的。这就意味着,服务请求者不知道提供者实现的技术细节,比如程序设计语
言、部署平台,等等。服务请求者往往通过消息调用操作,请求消息和响应,而不是通过使
用 API 和文件格式。
这个松耦合使会话一端的软件可以在不影响另一端的情况下发生改变,前提是消息模式
保持不变。在一个极端的情况下,服务提供者可以将以前基于遗留代码(如 COBOL)的实
现完全用基于 Java 语言的新代码取代,同时又不对服务请求者造成任何影响。这种情况是真
实的,只要新代码支持相同的通信协议。
6)服务是位置透明的(location transparency):服务是针对业务需求设计的。需要反映
需求的变化,即所谓敏捷(agility)设计。要想真正实现业务与服务的分离,就必须使得服
务的设计和部署对用户来说是完全透明的。也就是说,用户完全不必知道响应自己需求的服
务的位置,甚至不必知道具体是哪个服务参与了响应。

你可能感兴趣的:(soa,deployment,cobol,ejb,api,语言)