zoukankan      html  css  js  c++  java
  • 企业应用的SOA时代

     

    企业信息化建设

     

    企业应用的SOA时代

    wxwinter

     

     

     

     

     

     

     

    摘要

    介绍了SOA的概念,接着从SOA的本质入手,提出了基于SOA架构的企业应用平台,并对该架构的实现过程及使用技术进行了详细的说明。 

     

     

    目录

    1    概述    1

    2    通吃还是协助作    1

    3    构建SOA架构    2

    4    基于SOA构建企业应用平台的技术    3

    4.1    WCF    3

    4.2    ORM    4

    4.3    智能客户端    5

    4.4    富客户端    6

    5    SOA对传统B/S、C/S的支持    7

    5.1    什么是C/S和B/S    7

    5.2    B/S架构软件的优势与劣势    9

    5.3    C/S和B/S 之比较    9

    6    在SOA架构下的企业应用平台    10

    7    实施SOA带来的优势    14

     

     

     

     

     

    正文

     

    概述

     

     

    在计算机技术、信息技术、安全技术、软件开发技术高速发展的今天,面对目前企业应用的多样性、繁琐性、多变性,采用传统的开发模式和系统架构已经不能满足当前业务的需要,我们需要一个全新的架构以适应现代企业应用的全新要求。SOA正是这样一个架构,本文从多个角度探讨了SOA架构下的业务流程管理平台的实现,并对该实现的过程进行了详细的讨论。

    通吃还是协助作

    当我们谈完了数据孤岛后与EAI后,我们意识到企业应用需要打破封闭,进行整合.当谈到整合时时,我们将面对如下问题:

    • 如此多的软件提供商,该选哪个

    • 如此多的方案B/S,C/S,RIA,智能客户端,该选哪个
    • 如此多的技术JAVA , NET ,C++ , Delphi,该选哪个

    为了整合,我们可以只选一家软件提供商,沿用一种方案,只用一种技术,可是如何面对企业中现有正在运行的软件系统,当然,可以不考虑成本将现有正在运行的软件系统全部重新做.即便是这样,所选的软件提供商可能会业务转型,所使用的方案可能过时,所使用的技术可能淘汰.

    能不能即可以选择多个件提供商,使用多种方案与技术持续完善企业信息化建设,又可以实现EAI.

     

    构建SOA架构

    SOA,是Service Oriented Architecture缩写,中文为"面向服务的架构"。本质上说,SOA体现的是一种新的系统架构。

    在基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并且具有统一接口的组件(也就是service)组合构建起来的。可以说SOA的出现,将为整个企业及软件架构设计带来巨大的影响。

    软件业从最初的面向过程、面向对象,到后来的面向组件、面向集成,直到现在的面向服务,走过了一条螺旋上升的曲线。其实,自从上世纪70年代提出"软件危机",诞生软件工程学科以来,为了彻底摆脱软件系统开发泥潭, 软件开发人员和软件使用人员一直也没有放弃努力。

    在经典软件工程理论中,不管是瀑布方法还是原型方法,都是从需求分析做起,一步一步构建起形形色色的软件系统。但是,需求变更像一个挥之不去的阴影,时刻伴随着系统左右。每一个实际应用系统的开发者都饱尝了在系统进入开发阶段、测试阶段,甚至上线阶段遭遇应接不暇的需求变更的极端痛苦。客户将变更的需求视为bug(错误)是测试上线阶段的主要问题。

    如何解决这一问题?能否来一场软件开发和架构的革命?SOA架构的提出,就是被人看成这样的一场革命。其实质就是要将系统模型与系统实现分割开来。

    SOA是在计算环境下设计、开发、应用、管理分散的逻辑(服务)单元的一种规范。这个定义决定了SOA的广泛性。SOA要求开发者从服务集成的角度来设计应用软件, SOA要求开发者超越应用软件来思考,并考虑复用现有的服务,或者检查如何让服务被重复利用。SOA鼓励使用可替代的技术和方法,通过把服务联系在一起而非编写新代码来构架应用。经过适当构架后,这种消息机制的应用允许公司仅通过调整原有服务模式而非被迫进行大规模新的应用代码的开发,使得在商业环境许可的时间内对变化的市场条件做出快速的响应。

    SOA也不仅仅是一种开发的方法论——它还包含管理。例如,应用SOA后,管理者可以方便的管理这些搭建在服务平台上的企业应用,而不是管理单一的应用模块。其原理是,通过分析服务之间的相互调用,SOA使得公司管理人员方便的拿到什么时候、什么原因、哪些商业逻辑被执行的数据信息,这样就帮助了企业管理人员或应用架构师迭代地优化他们的企业业务流程、应用系统。

    SOA 描述了一套完善的开发模式来帮助客户端应用连接到服务上。这些模式定制了一系列机制用于描述服务、通知及发现服务、与服务进行通信。不同于传统的应用集成方法,在 SOA 中,围绕服务的所有模式都是以基于标准的技术实现的。

    SOA的目标在于让系统变得更有弹性,更加灵活,以更快地响应业务的需求,实现实时企业。提高了对整个企业整体架构的控制能力,提升了软件开发的效率、加快开发速度、降低在客户和人员技能等方面的投入。

    基于SOA构建企业应用平台的技术

    WCF

    Windows Communication Foundation (WCF)是Microsoft为构建面向服务应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分。使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的解决方案。

    WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术。以通信(Communication)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NET、EXE、WPF、Windows Form、NT Service、COM+作为宿主(Host)。在WCF框架下,开发基于SOA的分布式系统变得容易。

    概括地说,WCF具有如下的优势:

    (1)统一性

    由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。

    (2)互操作性

    由于WCF最基本的通信机制是SOAP,这就保证了系统之间的互操作性,即使是运行在不同的上下文中,WCF可以跨进程、跨机器甚至于跨平台的通信。

    (3)安全与可信赖性

    WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。

    在SOAP 的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS-Coordination和WS- AtomicTransaction之上的基于SOAP格式交换的信息,则支持两阶段的事务提交(two-phase commit transactions)。

    (4)兼容性

    WCF充分的考虑到了与旧有系统的兼容性。安装WCF并不会影响原有的技术如ASMX和.Net Remoting。即使对于WCF和ASMX而言,虽然两者都使用了SOAP,但基于WCF开发的应用程序,仍然可以直接与ASMX进行交互。

    ORM

    对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术。本质上就是将数据从一种形式转换到另外一种形式。然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理,但是同样,这些花费要比维护手写的方案要少,而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。

    ORM,是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

    面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

    智能客户端

    智能客户端的定义:是易于部署和管理的客户端应用程序,其通过统筹使用本地资源和分布式数据资源的智能连接,提供适应的、快速响应的和丰富的交互式体验。与B/S或C/S相比,智能客户端具有明显优势。本地资源充分利用和享受本地用户体验具备离线连接能力,智能部署和自动更新。传统客户端应用程序的更新和部署经常在安装一个应用程序时中断另一个应用程序。智能客户端有效地解决该问题。例如,智能客户端尽管不完全是零安装,但是已做到零维护,客户端程序即用即下载、自动匹配版本、支持断点续传。

    富客户端

    "富客户端"(Rich Client)简介:富因特网应用程序(Rich Internet Applications,RIA)利用具有很强交互性的富客户端技术来为用户提供一个更高和更全方位的网络体验。RIA集成了桌面应用的交互性和传统Web应用的部署灵活性与成本分析,以创建单一而完整的用户体验。富客户端技术使创建RIA成为可能,它提供一个运行时的环境以承载被编译的客户端应用程序,该客户端应用程序是一个使用HTTP协议发布的文件。客户端应用程序使用异步的C/S结构连接到现有的应用服务器,这是一种安全的、可升级的、具有良好适应性的面向服务模型,这种模型由当前所采用的Web服务驱动。

    富客户端技术正在不断地完善中,但并不意味着会取代HTML。相反它将进一步扩展浏览器功能,使之提供更加高效和友好的用户接口。许多RIA都在浏览器中运行,甚至它本身就是HTML的一部分,所以HTML将继续保持其原有的角色。另外,由于富客户端技术可以支持运动的图像、视频、音频、双向的数据通信和创建复杂的窗体,它为创建应用程序用户接口提供了一个高效而完善的开发环境。

    RIA开发必须具备三个要素:富客户端技术、服务器技术和开发工具。富客户端技术充分利用本地机器的处理能力来处理数据,而不需要把某些数据发送到服务器处理,充分利用了本地机器的资源。服务器技术提供了一种与富客户端的连接机制,作为RIA的服务器技术必须从现有的服务器技术继承,可以提供一个快速的脚本环境,支持数据库应用开发、双向数据通信、实时数据通信,甚至采用一种新的服务器,例如:ColdFusion Server和Flash Communication Server等。RIA实现必须有一组简单而高效的开发工具,如果没有一组简单而高效的开发工具,那么富客户端技术与服务器技术是毫无意义的。正是由于RIA的C/S结构,它需要一组开发工具协同工作才可以完成。

    "富"的概念包含两方面,分别是指它具备丰富的用户界面和丰富的数据模型。

    富客户模型将界面分解成许多的既可以和用户直接交互又可以和服务器进行通信的小单元模块。

    这种将应用程序的设计从以一个相对独立的页面为中心转移到以组件为中心的转变将会使客户层的设计提升到一个新的层次,并且会使客户层变得更加灵活。富客户层不再成为服务器响应的最终端,这同时也使程序的性能得以提高,用户使用的感觉就好像程序不需要和服务器进行通信或者只是偶尔才需要进行通信。

    不像传统的模型那样,服务器收到请求后由上至下的创建客户端界面,你不用预测事件的顺序。既然每个组件都是独立的,就没有必要因为一个请求而做出影响整个视图的反应。要使每个组件都具有向服务器传送信息的能力需要每个组建知道如何处理服务器传递回来的信息。在RIA中,客户端和服务器端交互数据是不同步的,这样就可以控制组件创建信息发送给服务器和处理服务器的响应。

    SOA对传统B/S、C/S的支持

    什么是C/S和B/S

    C/S结构。C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。

    B/S结构。B/S(Browser/Server)结构,即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。C/S架构软件的优势与劣势

    (1)、应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求。客户应用程序运行在用户客户端上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则做出应答,送回结果,应用服务器运行数据负荷较轻。

    (2)、数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台程序通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,所有这些,对于工作在前台程序上的最终用户,是"透明"的,他们无须过问背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常"瘦小",麻烦的事情都交给了服务器和网络。在C/S体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。

    (3)、C/S架构的劣势是高昂的维护成本且投资大。首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正"统一",使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立"实时"的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。其次,传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。

    B/S架构软件的优势与劣势

    (1)、维护和升级方式简单。目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。B/S架构的软件只需要管理服务器,所有的客户端只是浏览器,不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行。如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。

    (2)、应用服务器运行数据负荷较重。由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器端完全通过WWW浏览器实现,极少部分事务逻辑在前端实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。但是,应用服务器运行数据负荷较重,一旦发生服务器"崩溃"等问题,后果不堪设想。因此,许多单位都备有数据库存储服务器,以防万一。

     

    C/S和B/S 之比较

    C/S和B/S是当今世界开发模式技术架构的两大主流技术。具体差别可参照表(1) 。

    对比项

    CS架构

    BS架构

    技术成熟度

    C/S结构简单,技术相对成熟,近几年已很难间到新的技术热点。

    Web SeverWeb Form等各种新名词、新技术令人眼花缭乱。

    internet的支持

    C/S的通信协议基本上受制于数据库厂商。

    B/S天生就是为了适应Internet应用、适应HTTP而出现的。

    人机交互性

    C/S的客户端应用程序大多是标准的win32应用,普通的程序员都能轻松地设计具有复杂交互动作的程序。

    交互能力差是B/S最大的不足。

    维护工作量

    C/S客户端的安装、升级一直就比较麻烦,维护工作量大一直是C/S应用的大问题。

    B/S客户端一般是不需要维护的。

    与数据库连接

    在二层C/S结构中,客户端应用程序通常是直接连接数据库的,不过,多层C/S不用。

    B/S客户端不需要连接数据库的。

    宽带消耗

    C/S应用中,客户端和服务器端传递是通常是SQL指令和结果数据,宽带要求较小。

    B/S应用中,Web发出的数据,除了结果集数据,还有"程序"本身——页面。

    数据安全

    C/S程序通常在局域网范围内使用,数据在传输中的安全通常由数据库厂商来保证。应用程序不需要考虑传输安全问题。

    B/SInternet上默认以明码形式传输,为了保证其安全,一般采用SSLVPN等技术。

    运行性能

    中小规模应用软件的运行性能在C/SB/S之间相差不大,但是对于大型的企业级应用,B/S结构就很容易产生各种性能瓶颈。

    表(1)

    SOA架构下的

    企业应用平台

    具体的实现过程是,当系统需要增加业务功能时,向平台添加相应服务,而不会影响整个系统的功能与结构,这也是SOA架构特点之一,例如在该平台下集成了流程服务、管理服务、权限服务、报表服务、表单服务等公共服务,还包括其他的具体的业务服务,如设备管理服务等,根据实际业务需求变化还可以为系统添加其他服务。不影响原有系统集成的服务。可参考图(2)。

    图(2)

    系统通过ORM技术访问数据库,并将数据库操作提升为WCF服务提供给客户端调用。可参考图(3)。

    图(3)

    WCF宿主支持多客户端访问。例如WPF客户端,WEB客户端,Silverlight客户端等。可参考图(4)

    图(4)

    在SOA的构架中,支持C/S和B/S两种构架,汲取了其中的优点,屏蔽了单一架构中的劣势,给软件开发提供了可持续开发的平台。客户端通过调用业务服务器上的WCF服务,间接的对数据库进行操作。业务服务器通过ORM 技术实现对数据库操作。可参考图(5)

    图(5)

    在SOA的架构中,各个服务模块通过控制器(manager)进行统一管理,提高了对服务模块的可控性。流程服务和管理服务通过WF架构实现工作流的持久化和跟踪。权限服务、表单服务和报表服务通过ORM技术对数据库实现操作。WCF宿主加载跨域访问服务和其他WCF服务,通过跨域访问服务将WCF服务暴露给客户端访问。可参考图(6)。

    图(6)

    实施SOA带来的优势

     SOA可通过互联网服务器发布,从而突破企业内网的限制,实现与供应链上下游伙伴业务的紧密结合。通过SOA架构,企业可以与其业务伙伴直接建立新渠道,建立新伙伴的成本从而降低。

    SOA与平台无关,减少了业务应用实现的限制。要将企业的业务伙伴整合到企业的"大"业务系统中,对其业务伙伴具体采用什么技术没有限制。

    SOA具有低耦合性特点,增加和减少业务伙伴对整个业务系统的影响较低。在企业与各业务伙伴关系不断发生变化的情况下,节省的费用会越来越多。

    SOA具有可按模块分阶段进行实施的优势。可以成功一步再做下一步,将实施对企业的冲击减少到最小。

    SOA的实施可能并不具有成本显著性。这要分三种情况加以讨论:

    (1)当企业从零开始构建业务系统时,采用SOA架构与不采用SOA架构成本可看做是相同的。

    (2)当企业业务发展或发生企业重组等变化而原有系统不能满足需要,而需要重构业务系统时,采用SOA架构与不采用SOA架构成本可看做是相同的。

    (3)当企业业务发生缓慢变化并可预见到将来需要重构业务系统时,由于可以按模块分阶段逐步实施SOA以适应变化的需要,这样企业不需一下投入一大笔经费进行系统改造,而是根据企业业务发展情况和资金情况逐步投入,缓解了信息投入的压力。

    本文比较系统的分析了基于SOA架构下的企业应用平台,并总结了在SOA架构下实施企业应用平台的各项特点和优势。

     

     

  • 相关阅读:
    Emacs 使用YASnippet
    odbc备忘
    Emacs 矩形编辑
    ftp by libcurl
    emacsshell
    Emacs cnblogs 代码着色
    Emacs下的Man
    #include ""还是<>
    三种*
    应对Maze勒索攻击的最佳实践分享
  • 原文地址:https://www.cnblogs.com/foundation/p/1642601.html
Copyright © 2011-2022 走看看