【IT168 信息化】
引言
当今IT环境的特点是:异构而复杂的应用程序、进度紧张、受预算约束,以及一个不断变化的业务需求前景。几乎没有企业能够以一种高效率的方式,灵活而有效地增强其现有的基础架构,来迎接和克服这些挑战。即便如此,为了快速而经济高效地处理源源不断的高度复杂而动态的业务需求,企业需要一种灵活而动态的方法来自动化、构建和管理关键业务流程。面向服务架构常常被奉为解决上述业务挑战的一种可行的解决方案。SOA是一种通过使用和组装构建模块来概念化、设计和构建应用程序的方法,每个构建模块通常被表示为一个可重用的服务。目前使用的许多SOA方法只是简单地封装一些业务功能,然后是用在应用程序中。而且采用了一种临时、静态和不灵活的方法。在生产者集中精力提供业务逻辑之前,确立一个适合企业发展的框架,会对企业业务的扩展、组合乃至应用程序间的集成都能提供必要的支持,这样的一个框架会在开发过程中,逐渐沉积成为企业的一笔巨大财富,即一个复用价值最高的软件框架。
一、SOA及相关技术
面向服务架构(SOA)是一种面向服务的企业应用体系结构。面向服务的体系架构中共有3种角色:服务提供者、服务消费者和服务注册中心。SOA的体系结构如图1所示。
▲
图1:SOA的体系结构
其中服务提供者负责服务功能的具体实现,并通过注册服务操作将其所提供的服务发布到服务注册中心,当接收到服务消费者的服务请求时,执行所请求的服务。服务消费者则是服务执行的发起者,首先需要到服务注册中心查找符合条件的服务,然后根据服务信息进行服务绑定/凋用,以获得需要的功能。而服务注册中心则用来提供服务提供者注册服务、提供对服务的分类和查找功能,以便服务消费者发现服务。
①XML(Extensible Markup Language):可扩展的标记语言,为Web Service提供了统一的数据格式,包括消息、服务描述以及工作流的描述。
②SOAP(Simple Object Access Protocol):用于交换XML编码信息的轻量级协议。
③WSDL(Web Service Definition Language):是借助XML来描述一个网络服务或端点。用于定义Web Service以及调用方式。
④UDDI(Universal Description Discovery and Integration):提供了在Web上描述并发现商业服务的框架,是面向Web服务的信息注册中心的实现标准和规范。
企业服务总线(ESB)的概念是从面向服务体系架构发展而来的。ESB是SOA的基础架构,在整个结构体系中,每个服务都是通过企业服务总线来进行互相访问。通过ESB,企业可以将所有的应用、功能、数据和服务有效的连接起来。企业服务总线改变了传统的软件结构,可以提供比传统中间件产品更为廉价的解决方案,同时它还能消除不同应用间的技术差异,实现不同服务之间的通信与整合。
二、一种面向服务框架WE-SOA的设计
WE-SOA框架基于SOA技术,是一种利用SOA原理高效构建应用程序和业务流程的框架。在该框架中,应用服务既可以是已有的旧应用,也可以是新开发的应用。将企业应用封装成统一的应用服务,然后发布到ESB,并通过企业服务总线中WCF通信技术,实现.NET客户端与.NET服务端的通信。ESB是连接各类应用的桥梁,采用松散耦合的方式,任何独立服务的都可以连接到ESB,真正实现了“即插即用”。WE-SOA分为如图2所示的五层。
▲
图2:WE-SOA开发框架
2.1 数据层
数据层用来完成系统中数据的访问和管理。数据层包括持久层、数据访问层和数据库。
2.2 业务组件层
良好的业务建模是系统成功的基础。业务组件层支持业务建模,通过实体和视图封装了业务建模的数据结构;支持数据访问,包括查询、保存、更新、删除等操作。
2.3 服务层
服务层由原子服务、组合服务、流程服务、外部服务组成。服务分三种级别的服务粒度:原子服务、组合服务、流程服务。原子服务是以实体为核心的细粒度的服务;组合服务根据需要将原子服务、合成服务(由原子服务简单组合而成)进行组合而成;流程服务是由原子服务和组合服务进行流程编排而成的粗粒度的服务。外部服务是来自于企业外部的粗粒度的服务,它封装了服务的具体实现,对外提供描述服务的接口。原子服务、组合服务、流程服务、外部服务都可以发布到服务注册中心,通过企业服务总线来进行相互访问。
2.4 ESB
ESB在SOA的体系结构中起着服务注册中心的角色,它将SOA的所有参与者连接在一起,提供连接性、技术异质性、通信异质性和技术服务等功能,并管理和监控应用程序之间的交互。
2.4.1 权限管理
权限管理用来定义权限,并根据权限控制访问资源的一套维护系统安全的管理。权限管理用来对对象进行授权。授权是基于角色的,定义具有不同权限的角色。再将用户分配给不同的角色,就达到了对用户权限控制的目的。对于角色的授权可以授权到功能一级,即对角色分配相应的事务菜单,角色只能对所见的菜单上的事务有执行的权限。另外也可以授权到更细的字段及动作一级,通过定义授权对象,来定义一组授权字段,以及相应的动作,然后将授权对象分配给事务。
2.4.2 WCF通信
WCF构建了一个在互联系统中实现各个应用程序之间通信的分布式框架。WCF通信可以跨进程、跨机器甚至于跨平台。
表示层UI与业务服务通信主要考虑性能和方便部署,而业务服务和企业服务总线的通信主要考虑通信协议和格式的开放性。在综合考虑部署方案和系统集成的需求下,抽象出四种通信方式:
直接调用,适用于表示层和业务层不分开;
管道通信,适用于表示层和业务层分开;
TCP通信,适用于表示层和业务层分开;
HTTP通信,适用于和外部系统通信。
当Web表示层和业务层部署到同一进程中,采取直接调用的方式,保证系统的高性能,当Web表示层消耗资源较大时,可以将Web表示层和业务层分开部署到同一机器或不同机器,采取管道通信或TCP通信,仍然保持一定的性能。C/S客户端只能通过TCP通信方式和系统通信。当和外部系统连接时,采用HTTP通信方式。
2.4.3 消息管理
消息是提示提醒用户操作的交互方式的统一管理,框架支持同步和异步两种消息。
2.4.4 安全管理
实现对企业服务总线安全方面的管理。保证传输到企业服务总线中的消息是安全和可靠的,从而保证正确的过滤和路由。
2.5 客户层
分为控制层和表示层。控制层采用MVC模式。由控制层发出服务调用请求到代理服务,代理将调用转发给业务服务,业务服务路由绑定到所需要的服务(服务提供者),代理服务返回响应将服务提供给服务调用层。
表示层作为一种用户接口和外界信息进行交互。表示层是用户访问集成系统的入口,可以依据每一个用户的需要来提供个性化服务,并提供对用户的安全和权限验证。
WE-SOA的优点:
①通信采取多通道控制总线,它使得系统构架师与开发人员在构建分布式系统时,能将更多的精力投入到与系统的业务逻辑本身的设计上来,而无需过多地考虑底层通信的实现及相关问题。
②架构采用总线模式,模块以插件方式挂接到总线,最大限度降低系统的松耦合度。服务请求者把SOAP请求发给服务总线,并与服务提供者进行直接、同步的交互,服务总线会把包含结果的SOAP响应传送给服务的调用者。客户端只和服务总线打交道,服务对客户端来说是完全透明的。
③不同粒度级别服务抽取。增强了系统的可重用性。WE-SOA能够很方便地增加或是减少服务,重新组合服务,也能方便地集成其他系统的服务和新的服务。
④WE-SOA即可以用来开发新的应用系统,也可以利用已有的资源。可以降低企业的集成成本,从而使新服务的开发时间缩短。
⑤负载均衡:由于业务逻辑被包装成服务,而这些服务有可能分别位于不同的服务功能模块中,所以在一定程度上,对单个服务器的负载起到了一定的分担作用。
三、WE-SOA框架的应用
如图3所示:在ERP系统中,ERP各个业务模块的功能作为粗粒度服务发布,而每个模块的功能又是由多个子功能组成,把这些子功能作为细粒度服务发布。一个粗粒度服务由多个细粒度服务组合而成,如采购管理服务就由采购报价、采购入库等细粒度服务组合而成,每个细粒度服务利用业务组件对数据库表进行查找、更新、保存等操作。
▲
图3:ERP系统中的服务粒度及模块依赖关系
每个模块都有自己的依赖关系,例如销售管理模块依赖财务管理模块,安装销售管理模块时,需要财务管理模块已经成功安装。模块安装时执行如下操作:
1、检查依赖关系;
2、注册原子级服务;
3、导入初始数据;
4、部署用例程序;
5、标志安装成功。
四、结束语
采用面向服务体系结构和WCF技术,使程序员在开发过程中把精力集中于业务流程,而先不去关注有关集成或应用程序底层通信实现问题,使企业应用摆脱面向技术解决方案的束缚,灵活地适应企业业务流程变化和发展的需要。WE-SOA实现了跨平台、语言独立、松散耦合的异构应用的交互和集成,使得建立在此平台上ERP系统更具易用性和可扩展性。