InfoQ

新闻

SOA耦合的7个级别

作者 Udi Dahan译者 胡键 发布于 2007年12月5日 上午3时18分

社区
SOA
主题
标签
政策,
XML Schema

“完全解耦是极其困难和昂贵的,否则就是不可能的,”Ron Schmelzer如是说到,他是ZapThink的高级SOA分析师。一般人们都认为:系统要么是松耦合的,要么不是。在这篇最近的帖子中,Schmelzer炮轰了这个信仰。尽管松耦合的重要性得到认识已经有些时日了,但是围绕这个帖子展开的对话却收集了一些有趣的讨论。

Schmelzer如此描述松耦合的7个维度:

  1. 实现
  2. 服务契约
  3. 服务策略
  4. 过程
  5. 数据模式
  6. 基础设施
  7. 语义级别

这个报告是这样说明松耦合实现级别的:

所有SOA的实现必须在实现级别是松耦合的,但是显然这并不足以保证达到业务期望的那种完全的松耦合。

服务契约提到了使用服务描述框架的好处:

服务描述框架(SDF)……是一种技术中立的服务契约模板。以那种方式,新的服务契约并不是简单地替代旧的契约。除非给服务消费者提供一个转换路径,否则旧契约就永远不会被弃用。

延迟绑定的问题也被提了出来:

在这个舞台上[可能]的最佳实践就是使用一种延迟绑定的方法,该方法利用了运行时注册和基于契约的绑定,这样抽象了特定于服务消费者的绑定,并使服务契约变更照成的影响不致于蔓延开来。

Anil John就这一观点表示怀疑

直到我们解决跨Web的无缝互操作问题之前(主要是XML到对象数据绑定引起的问题),由涉及产生和实现动态客户端代理的消费者来把运行时绑定到服务只不过就是一次视觉探索(VisionQuest)!在当前那些确实“利用运行时注册和基于契约的绑定”的环境中,唯一可行的运行时办法只限于动态绑定到不同的SOAP端点(它能在注册中使用一个运行时的查找得到),当且仅当已经在潜在的生产者和消费者之间的Web代码中完成了上述的互操作测试。

报告将服务策略与服务契约这样联系起来:

公司指望服务可变性在处理策略变更的方法与它们处理服务契约变更的方式一样:延迟绑定、启用服务仲裁、基于注册和治理。

业务过程的处理是类似的:

通过在元数据中定义过程并使用服务契约暴露这些过程(作为服务暴露,服务组合时采用递归方式),可以把过程实现从服务消费者中抽象出来。

第一次提到对数据模式进行不同的处理:

模式是服务数据互操作能力的关键。但是,当模式发生变化时情况会怎样呢?解决问题的一个关键就在于将信息和模式按照服务元数据相同的管理方式进行管理。数据模式被视为元数据的一种形式,并且异常管理、转换、服务仲裁和数据服务全部都是数据结构松耦合的关键。

现在,再一次回头看看服务契约中说的——“模式和服务契约没有什么不同”。

报告认为,尽管从基础设施观点来看,松耦合可能很容易定义,但是极少有厂商提供这种灵活性:

[这]意味着在任何时间,公司都可以改变他们的基础设施,而无需重新构建所有的服务消费者和提供者。

最后的解决方案是在语义级别描述的——动态服务定义,其中“服务接口的定义必须基于服务请求者的上下文改变。结果是,服务可以在调用之间改变它们的契约”。这种宽松的语法看起来会和REST模型一起工作得很好,但是与WS标准结合的效果在现阶段是未知的。

Nicholas Gall在他的分析中增加了松耦合的另一个方面:

这个列表遗漏了松耦合最重要的一个方面:普遍性。如果我和唯一的另一合作伙伴采用了世界上最动态的可重新配置的中间件架构,那么他和我就紧密的彼此联系到一起了。试想我们两人设计出了WS-*的自家变种,姑且称之为WS-Silo。那么,我们之间可以在一端进行随意的变更,而不会破坏另一端。但是,我们不能和其他的任何人进行互操作。

尽管在怎样达到松耦合上并没有获得一个广泛认同,但是在众多人的意见中,它的目标是一致的——通过将系统变得彼此来降低改变它们的成本。

查看英文原文:7 Degrees of SOA Coupling

没有回复

回复

独家内容

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。

Hadoop基本流程与应用开发

本文介绍了Hadoop的基本流程、业务场景、代码范例以及集成测试。本文是《分布式计算开源框架Hadoop入门实践》三部曲的最后一部。

SOA在互联网系统中的应用

本视频对SOA在互联网系统中的应用进行了探讨,主要以支付宝在SOA的实践为例,主题从敏捷的应用程序(对象与组件)到敏捷的企业系统(应用集成与面向服务),再到敏捷的生态圈(网关与开放平台)。

用数字沟通——来自敏捷精灵的忠告

因为不知道如何反击,技术人员不得不听从业务人员的要求。这已经是老生常谈了。问题何在?开发人员用数字主要是进行计算的,而业务人员使用数字辅助决策。在下面的故事中,“敏捷精灵”鼓励一个开发人员用数字来描述与计算无关的问题。

Hadoop中的集群配置和使用技巧

本文介绍了Hadoop如何配置分布式框架运行环境,同时特别讲解了其中的一些细节。Hadoop可以单机跑,也可以配置集群跑,这里主要重点说一下集群配置运行的过程。本文是Hadoop入门实践三部曲的第二部。

JavaScript多线程编程简介

虽然有越来越多的网站在采用AJAX技术,但是开发复杂的AJAX应用仍然是个难题。本文探索了如何应用多线程缓解其中一些问题。