读书人

SOA十大准则

发布时间: 2013-11-08 17:51:56 作者: rapoo

SOA十大原则

原文:http://www.infoq.com/cn/articles/tilkov-10-soa-principles

在与许多客户的接触中,我发现有必要建立一套SOA的基本原则。下面的部分将介绍SOA中应有的基本原则。这些并非绝对真理,它们更像一个用于SOA相关讨论的参考框架。你会发现:前四项衍生自Don Box提出的四项原则,尽管随着时间的流逝,这四项原则的描述可能已经有了些变化。
相关厂商内容

1. 明确边界:服务被调用时,与实现其功能相关的内容都应被传递过来。对服务的所有访问都应该通过公共接口进行。调用服务时,非隐含的假设是必须的。“服务与消息紧密联系,因为参数进出服务的唯一方式是通过消息进行的”。作为通用的模式,服务调用不应依赖于共享的上下文,而应被作为无状态的模块。契约描述了服务的功能性与非功能性的能力和特点,管理着服务提供的接口。服务调用是一个具有业务逻辑效果的行为,可能有大量的资源开销,并且导致一系列不同于本地方法调用和远程过程调用的错误。服务的调用绝非远程过程调用。

服务的使用和提供应该尽可能地简单,因此与服务间的交互没必要被隐藏得太多。在SOA中,服务发送和接收的消息、服务契约以及服务本身都应当是最好的构件。这就意味着,例如,被用到的编程模型和工具至少应该提供一个API,这个API会帮助服务的编程人员了解上述概念。总的来说,一个明确的接口会封装服务的内在实现,而服务通过该接口发布自己的功能;与服务交互是一个具体的行为,它依赖于服务使用者和提供者之间消息的传递。

2. 共享契约和架构,而不是类:基于一份服务描述(一份契约),服务使用者和服务提供者都可以获得使用或提供服务的全部所需。根据松耦合原则,服务提供者不能依靠服务使用者来重用那些依赖于使用者环境的代码。毕竟,服务使用者可能使用不同的开发环境和运行环境。这条原则给SOA体系中所能交换的数据加上了严格的限制。理想的情况是,数据以符合一种或多种模式的XML文档形式被交换,因为这种方式可应用于任何你能想到的编程环境。因此,因为这条原则在基于DCOM和基于RMI的环境中是不可能被遵守的,所以这两种环境基本上无法成为SOA的可用选项。

3. 策略驱动:为了与服务交互,必须满足以下两组不同的要求:

读书人网 >软件架构设计

热点推荐