SOA松耦合的依赖关系

1、什么叫耦合(Coupling)

     耦合是相互交互的系统彼此间的依赖。

     依赖分为真依赖(Real Dependency)和假依赖(Artifical Dependency)。

     真依赖是系统从其他系统消费的特征(feature)和服务的集合。真依赖总是存在,只要系统间存在交互,无法简化。

     假依赖是系统为获得其他系统提供的特征和服务而必须服从的因素(如语言依赖、平台依赖、API依赖等),假依赖也总是存在,但可以减少或降低其代价。

2、什么叫松耦合(loose Couple)

     理想的松耦合体现在系统间仅存在真依赖关系,或系统间的假依赖已经最小化。

     如传统的分布式构件系统(CORBA、EJB)在交互上往往是语言、平台和厂商相关的。而服务的调用则并不需要这些依赖关系,因此SOA风格的体系机构与基于构件的体系机构相比,是更加松耦合的体系机构。

     服务是通过服务描述剥离上述语言、平台和厂商的依赖关系的。服务消费者对服务的使用完全依赖于服务描述。服务描述是服务消费者和服务之间的“合同”,包括了服务消费者为实现与服务交互所需的所有信息,如接口定义、服务的使用策略等。服务描述由于其按照开发标准以文本方式声明,所以屏蔽了服务的实现细节、剥离了传统构件所具有的语言、平台和厂商的相关性等假依赖关系。

 

      SOA中的假依赖包括:

      (1)时间依赖或同步依赖,在基于RPC的分布式系统最为明显,而基于事件驱动的异步交互可以消除这种依赖。

      (2)访问地址依赖,一般情况,服务描述需要包括服务的访问地址,客户才能访问服务。在SOA中,可通过间接寻址的策略消除这种依赖。有两种方法实现间接寻址:a.访问地址放到注册中心,服务访问者通过注册中心来获取服务的地址;b.通过配置文件。

      (3)访问协议依赖。

 

3、SOA的松耦合本质的好处

     (1)松耦合与复用性

     SOA的松耦合把软件复用推到了一个新的高度。

     a. 剥离了客户和服务之间的语言/平台的依赖性,使得服务可被更多的客户使用

     b. 服务的自治性使得客户可以随时访问服务,与需要事先获得并部署的构件相比,复用性进一步提高。

     c. 服务注册中心为服务提供了共享场所,有利于服务被更多客户使用。

     (2)松耦合和灵活性

     a.松耦合使服务具有实现无关性,只要接口描述不变(注:只要系统间存在调用关系,对接口的依赖是无法避免的,因为接口是调用契约,是真依赖)的情况下,服务提供者对服务实现的任意修改都不会对SOA应用任何影响(唯一的影响可能就是实现改变后,性能、服务质量等方面的改善)。

     b.SOA应用的功能由该应用所包含的一组服务以及这些服务之间的松耦合关系体现,对服务功能的调整可以通过调整这些松耦合关系实现,新功能可以通过增加新的耦合关系得到(服务组合)或引入新的服务得到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章