接口 vs 合约

10.1 放假一周到现在,也没干啥事,净看中央2台的“梦想中国”了,由于观众的短信参与,让节目增加了不少看点,电视台不但省了请嘉宾和评委的开支,反倒在 1元/条 的短信上收入上千万 RMB ,最后结果还让大家无话可说,瞧人家的这生意做的。

言归正传,从 TechED 归来,开始学习那些没能听到的课程的讲义,其中有一个 Session“协调业务与 IT 业务架构设计”,很多内容虽然还没有完全理解,但其中屡次提到一个词“合约”,于是仔细思考了一下这个词所体现的涵义,写出一些对它的理解。

“合约”(Contract)是面向服务架构(SOA)中提的较多的一个词,也是其中的一个关键要素,其实际意义相当于原来的我们常说的系统间调用的接口(不是语言规范中的 Interface,如 IUnknown 等 :P)约定或规范,但为什么旧瓶装新酒呢?

接口可能更多的时候是从技术的角度来反映这种约定的,它大多是偶合较紧的,象 COM 、IIOP 、CORBA 都可以称之为接口,它已经细致到技术实现层次了,在这些接口之间的系统大多是基本数据包的同步调用。

合约更多的是从业务的角度来描述约定,合约更接近于商业情境中的合同,更便于从业务的角度理解和反应问题,也更多地体现了以提供服务为中心的业务模型,象 WSDL 就是合约,它大多是基于消息的(如包含商业信息的 XML 文档),也常常是跨越组织边界的异步调用,自描述,且偶合程度较轻,这更适合于未来基于互联网的业务系统架构。要想让人对你提供的服务一目了然,合约显然比接口更易于让人理解和使用。

目前的理解只有这些,希望以后能有更准确的理解和想法。

“接口 vs 合约”的3个回复

  1. 现在有面向“合约”的编程,其中“合约”表述的是数据之间必须满足的各种条件。相当于企业之间交流的“合同”

  2. 我觉得合约就是各方服务的协议。约束了我如何提供服务,以及对方如何使用服务。包括业务层面的和数据层面的。

评论已关闭。