热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SOA设计模式基本概念及原则

系统被描述为不依赖于底层技术的服务服务通过消息实现1SOA涉及到服务的提供者和消费者参与SOA的系统是服务提供者,还是服务的消费者,要视工作流而定服务和消息是无状态的2服务和消费者

《SOA设计模式--基本概念及原则》

系统被描述为不依赖于底层技术的服务

服务通过消息实现1

SOA涉及到服务的提供者和消费者

参与SOA的系统是服务提供者,还是服务的消费者,要视工作流而定

服务和消息是无状态的2

服务和消费者通常由不同的程序语言开发,并运行在不同的Rum-time环境中

SOA涉及到服务自身,可用服务的清单(service directory),消费者连接并使用各服务的公共契约(service negotiation)

 

SOA与传统C/S架构的区别在于,SOA服务是通用的3并且是无状态的,而C/S架构的客户端和服务端是紧耦合的。

 

SOA实现必须权衡目标环境以提供一致的设计。遵守以下8项原则可达到SOA的设计一致性:

1.

标准化的服务契约

2.

消费者与服务之间,服务与服务之间的松耦合

3.

抽象实现细节;消费者只需要知道契约,不需要关心服务的实现细节

4.

可组装4服务而不需关心组装的复杂性

5.

运行时自治5

6.

无状态

7.

可复用6

8.

可通过元数据或公共契约定义发现服务

 

根据这些原则,SOA社区的Pioneers归纳出如下一些SOA的设计模式。其中用到的模式符号及其含义如下图所示:

 

 《SOA设计模式--基本概念及原则》

 

批注:

1.       消息既不能理解为服务和消费者之间的传递的实体对象,也不是Web Service中描述Web MethodXML,而是符合契约(Contract)的信息,消费者通过这些信息告诉服务要做什么,而不是直接告诉服务怎么做;

2.       状态信息的保存,会阻碍松耦合,Services应最大限度地处于无状态;但是要设计无状态的服务,必须尽量在业务层面考虑服务的幂等性;

3.       原文是universally available,个人认为应该理解为“可被所有遵循契约的消费者使用”;

4.       原文是Compose,似乎有些版本会译成“编排”,个人认为有些confusion.多个服务应该是可以被组合成一个更大的服务,实现可组装才是实现了可重用;

5.      运行时自治意味着服务是可以控制生命周期、可用性和边界的。用一个反面例子SQL 2000数据库和代理可以说明,两个服务都是作为Windows服务里托管的,但是代理服务有一个内置的数据库服务依赖。停止数据库服务意味着代理服务也会停止。这个服务间的紧耦合意味着它们不可能分开,或者独立的版本升级。紧耦合降低了买个服务的灵活性和在企业里的应用。

6.      复用性越好,意味者粒度越小,当需要一个粗粒度服务时,可参考原则4

 

 


推荐阅读
author-avatar
小丫2502895573
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有