基于.NET的ERP系统四层结构模型

时间:2022-07-13 10:02:55

基于.NET的ERP系统四层结构模型

摘要:以C/S结构为主的ERP系统,不能满足远程用户以及企业外的新用户直接访问ERP系统,也不能满足现有ERP系统开发设计的需求,针对目前ERP系统开发可扩展性,重用性差,不能适应企业业务快速变化的情况,我们开发ERP系统的过程中,采用了B/S结构模型,并且将通常的三层架构的中间业务层,即业务逻辑层,分为Web服务与业务组件层,建立基于.NET的四层结构模型,有效解决了系统非功能性需求,如系统的可扩展性和可重用性等。

关键词:NET;ERP系统;四层结构

中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)11-2507-03

近年来,随着信息技术和现代管理思想的进一步发展,企业资源计划(ERP)系统在计算机平台、事务处理能力和功能范围上有了很大进步。ERP系统不断完善,应用ERP的企业大幅度增加。然而在ERP软件开发过程中,人们所面临的问题不再仅仅是考虑软件系统的功能问题,还面临要解决更难以处理的非功能性需求,如系统性能、可扩展性、可重用性等,而传统 ERP软件的可扩展性、可重用性成为桎梏发展的一大障碍。

1 ERP软件可扩展性、可重用性解决方案

作为覆盖企业整个流程的一体化解决方案,ERP是一个包罗万象的异常复杂的庞大系统,ERP软件必须适应企业千变万化的个性需求和持续的变革,并对企业业务的重组和发展提供快速和高效的软件支持。在ERP软件开发过程中,人们所面临的问题不再仅仅是考虑软件系统的功能问题,还面临要解决更难以处理的非功能性需求,如系统性能、扩展性、重用性等。针对目前ERP系统开发可扩展性,重用性差,不能适应企业业务快速变化的情况,在开发ERP系统过程中,我们吸收软件重用的概念,在开发系统的每个层次,每个功能模块中,充分考虑运用重用性,扩展性原则来设计系统,以目前企业运行实际情况为基础,同时兼顾考虑企业将来业务的扩展。根据这种原则开发出的ERP系统既具有强大的应用特性,同时,可移植性好,可扩充性好,既能满足企业目前的需要,又能对某些动态链接库进行二次开发。互联网技术的迅速普及与快速发展深刻地改变了社会的运行模式,应用系统的发展也从传统的C/S模式到B/S模式,到目前具有多层结构的应用服务器模式,从而使企业的应用系统的建设具有更大的灵活性与可扩展性。我们要设计的这个ERP系统强调系统的可扩展性,可重用性,定位于在满足公司现有业务需求的基础上,同时给公司开发其他系统提供可重用的组件。主要达到两个目标,一是Rhombus ERP系统能够顺利的实现公司的业务要求;二是为系统保留灵活的扩展空间,在需求发生变化或进行二次开发时主体不变,利用预留的接口增加新功能或修改功能子模块,系统对接口的调用保持不变,将系统维护代价降至最低。本章分析Rhombus系统的系统框架,从系统框架的角度出发,讨论框架的可重用性因素。

我们开发的系统基于.NET三层结构模型。是微软公司的下一代软件和服务战略。它倡导一种全新的计算模型,该计算模型将计算的重点从一个由单独的设备和Web站点通过Internet简单相连的世界,转变成一个由设备、服务程序和计算机系统协同工作的世界,以便为用户提供更加丰富广泛的解决方案。

2 传统C/S结构模型及其局限性

传统ERP系统是基于窗体的两层应用系统,即C/S结构。在C/S结构的系统中,通常将应用程序分为两大部分,一部分是由多个用户共享信息与功能,此部分称为服务器部分;另一部分是每个用户所专用,成为客户部分。客户部分负责执行前台功能,如用户界面,用户接口和数据处理,将从服务器端请求得到的数据和资源进行组织,按用户的要求将结果返回给用户。而服务器部分执行后台部分,负责数据的管理与派送、客户端请求的响应、系统共享资源的分配等。这种结构将一个应用系统分为两大部分,由多个计算机分别执行,使它们有机的结合在一起,协同完成整个应用,从而达到系统的软、硬件资源最大限度的利用。

C/S结构如图所示。显示逻辑和事务处理逻辑部分被放在客户端,数据处理逻辑和数据库放在服务器端。

基于C/S结构的实时信息系统由如下几个方面的局限性:

1)开发和维护的成本高

由于应用逻辑部分或全部封装在客户端,因而不能对这些规则进行集中控制和管理。当应用逻辑被改动或更新时,需要每个最终用户重新分发,每次变动必须保证企业内所有客户端能够及时更新,其时间和金钱花费巨大。

2)客户端负载重

C/S结构客户端具有显示于事务处理与用户界面显示的功能,负载重,配置复杂。随着应用系统的功能日趋复杂和强大,客户端的应用程序也变得越来越庞大,需要不断的提高客户端的配置,增大了系统投资的成本。

3)灵活性差

C/S结构下模块每一部分的变动可能关联到其他模块,使系统升级困难,灵活性差。

4)安全性差

客户端应用程序直接和数据库打交道,客户端拥有对数据库操作的足够权限,致使非法用户能够操作甚至破坏数据库。

3 B/S四层架构及其优点

由于C/S结构的这些局限性,以C/S结构为主的ERP系统,不能满足远程用户以及企业外的新用户直接访问ERP系统,也不能满足现有ERP系统开发设计的需求,随着Internet/Intranet 的广泛应用,基于浏览器的客户机/服务器(B/S)的计算模式逐渐被人们认可,B/S结构是由 C/S结构发展而成的 Web浏览器/Web服务器/数据库 (DB)服务器3层结构。

三层的Browser/Server体系结构使把两层的Client/Server结构的事务处理逻辑模块从客户机的任务中分离出来,由单独组成的一层来负担,使客户机的负载明显减轻了,把负荷均衡的分配给了Web服务器上。由于客户机把事务处理逻辑部分转给了功能服务器,使客户机一下子苗条了许多,成为瘦客户机,不在负责处理复杂的计算和数据访问等关键事务,只负责用户界面的显示,从而变成一个简单的图形交互工具。

微软的.NET平台给应用程序开发提供了一个非常好的基础系统平台,但是,如何在这个平台上构建自己的应用系统,还需要我们针对应用系统的特点,构建自己的应用系统框架。

YOKOGAWA公司原来的系统是用Oracle Form平台开发的基于C/S模型系统,然而由于客户端开销量日渐增大,更多的客户类型与更方便的业务操作被提上了需求。结合目前Internet技术的发展,公司决定将原系统Web化,推进企业内部供应链的流畅以及与客户在企业级的交互。对开发的ERP系统提出以下要求:

1)对数据的共享有一套简单可行的描述机制;

2)松耦合,能适应分布式逻辑设计和物理实现;

3)实现系统的平台无关性;

4)动态发现和组合服务;

5)利用Web尽可能减少本地系统的负荷,同时又提高本地系统的资源利用率。

鉴于上述要求,我们开发ERP系统的过程中,采用了B/S结构模型,并且将通常的三层架构的中间业务层,即业务逻辑层,分为Web服务与业务组件层,如图2所示。

下面详细说明每一层的主要功能:

1)数据访问层(Data Access Layer)

数据服务层提供数据库支持,主要由表定义,表关系和组成数据库的数据项构成,并且还包括了以自身的格式表示的用于从数据库中检索信息的代码。在数据服务层,要解决的难点在于确定数据服务层在那儿结束,而业务逻辑层在那儿开始,之所以产生这一问题,是因为可以在数据库代码(作为存储过程)中就可以实现业务逻辑(业务逻辑层)的许多功能,而至于怎样划分主要是根据应用程序的需要;是将快速的移植到其他数据库服务器作为考虑的关键,还是重点考虑应用系统的性能,如果重点是前者,那么将大部分功能放在业务逻辑层是更好的选择,反之则放在数据层。

在Rhombus系统实现过程中,系统对可移植性,业务逻辑的封装要求非常高,因此,我们一般把相关的功能放入业务逻辑层,数据层只提供一些最基本的存储,查询,修改功能。对于公司内部不同子公司采用的异构数据源,我们的设计是通过一个数据读取接口读取数据,即不管数据库是Oracle 或者SQL Server,都可以我们通过Data类提供的接口来操作数据库。

对于分布式应用程序来说,在数据层使用存储过程是一种最好的实施手段。它提供了与中间层更为清楚的分离,还有助于阐明事务上下文和范围。在Rhombus系统中,我们运用了大量的存储过程,封装了所有的数据库逻辑。

2)业务逻辑层(Business Logic Layer)

业务逻辑层是三层应用系统的关键所在,它负责处理所有用户的请求,并且把处理结果返回给表示层,应用程序的业务逻辑层是大部分的特定功能驻留之处,通常,这些功能由调用由多个命令或者组件来实现,以便使表示层与应用程序所要实现的复杂业务规则分离,该层一般包括指向第三方系统的方法的链接,这一层是终端客户到后端异构系统之间的桥梁。

. NET平台内建了对Web Service的支持。新一代的Web服务技术和以往基于Web的技术不同,它所提供的不是信息服务或基于简单交互的粗糙服务,而是在对大量数据信息和数据应用集成的基础上提供统一的服务、描述定位和访问方式。它允许你在重用代码的同时,重用代码后面的数据,因而可以很好解决上面提到的重用问题;它所采用的新型分布式计算解决方案解决了CORBA和DCOM等存在的互操作问题;并且充分利用了Internet的主流技术,并且能够基本满足系统需求。

3)业务组件层(Business Component Layer)

这一层我们采用面向对象的设计思想,将公司业务相关的实体,抽象成类,业务逻辑的实现有时调用数据层提供的接口,但大多数时候调用类提供的接口,这一层的主要目的是提高系统的可扩展性,可重用性。对某个业务进行修改和新增业务组件不会影响整个系统架构。将与平台无关的部分提取出来单独作为一个业务处理层组件群封装。

在我们的Rhombus系统中,之所以运用业务组件层,也就是我们运用面向对象方法设计的类单独提取出来,因为他们对于公司所有业务流程的运作来说,是比较公有的部分,在公司扩展系统,或者开发其他系统时,即使不使用三层架构,也可以使用我们现有的面向对象设计。

4)表示层(Presentation Layer)

应用程序的表示层是将终端用户能看到的系统的唯一部分,该层通过业务层,利用其功能进行许多工作,但它并不直接访问数据库(或是数据服务层的其他部分),通过这种方式,就可以隐藏许多应用程序的具体实现,只需提供最合适的表示信息和可能的选项。

这种分层结构可提供高度的灵活性与可扩展性。首先,.NET在表示层上提供了在网页中使用基于事件处理的机制,将UI界面与后台代码分离,从而可高效并行开发;其次,.NET提供了完备的Web服务部署架构,独立出来的Web服务层可专门负责处理企业的各种服务(包括所提供的服务与所需要的服务),使其更容易快速满足客户的要求,以及符合企业决策人员所制订的企业发展战略;再者,业务组件层关注的重点在具体的业务逻辑,对具体的功能业务分别独立开发,将其封装到.NET组件中去,根据服务要求在Web服务层灵活的进行装配;最后,使用数据库访问技术进行数据适配,可使得在业务组件开发过程中无须关心后台究竟使用的是何种数据库系统。

在开发的ERP系统中,含有一部分需要通过WEB使用的功能,要求能够通过Internet进行远程业务查询。在技术上我们比较了ASP和。是使开发人员能够使用.NET框架开发基于Web的应用程序的宿主环境。但是,不止是一个运行库宿主,它是使用托管代码开发Web站点和通过Internet分布的对象的完整结构。Web窗体和XML Web services都将IIS和用作应用程序的机制。页比非托管ASP页更快、更实用并且更易于开发,因为它们像其他托管应用程序一样能与运行库进行交互。

下面以Rhombus系统中用户创建一个新的Delivery订单为例,具体说明我们四层结构模型的工作流程,如图3所示。

首先在表示层,用户在客户端页面上输入Delivery Head数据,提出请求,要求新建一条Delivery Head记录。然后客户端从UDDI Registry中查找到所需的服务后,绑定相应的服务,基于SOAP协议向服务提供端发送SOAP请求并接受SOAP回应。客户端的请求通过SOAP服务端的桥接,完成SOAP和具体服务协议映射后,访问具体的Web Service 即InsertDeliveryHead()。这个Web方法是通过调用类层提供的函数完成的。在类层即业务组件层,构造一个Delivery对象,调用对象的公共方法insertDeliveryHead();这个公共方法与数据库的数据交互是通过存储过程upDeliveryHeadInsert完成的。数据库记录插入完成以后,一步步分层向上层交互操作成功的信息,最后返回到客户端:新建记录成功的提示信息。

参考文献:

[1] 胡迎松,彭利文,池楚兵.基于.NET的Web应用三层结构设计技术[J].计算机工程,2003,29(8):173-175.

[2] Preece A, Decker S. Intelligent web services[J].IEEE Intelligent Systems,2002,17(1):15-17.

上一篇:基于Mozilla平台的软件界面开发方法 下一篇:《C#程序设计》教学改革探索