5.2面向服务的架构

发表于:2007-06-12来源:作者:点击数: 标签:
5.2面向服务的架构 概念完整性是优秀架构的关键部分。作为用于软件和系统架构的最主流的现代概念框架,面向服务的架构(Service Oriented Architecture, SOA )提供了这一完整性。有2个压倒一切的业务关注驱动着SOA的增长,这就是:对于业务敏捷性的需要和对

5.2面向服务的架构

概念完整性是优秀架构的关键部分。作为用于软件和系统架构的最主流的现代概念框架,面向服务的架构(Service Oriented Architecture,SOA)提供了这一完整性。有2个压倒一切的业务关注驱动着SOA的增长,这就是:对于业务敏捷性的需要和对最大化复用现有资产的渴望。这两者重叠在一起便形成了21世纪的法则:“用更少的资源做更多的事情”。

业务敏捷性是为了更快地“做更多事情”。历史上,IT系统所容忍的灵活性比业务所期望的少得多。在最近的几十年中,随着业务改变的步伐不断地加大(具有讽刺意味的是,这往往还是被IT刺激的),在不断发展的业务需要和IT与之相适应的能力之间,差距也越来越大。SOA的承诺是:IT能力可以表现为服务,服务与业务服务保持紧密的目标一致,能够灵活组合,并以小增量的方式根据需要而改变。

业务过程可以看成是在组织能力中流动的控制线索。把组织能力表现为独立的粒度化的服务,这使得组织能力能够以灵活的方式组合到业务过程中,因此更容易改变过程,同样也更容易改变能力或能力的实现。

与这种风格相反,历史上那些一体化系统所采用的方法一直试图囊括大量的问题,事先预料到所有的需求,然后在一个非常大的项目中解决它们。从多个方面来讲,SOA都是与持续改进保持一致的一种架构思想。

复用的最大化就是为了“以更少的资源”来做事情。首先,每个企业都有大量沉淀于过时系统之中的成本。这些系统往往不是为了可维护性和灵活性而开发的,而更换系统的成本和业务风险往往也会很高。SOA使我们可以用幕墙(facade)把这些过时的系统包裹起来,并把它们通过幕墙表现为Web服务,这样就能把它们灵活地重组到一个更大的系统中。另外,SOA还使我们具有了在不同的操作系统和技术平台之间互操作的能力。WS-*标准使得编排一个跨越WindowsLinux和主机操作系统以及跨越?NET和J2EE实现的分布式应用系统成为了可能。

另一个支持SOA的业务趋势就是对于系统的位置和构成的地理上和组织上的灵活性的需要。那些在用户看来像是一个系统的东西,实际上是被单独开发和管理的多个服务,并且随着时间的推移,这些服务也可能由于业务需要维修而被移植或替换,这种情形日益增多。让我们来想一下查找路线和地图这一典型的Web体验。仅有几个GIS地图服务,它们以Web服务的方式将它们的接口提供给几十万个Web站点,使这些站点能够提供定制的地图。这些网站的访问者不会在乎是谁的引擎绘制了这些地图和路线,网站的所有者做了一个简单的业务决定,并且随着业务的发展,他还可以改变这一决定。

这一灵活性同样适用于专有服务。通过使用SOA并让服务自包含和粒度化,组织就能保持重要的选择权,决定如何对它们所依赖的业务能力的开发和管理进行选址、外包和签约。同样地,还可以在服务这一级别上做出关于维护、升级和调整的选择,这样所能提供的灵活性是一体化系统所没有的。

5.2.1 Web服务和SOA

在理论上,Web服务并不是SOA所必需的,但是在实践中,如果仅仅是为了得到技术上的互操作性的话,用于实现Web服务的技术已经几乎与WS-*系列标准完全一致了。在使用Visual Studio进行开发时,Microsoft NET Framework使得Web服务实现起来很容易。当然,也有比标准更多的互操作性。

5.2.2契约优先的设计

互操作性的关键是服务以接口契约(interface contract)的方式描述自己。对于Web服务,这些接口采用Web服务描述语言(Web Services Description Language,WSDL)来表达。

契约优先(contract first)的设计是一个有价值的SOA实践,或者换句话说,在考虑实现细节之前,先规定好参与的服务之间的消息格式和WSDL。契约优先设计能够保证松散耦合,并能防止关于如何实现服务的决策蠕变地影响到分布式系统的总体设计。

契约优先设计的实践仍然在继续发展。比如说,WSDL和XSD目前还不能描述消息的顺序或前置条件和后置条件。为了能够把公开的契约与私有的实现细节分隔开,较完全的契约需要规定服务所公布和消费的消息、处理的顺序和约束。可以在Windows Communication Foundation Services(WCF)中找到一种改进契约的方法,WCF就是以前的“Indigo”项目,它是Windows Vista的一部分。

【责任编辑:铭铭 TEL:(010)68476606-8008】


回书目   上一节   下一节

原文转自:http://www.ltesting.net

...