天天看点

新一代应用结构体系(二)面向服务架构

第二篇:面向服务架构详解

??? 时事

微软和Sun达成和解,联袂打造SOA。

Sun公司总裁兼COO Jonathan Schwartz在最近一次公司会议上这样说,“与.NET进行协作仅仅意味着满足用户的需要。例如,我们正试图在Visual Studio和Java Studio Creator之间实现互用性,同时,我们也正在努力实现在分别使用这两套技术体系开发SOA的应用程序时,可以应用统一的架构思想。”

微软正忙于准备Indigo。它将作为下一代Windows操作系统Longhorn的重要组成部分。

BEA Systems、Oracle。同时,有些小型厂商,如Infravio和Cape Clear,也在着手建立自己的SOA。?

IBM日前在多伦多宣布,它将在奥斯汀、北京、德里和哈斯勒新建SOA设计中心

??????? ……

??? 历史

???

?什么是SOA?

??? SOA为什么有这么大的魅力的,它到底能给我们带来什么,为什么它的出现为IT带来了这么大的震撼,也为IT带来了新的希望。

??? SOA即面向服务的架构(service-oriented architecture,SOA),要注意的是SOA不是一种具体的实现技术,它是一个抽象的概念和指导方针,我们可以用任何一种现今成熟的技术实现它,准确的说SOA是一种构件模型。简单点,在传统的方式中一个大型应用由不同功能模块构成,而在SOA中,这些功能模块由功能服务的概念所取代,这些所谓的模块由服务之间定义良好的接口和契约联系起来。而这些接口的定义是采用中立的方式进行的,它独立于实现这些服务的硬件平台,操作系统,网络架构和编程语言。正因为如此,在一个大系统中的各种样的服务,甚至是不同软件供应商所提供的其他应用都可以按一种统一和通用的方式进行交互。

??? 说到这里将牵涉到另一个概念“松散耦合”,在软件工程中大家就已经学习过关于在软件开发中偶合度对系统开发的影响。偶合度越低系统开发就越灵活,更容易维护。而面向服务的构架就是一种“松散耦合”的系统架构,把原来在代码中的功能而提到应用服务的层面。

服务不同于以往开发的组件或类函数的概念,我们以往基于类或函数等所实现的功能组件仅工作于代码,受所在系统中某个部分的调用,当编译后将和应用其他相关部分紧密的成为一个整体,同时是被动存在,且只能为编译在其中的应用所工作。而服务则是把软件的某些功能对立出来,使之能独立运行,并且在逻辑关系上和运行的应用系统成为一个层次,正因为独立运行,所以它接受来自所有授权对象的请求,使得服务可以同时为多个应用程序提供相同的功能,大大增大软件复用程度,减少开发和维护成本。再加之这些服务间接口采用中立性的定义,所以系统灵活、易于改变、同时试用于未来趋于应用小型化的分布式部署,另一方面当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,该应用不会受到影响和牵连,并继续运行。

SOA可以做什么?

??? SOA源于企业对灵活业务扩展的需求,同时也来自于软件开发商对软件复用技术的追求。可能SOA的产生会震动一大批为企业提供解决方案的传统开发商或者开发人员,因为它将成为软件业革命性的变化,广大企业应用开发人员接受的将是一次思想的或者称为思想的升华。技术的变革直接带来的是解决方案的整体变革,面向服务构架的解决方案以适应业务中快速的改变。

??? 下面我将举一个例子说明这种变革,假设一个用有300个分公司的跨国汽车集团,下面拥有众多的制造厂和销售公司,而与之相关的又有大量的供应商和分销商。他们实施刻刻要传递各种定单数据,供应商和制造商要根据市场需要改变供货数和产量,而且不同分公司也有不同业务系统,而这些系统的数据又将汇总到总部,那么这造就将是一个高度偶合且非常复杂的软件流程。一旦为适应发展的需要某些分公司的业务系统发生改变那么所要做的就不再是那么简单,就将是自下而上的牵动整个软件流程,这所带来的成本和投入将是使用者无法接受的。通过利用 WSDL 接口在操作方面的灵活性,每个公司都可以将它们的现有系统保持现状,而仅仅匹配 WSDL 接口并制订新的服务级协定,这样就不必完全重构它们的软件系统了。这样做,不管是分公司内部的业务系统的改变,还是供应商也无系统的改变,而通过这些接口仍然保持了整个业务体系的稳定。

??? 另一方面以ERP中的销售和库房为例,当我们把这两个模块上升到应用服务的层次上后,将给我们企业应用开发带来新的启示。库房将自己的业务一方面在用户UI上得到体现,另一方面基于某种中间定义如WSDL,我们很容易定义一些服务级的业务接口,而这些接口是相对稳定的,不管库房系统内部处理发生多大的改变,而销售系统可以很容易获得其业务操作规则和数据,并且这种交互是跨平台、跨语言、跨硬件、跨地域的,意思是,对于销售系统在分公司部署数量的多少,开发的语言,以及它的开发商我们是无须要做强制要求的,同理以前销售模块可通过此种方法增加服务级的接口,已保证和其他系统良好的交互和松散的偶合。这样企业的随需应变,快速扩展将得以实现,特别是对于大型项目的开发实施,面向服务的够架将把这种优势显示得淋漓尽致。

??? 思想的改变来自于需求的动力,然而思想的改变又可以让我们发现新的机会。SOA 模型的新成果,给我们带来的不尽是改善企业解决方案让用户对信息系统有了新的使用体验,让开发商和开发人员有了新的开发体验和知识积累,同时也让市场嗅觉敏锐的人找到了新的市场,我们可以不在需要发布处理某些方面特有信息的组件,我们可以编写各试各样的服务,如计算服务、音频处理服务,这些服务我们可以在互联网上或局域网以收费或免费的方式发布,使用者只需获得相应的定义,即可在自己开发的应用软件中调用该功能。这种方式我们大大节约了资源,把零散的计算资源以一种新的方式结合在一起。这些都以不再 是神话,在现在很多成熟的技术,我们已经可以轻松的实现这一切。

何种技术可以实现SOA?

??? 由于SOA只是一种所谓的构件模型,我们必须用一些现有的技术去实现它,象DOCM、CORBA、WebService这些技术我们都可以用以实现SOA,在WebSercie出现以前,由于各种技术不管是在服务的描述上,跨平台上,开放性上,易使用上都没有很大的突破,所以SOA紧紧在一些势力雄厚的厂商和一些大型项目中使用,而WebService的出现让SOA提出的一切得到了实现,在一夜之间SOA,XML,WebService这些概念传遍了全世界,并的到了广泛的应用。所以在这里我不得不把WebSerice做为其中一个重要的内容提出。

什么是WebService?

??? 由于Web Service命名的原因可能造成了众多开发商和开发人员的误解,认为广泛提及的Web Service就是基于HTTP所提供的网页浏览服务或则直截了当的认为是B/s应用程序。其实这种看法是完全错误的,完全以一个错误的方向在理解一个新生事物,Web Service与http的网页服务完全是不同的概念,更不是所谓的B/s应用程序。

??? Web Service从字面上理解为web 服务(不是web服务器),服务的概念在前面已经提及,Web Service即是采用Http请求方式为其他应用提供组件对象服务的一种技术,我们可以把他看作是一种远程对象调用技术,一种比DCOM/ CORBA更开放、更易实现远程对象服务的技术。

??? Web Service和应用程序是采用一种基于XML的一种名为SOAP的协议进行通信,实现远程调用。而Web Service上所有的接口信息,包括服务结构都是通过另一种描述性语言告速应用,这种描述性语言也是通过XML进行定义的,我们把它称之为WSDL(Web 服务Web Services Definition Language)。通过WSDL我们可以一种通用的格式描述接口信息,在应用程序部分,可以以一种通用的方式还原并调用该接口。

??? 通过Web Service我们可以用任何一种语言或工具把当前应用系统的某些功能包装成应用服务供其他用访问。通过这种底成本快速的方式我们可以很容易的实现功能复用,分布式计算,包括文章正在阐述的SOA。

??? 目前基本上所有流行的主流开发工具都可以很容易的创建或调用Web Service,如Delphi 6-7、各种java工具、vb、vs.net、cb等。我们还可以通过soapkit中提供的工具把com自动转换为Web Service,这些良好的支持,为web Service的流行创造了良好的基础,同时 Web Service的出现也消除了各种平台、工具、语言的这道横沟,开发人员可以选择自己熟悉的工具开发应用系统,无须为了合整而去浪费大量的时间去学习不熟悉的语言或工具。

SOA与Web Service?

??? 利用XML Web Service的支持实现面向服务的架构是再合式不过的搭配了。不管是基于XML的WSDL还是SOAP都独立于任何语言和平台。SOAP 本身并不是绝对需要的,但它是通用的消息传递系统,而WSDL描述可以为任何语言解析并使用。因此,可以使用几乎任何一种编程语言和支持 WSDL 的平台来实现 SOA 中的成员服务。

继续阅读