第3章基于SOA的中小型企业业务流集成系统解决方案
3.1软件开发方法的演变
软件开发的历史开始于1945年,当时冯·诺依曼提出了二进制方案,建立多级存储结构和并行计算原理,确立20世纪计算机的基本数学构型。软件开发的过程就是人们使用各种计算机语言将人们关心的现实世界映射到计算机世界的过程,软件开发一般分为五个阶段:问题的定义及规划一需求分析一软件设计一程序编码一软件测试。
从编程的方法论上来说,从一开始的机器语言和汇编语言直接对机器码进行编程,然后,“结构化"的编程方法开始出现并流行起来。E.W.Dijkstra在1969年提出了结构化程序设计(Structurcd Programming,SP)方法,它是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样每一个模块的工作变单纯而明确,为设计一些较大的软件打下了良好的基础。
1960年代“软件危机"的发生,促使了面向对象(Object-Oriented Programming,ooP)的软件开发方法的诞生,面向对象的开发强调从问题域的概念到软件程序和界面的直接映射,在面向对象编程中,程序被看作是相互协作的对象集合,每个对象都是某个类的实例。
随着软件的迅猛发展,软件系统是越做越大,功能是越来越强,而其中出现的问题同时也是越来越多,于是,可复用的软件方法论开始流行,“面向构件"进行编程的理论开始出现,从2005年开始,SOA推广和普及工作开始加速,并逐步发展了三个SOA的标准规范:SCA,SDO,WS.Policy,这三个规范的发布,标志着基于SOA解决方案进入了可实施的阶段,在此条件下,本研究提出了基于SOA的中小型企业业务流集成应用系统解决方案。
3.2基于SOA的解决方案概述
企业的应用集成目前存在4个不同层次的解决方案:数据集成,业务逻辑集成,函数或方法集成,用户界面集成。传统的解决方案大都采用紧密耦合的集成方式,忽视了流程设计,不利于企业流程重组和调整,缺乏可扩展性和灵活性。根据浙江鼎盛工业有限公司提供的业务需求与流程,本研究提出了一种了基于SOA的企业业务流集成系统解决方案,该方案包含了系统功能、开发技术的选择、解决方案实施计划,该方案具有:松散耦合,复用程度高,跨平台,易扩展的优点。
在导师以“项目实施"来带动课题研究的建议下,本人找了浙江鼎盛工业有限公司作为本次研究的课题研究对象,浙江鼎盛工业有限公司是一家生产汽车配件为主的民营企业,业务流程比较典型,主要是汽车配件产品的生产与销售。
在企业各部门员工的帮助下,根据业务需求分析,以SOA设计思想,划分了本系统的四个主要系统功能:产品服务模块、客户服务模块、购物车服务模块、订单服务模块,根据企业的具体业务流程,再次可以细分模块,如图3.1所示。
图3.1系统功能结构图
根据系统功能结构图,以SOA的思想,可以理解为四个功能模块就是四个服务单元,每个服务单元包含了若干个服务操作,产品信息维护操作、客户信息维护操作、购物车信息维护操作都包含了信息的添加、修改与删除三个具体操作,订单信息维护操作包含了订单的修改与删除操作。以“服务”思想划分系统功能结构,根据服务设计原则,设计好服务单元功能,定义好各个服务单元的接口,就为服务集成建立了基础。
3.3开发平台的选择
SOA是一个分布式架构,使用Web服务来构建。因此,一个具备SOA能力的开发与运行环境,才能适用于支持Web服务技术集的分布式编程架构。分析SOA架构的特性,一个通用的SOA开发平台应该具备5个基本需求:
(1)需要一个开发环境来编写和组装软件程序,这个环境必须提供支持一种编程语言的开发工具,来编写和组装软件程序。
(2)有能力将软件程序划分成自包含的和可组合的处理逻辑单元,并能在运行时候内部或跨实例相互通信。
(3)能够通过行业标准的Web服务技术封装和暴露应用逻辑。
(4)需要暴露特性和运行提供功能的API,以便能够构建于这些特性和功能进行交互并利用其优势的软件程序。
(5)需要一个运行来设计软件,同时提供将永久驻留此软件的环境。每个需求代表一个层,能够实现面向服务解决方案的平台基本架构模型如图3.2示。
图3-2构建SOA解决方案平台所需的层次图
3.3.1常用的开发平台
(1)J2EE平台中的SOA支持
J2EE平台是基于Java编程语言的一个开发与运行环境,J2EE开发平台包含了大量的可组合片段,能够将其组装成合格的Web服务解决方案,J2EE平台中与SOA相关联的层如图3.3所示。
图3-3与SOA关联的J2EE平台相关层次图
在架构组件方面,用于构建J2EE Web应用的组件有:JSP(Java Server Pages,Java服务器页面)组件,JSP可以动态地生成Web页面,驻留于Web服务器;Struts组件用于复杂用户界面和导航的Web应用开发;Java Servlet组件用于处理HTTP请求及响应交换,它是一个编译程序;JavaBean组件是一个用于企业解决方案环境内执行大量处理的业务组件,借助中间件支持,它可以实现Web服务。
在运行时环境方面,为了支持Web服务,J2EE提供了附加的运行层,依次提供附加服务的特定API。最显著的是JAX.RPC运行时,建立了基本服务,包括SOAP通信与WSDL处理的支持。此外,JE22提供了EJB容器与Web容器用于驻留Web服务应用程序的环境。
在编程语言方面,J2EE平台以Java编程语言为核心,虽然有很多不同的厂商提供的开发产品,但是这些产品都使用了标准的Java语言,都可以用于构建Web服务,目前常用的开发工具有:Sun的Java Studio Creator、Oracle的Jdeveloper和IBM的RationalApplication Developer。
在API方面,J2EE包含了一些支持Web服务的可编程功能API,构建SOA相关的API有:JAXP,它用来处理XML文档,还可以使用XSLT样式表与XSD schema进行转换和验证XML文档;JAX.RPC,它用来处理SOAP,同时支持RPC.1iteral与document.1iteral的请求.响应交换与传输;JAXR,它提供访问业务与服务注册标准接口的处理,对UDDI形成支持;JAXM,它用于异步的、文档类型的SOAP通信,支持单向和广播式的消息传输;SAAJ,它专门用于需要附件的SOAP消息处理;JMS,它是以Java为核心的消息协议,用于传统的消息中间件解决方案;JAXB,它用于XSD schema生成Java类,并可以进一步抽象XML的开发。
在服务提供者方面,服务提供者需包含服务端点和端口组件底层模型。服务端点在J2EE中,可以构建JAX-RPC服务端点和EJB服务端点,前者通常由底层Web容器逻辑作为servlet开发来实现,后者通过底层EJB组件来实现。端口组件底层模型在J2EE中,通过服务端点接口与服务实现Bean来实现组件。
在服务请求者方面,JAX.RPC负责将代理与请求业务逻辑组件间的通信转换成SOAP消息,JAX-RPC能用于开发服务请求者,并可以提供创建客户代理的能力,它们分别是:。静态代理和动态代理,静态代理由JAX.RPC编译器在设计时,自动生成服务提供者WSDL,为每个WSDL创建一个远程接口,以便其他组件调用;动态代理分为动态代理和动态调用接口动态代理,在被其他组件调用时才创建,动态生成WSDL与远程接口。
在服务代理方面,J2EE通常采用服务代理来执行各种运行时过滤、处理及路由任务,通俗点讲,就是使用服务代理处理SOAP报头,JAX.PRC API通过创建处理器处理J2EE服务请求者发送的或EJB端点和JAX-RPC服务端点接收的SOAP消息报头条目。
在平台扩展方面,目前J2EE以SDK的形式提供各种平台的扩展,目前可用的平台扩展实例主要有两个:Java Web服务开发包和mM浮动技术工具箱。
(2).NET平台中的SOA支持
.NET平台是微软公司研发的一个可视化开发工具,.NET开发平台由一组用于建立Web服务应用程序和Windows桌面应用程序的软件组件构成,包括.NET框(Framework)、.NET开发者工具和ASRNET。与SOA相关的是.NET平台的ASP.NET环境与Web服务增强扩展(Web Services Enhancements,WSE),ASP.NET是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序,ASP.NET同样具有强大的web服务开发功能。WSE是一个用来建设Web服务的.NET类库,它支持最新的Web服务协议,它支持用传输的方式发送SOAP消息,而不是HTTP。.NET平台中与SOA相关联的层如图3-4所示。
图3-4与SOA关联的.NET平台相关层次图
在架构组件方面,ASENET Web窗体可用于动态构建Web页面;ASENET Web是特别为Web服务提供者设计的ASP.NET应用;程序集组件是.NET平台的标准处理单元,Web服务的应用逻辑都能包含在一个程序集中。
在运行时环境方面,在.NET平台中有一个CLR(Common Language Runtime,通用语言运行时),CLR是一个运行时代理集合,可以管理.NET应用程序,并且可以加入各种辅助运行时层,比如ASENET中的HTTP管道运行时层。
在编程语言方面,.NET平台包含了四个编程语言:C#、C++、VB、J#,不管用哪种语言,程序代码都会转换成中间语言(Microsoft Intermediate Language,MSlL)的标准格式,MSIL最终在CU之中执行。
在API方面,.NET平台通过类库提供了进行访问的可编程接口,并组成了一个大的API集,与Web服务相关的API有:System.Xml,System.WebService,前者提供了XML文档的解析和处理功能,后者提供Web服务接口与Web服务器交互层的文档分解。除此之外,还有一些类族用来支持Web服务,比如System.Web.Services.Discovery提供Web服务元数据的可编程发现。
在服务提供者方面,.NET平台通过ASP.NET Web服务组件来编写一个“.asnlx”扩展文件来承担服务端点,ASMX文件通常包含一个ASMX端点与一个驻留各个业务逻辑的编译程序集。
在服务请求者方面,.NET平台提供了一个位于服务请求者的应用逻辑代理类,该代理类将方法调用转换成HTTP请求,然后服务提供者将处理的消息转换回本地方法的调用。代理类代码,通常由Visual Studio或WSDL的命令行程序自动生成,然后将代理类编译成一个DLL文件。
在服务代理方面,在.NET环境中,ASENET运行时配备了HTTP模块,能够代理执行认证、授权和状态管理等系统任务;由WSE工具集提供的过滤器代理能够处理SOAP报头,可以在服务提供者发送之后与服务请求者接受之前,截取SOAP消息。
在平台扩展方面,.NET平台的WSE(Web Services Enhancement,Web服务增强)工具,提供了支持WS-*宰规范特性的一系列类,目前支持WS-寻址、WS-策略、WS-安全、WS-安全策略、WS-安全会话、WS-信任等。
3.3.2开发平台的选择
J2EE与.Net平台都能实现基于SOA的解决方案,但是.NET平台被微软独家全面支持,因此有着更为一致性的行为方式和可预见性,而J2EE没有两个厂家的J2EE规范是完全一致的,这意味着在两个平台之间的应用移植需要因为这种差异性的存在而付出额外代价。另外,.NET的易用性、效率和成本均领先于J2EE,使用.Net平台开发比使用J2EE平台更加不用关心底层细。因此,在第2章SOA技术概要的基础上,结合本章3.3.1小节中的J2EE平台与.NET平台的比较,本人认为在.NET平台能够较好实现基于SOA的系统解决方案。
基于SOA的中小型企业业务流集成应用研究(一)
http://articles.e-works.net.cn/SOA/Article95112.htm
基于SOA的中小型企业业务流集成应用研究(二)上
http://articles.e-works.net.cn/SOA/Article95113.htm
基于SOA的中小型企业业务流集成应用研究(二)下
http://articles.e-works.net.cn/SOA/Article95114.htm
基于SOA的中小型企业业务流集成应用研究(三)上
http://articles.e-works.net.cn/SOA/Article95130.htm
基于SOA的中小型企业业务流集成应用研究(三)下
http://articles.e-works.net.cn/SOA/Article95133.htm
基于SOA的中小型企业业务流集成应用研究(四)
http://articles.e-works.net.cn/SOA/Article95189.htm
基于SOA的中小型企业业务流集成应用研究(五)上
http://articles.e-works.net.cn/SOA/Article95191.htm
基于SOA的中小型企业业务流集成应用研究(五)下
http://articles.e-works.net.cn/SOA/Article95221.htm
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/