您所在的位置: 首页 > 科学 > 正文

松耦合

http://www.zcsbbs.com/ 时间:2017-12-20  来源:七七网  作者:语嫣

松耦合通常是基于消息的系统,此时客户端和远程服务并不知道对方是如何实现的。客户端和服务之间的通讯由消息的架构支配。只要消息符合协商的架构,则客户端或服务的实现就

松耦合通常是基于消息的系统,此时客户端和远程服务并不知道对方是如何实现的。客户端和服务之间的通讯由消息的架构支配。只要消息符合协商的架构,则客户端或服务的实现就可以根据需要进行更改,而不必担心会破坏对方。

  

最近,人们越来越热衷于比较应用程序交互的松耦合方法和紧耦合方法。造成这个趋势的主要技术原因是:使用UDDI(Universal Description, Discovery and Integration,通用描述、发现和集成)等标准,Web服务可以动态地发现和绑定到其他服务。而主要业务原因是:企业越来越需要灵活地处理业务流程的更改以及与合作伙伴的交互方式。

  传统上,业务流程是在企业范围,甚至在企业的不同业务单元内开发。这些活动在详细的实时信息的帮助下进行管理。跨多个业务单元或跨企业的流程必须更加灵活,以应对各种各样的需求。在这种情况下,可能出现更多的不确定性:参与者及其角色不断变化,所需的交互类型也不断变化。

  在运营状况起伏不定的环境下,必须有一个松耦合架构,以降低整体复杂性和依赖性。松耦合使应用程序环境更敏捷,能更快地适应更改,并且降低了风险。除此之外,系统维护也更方便。在B2B领域,由于要求业务实体之间独立交互,因此松耦合显得尤为重要。业务合作伙伴之间的关系变化莫测,联合关系时而建立,时而又断绝,还需要在商业合作伙伴之间建立业务流程以满足市场的要求。两家公司在某一市场是合作伙伴,而在另一市场却可能是竞争对手。底层IT基础结构要适应这样的灵活性和独立性要求。理想情况下,业务关系应当互不影响:在建立新型业务关系时,不对已有的业务关系造成影响。为一个业务合作伙伴提供的功能或许不应当供给另一个合作伙伴;与一个业务合作伙伴相关的更改不应对其他合作伙伴造成影响。一个商业合作伙伴不应为了等待一个同步响应,而阻塞另一个合作伙伴。IT系统的可用性也不应依赖于业务合作伙伴IT系统的技术可用性。

  所谓“耦合”,指将两个元素像链子一样连接在一起。在软件领域,“耦合”一般指软件组件之间的依赖程度。那么,什么是依赖?各种依赖对耦合度和松散度有多大影响?软件耦合可以发生在许多级别。必须区分生成时(编译时)依赖和运行时依赖。在分布环境中,为了确定系统的耦合程度,必须分析各个级别。表3-1简要介绍了这些级别,以及这些级别与紧耦合-松耦合的关系。

  表3-1 紧耦合与松耦合

  
级 别紧 耦 合松 耦 合
物理耦合需要直接的物理链接物理中介
通信方式同步异步
类型系统强类型系统(例如接口语义)弱类型系统(例如载荷语义)
交互模式以OO方式导航复杂对象树以数据为中心,独立消息
过程逻辑的控制集中控制处理逻辑分布式逻辑组件
服务发现和绑定静态绑定服务动态绑定服务
平台依赖性对操作系统和编程语言的依赖性高独立于操作系统和编程语言


  下面将详细分析表3-1中的各项。

  在研究分布系统的“耦合”问题时,与远程组件的连接方式可能是最重要的技术因素。在物理级别上,物理中介支持松耦合。MOM系统松散耦合,消息队列扮演中介角色,解耦合消息的发送者和接收者。而RPC形式的应用程序紧密耦合,因为客户端和服务器直接交互,客户端要求服务器可用、可访问,以达到交互目的。

  如前所述,在“通信方式”级别上,同步和异步通信对耦合级别的影响经常与分布式组件的物理链接密切相关。异步通信通常与松耦合相关。不过,这要求底层中间件能以松耦合方式支持异步通信。以单向RPC为例:虽然客户端不等待服务器的应答,但单向RPC仍然紧耦合,因为只有当客户端直接连接到服务器,而且服务器正在工作和运行时,客户端才能发送单向请求。这是说明各种耦合度的极好例子:在适当MOM基础上建立的异步通信比异步单向RPC调用的耦合程度更低。

  再来研究分布式应用程序的“类型系统”级别的“耦合性”。可以看到,类型系统越强,系统不同组件的依赖程度也越高。无论在应用程序开发阶段,还是在更改和重新配置运行的系统时,都是如此。前面分析过“接口语义”和“载荷语义”的差别。接口语义提供了显式的接口名、操作名和强类型参数。因此,组件在这个级别上达到紧耦合的程度,因为每次更改接口时,需要考虑依赖的组件,影响会波及到整个应用程序。这样做的好处是:可以在编译时发现受影响的应用程序部分,使其适应和反映更改,避免不兼容的消息格式引起运行时异常。载荷语义的消息格式通常更灵活,故能降低组件的耦合级别。有些情况下,可应用消息格式验证,如XML Schema验证。但是,这要求参与者之间有效管理的最新模式定义。注意,使用载荷语义并不能消除更改消息格式的问题:开发人员必须了解受更改影响的系统部分,确保在采用新格式时,这些部分能正常运行。很多情况下,这往往意味着问题从生成时转移到运行时。
【内容导航】
 第 1 页:松耦合概述
 第 2 页:松耦合(2)
图
下一篇:JSPVHOST
图
Copyright © 2007-2018 zcsbbs.com All Rights Reserved 七七网 版权所有 粤ICP备14014924号-1