SOA四个原则
内容提要
SOA面向服务的开发基于四个原则:边界明确、服务自主、服务共享的是结构和契约、服务兼容性是根据策略确定的。面向服务的设计通过显式消息传递模型、自主部署和版本管理、基于模式和契约的交互、以及策略表达式来实现这些原则。这种设计模式强调简单性、通用性和稳定性,以提高系统的性能和可靠性。
延伸解读
边界明确:显式消息传递降低跨服务通信成本
文章指出,跨地理、信任机构和执行环境的服务通信成本高昂,因此面向服务设计采用显式消息传递模型,而非隐式方法调用。方法调用被视为私有实现细节,服务边界之外不可见。这种设计减少了必须跨边界共享的抽象概念,从而降低开发组织间的沟通成本。读者可关注:在分布式系统中,明确消息边界有助于控制复杂性和提升性能。
服务自主:独立部署与动态拓扑的实践含义
服务自主性体现在独立部署和版本管理上。文章强调,面向服务假定原子部署是例外,整个系统的部署状态很少静止。单个服务常先于消费应用开发,拓扑会随时间演变。这要求处理部分故障,常用事务、持久队列、冗余部署和故障转移等技术。读者需注意:自主服务意味着消费应用可能随时故障,系统设计必须包含容错机制。
共享结构与契约:机器可验证性保障服务完整性
服务交互基于模式(结构)和契约(行为),而非类。每个服务公布合约,描述可发送/接收的信息结构及排序约束。这种严格分离简化了部署,因为分布式对象概念需要共同执行环境,与自主计算冲突。服务必须谨慎验证输入数据,并保持结构与契约稳定。为适应变化,常使用XML通配符和可选SOAP标头等不破坏兼容性的方式。
策略驱动兼容性:语义兼容的机器可读表达
面向服务将结构兼容性与语义兼容性分开处理。结构兼容性可通过数据包嗅探、验证防火墙等机器技术验证;语义兼容性则以机器可读策略表达式公布服务的能力和要求。策略断言有全局唯一名称,含义一致,可带参数。单个断言对系统不透明,实现者可用简单命题逻辑确定兼容性。这有助于在分布式环境中动态评估服务能否协同工作。
Q&A
SOA的四个基本原则是什么?
SOA的四个基本原则是:边界明确、服务自主、服务共享的是结构和契约、服务兼容性根据策略确定。
为什么SOA强调边界明确?
因为面向服务的应用程序通常由分布在遥远地理位置、多个信任机构和不同执行环境中的服务组成,跨边界通信的成本很高。边界明确原则承认这些成本,因此采用显式消息传递模型来降低复杂性,并减少必须跨服务边界共享的抽象概念的数量和复杂性。
SOA中服务自主性体现在哪些方面?
服务自主性主要体现在独立部署和版本管理上。面向服务的开发假定应用程序的原子部署是例外,整个系统的部署状态很少是静止的,单个服务的部署通常早于消费应用程序的开发。此外,服务自主性也影响故障处理方式,服务认为消费应用程序可能随时故障,因此采用事务、持久队列、冗余部署和故障转移等技术来处理部分故障模式。
SOA中服务共享的是什么?为什么不是类?
服务共享的是结构和契约,而不是类。因为面向服务的开发没有类的结构,服务的交互完全基于模式(结构)和契约(行为)。每个服务公布一个合约,描述它可以发送和/或接收的信息结构以及排序约束。这种结构与行为的严格分离简化了部署,避免了分布式对象概念所需的共同执行和安全环境,与自主计算的目标一致。
SOA如何确定服务兼容性?
SOA将结构兼容性和语义兼容性分开处理。结构兼容性以结构和合约为基础,可以通过机器技术(如数据包嗅探、验证防火墙)来验证。语义兼容性则以策略形式明确说明能力和要求,每项服务以机器可读策略表达式的形式公布其能力和要求。策略表达式指出必须成立的条件和保证(断言),断言由稳定且全局唯一的名称标识,并可能带有参数。实现者可以应用简单的命题逻辑来确定服务兼容性。
SOA设计如何提高系统的性能和可靠性?
SOA设计通过强调简单性、通用性和稳定性来提高系统的性能和可靠性。具体方式包括:采用显式消息传递模型降低跨边界通信的复杂性;通过自主部署和版本管理提高灵活性;基于模式和契约的交互确保机器可验证性;使用策略表达式明确服务的能力和要求,从而保护单个服务和整个应用程序的完整性。