基于B/S的三层结构的ERP库存软件系统开发
方木云,骆国刚
(安徽工业大学计算机学院,安徽马鞍山243002)
摘要:目前ERP(EnterpriseResourcePlanning)软件大部分是基于C/S的两层结构,其缺点是维护工作量大:每增加一个客户端,就需要一份维护。为了减少维护工作量,减少开发成本,需要开发基于B/S的三层结构ERP软件:只需维护服务器,客户端用浏览器运行,不需维护,大大减少开发和维护成本。文中利用微软发布的VB.NET开发了一个基于B/S的三层结构的ERP库存管理系统,减少了开发和维护成本,方便用户增加客户端,缺点是界面不灵活,大量数据交互实现困难。关键词:ERP系统;C/S结构;B/S结构;VB.NET
中图分类号:TP311.52文献标识码:A文章编号:1005-3751(2004)04-0031-04
DevelopmentofERPStockManagementSystem
BasedonB/SThree-tierStructure
FANGMuyun,LUOGuogang
(InstituteofComputerScienceandTechnology,AnhuiUniversityofTechnology,Ma anshan243002,China)
Abstract:AtpresentmostERPsoftwarearedevelopedbasedonC/Stwo-tierstructure,whoseweaknessismuchmaintenanceisneeded:onceaclientisadded,apieceofmaintenanceisneeded.Inordertodecreasethecostofmaintenanceanddevelopment,ERPsoftwarebasedonB/Sthree-tierstructureisneededtodevelop:onlyserverisneededtomaintain,clientisrunbybrowser.Therefore,maintenanceisnotneededandthecostofdevelopmentandmaintenanceisdecreased.TheERPstockmanagementsystembasedonB/Sthree-tierstructureisdevelopedbyusingVB.NETreleasedbyMicrosoftcompany,whichdecreasethecostofdevelopmentandmaintenance,makeiteaserforuserstoaddclients.Ithastheweakness:theinterfaceisdullandtheexchangingofmuchdataisdifficult.Keywords:ERPsystem;C/Sstructure;B/Sstructure;VB.NET
0引言
以网络经济、知识经济和电子商务革命为特征的新经济已经促使世界经济格局和市场竞争趋势发生了巨大的变化。为了适应这一新的形势,赢得市场竞争的主动权,世界各国许多企业都在审时度势,积极采取应对策略,通过不断的企业创新来提高企业核心竞争力、生存能力和发展能力。目前,中国企业面对经济全球化、全球信息化和加入WTO带来的挑战和压力,为了保持企业的竞争优势和高速增长,必须要加强管理,进行重组,优化业务流程,同时还要实施面向供应链管理的ERP系统。
2002年,国务院成立了高规格的国家信息化领导小组;国家经贸委明确要求大型企业在三年内全部实现信息化;同年,国家经贸委又在青岛召开!全国企业信息化投资推进工作研讨会∀。这一系列战略、政策和措施的出台,标
志着中国制定的!以信息化带动工业化∀的发展战略正在得到有效的贯彻执行,也极大地推动了ERP市场的发展。面对巨大的ERP市场,摆在中国企业面前的,一是软件公司能提供什么样的ERP产品,二是企业如何成功实施ERP项目,这是两个非常关键的问题。
Internet的发展使得浏览器/服务器这种Internet架构成为今后应用程序的主流结构,ERP当然也不例外。因为ERP的发展方向是不只管理企业本身,还要管理遍布全球的客户、供应商、合作伙伴等各个环节,采用Internet架构是理想之选。面对中国巨大的ERP市场,国际国内大的ERP软件公司纷纷推出基于B/S的软件产品,以求在市场上占有先机,2002年,用友、Oracle、Sun联合推出的iERP便是其中的典型例证。这种架构可以降低实施成本,有利于向电子商务方向平滑过渡。专家们预言,!Web浏览器将来会完全代替传统的客户机∀。几个大的软件公司Oracle,SALP和BAAN都在争先恐后地把他们的MRPII/ERP客户/服务器应用程序的客户机!Web化∀[1,2]。
在这场!变革∀即将到来的关键时刻,应该积极跟进。收稿日期:2003-09-14
基金项目:安徽省高等学校青年教师科研资助计划项目(2003jql31)作者简介:方木云(1968),男,湖北罗田人,副教授,研究方向为软件工程、软件质量度量。
32#微机发展第14卷#
这里,将用VB开发的基于C/S模式的ERP系统的部分模块转移到B/S模式上。
(2)适应大规模和复杂的应用需求。
如果说结构化方法使软件开发从一门手工艺术走向科学的工程方法,组件技术则使软件工程从个体作坊走向大规模工业化。虽然,结构化方法对中小型系统开发行之
有效,但对大型系统,结构化分析的结果往往是错综复杂的网状结构,而不是结构清晰的层次结构。这也正是面向对象方法学诞生的原因。组件技术能使复杂系统的设计变得简单可行,具有良好的伸缩性。
三层或多层结构可以将数据处理从客户端转移到应用服务器和数据库服务器上。这样,尽管客户端与应用服务器之间可能存在着多个甚至数百个的连接,但是应用服务器与数据库服务器之间的连接却只有少数几个,从而达到减少通信线路上传递的数据量的目标。这样的功能分配提供了很强的系统可伸缩性,使得在用户数量急剧增加时还能保持系统性能的稳定。使用传统的客户机/服务器模式根本无法胜任上千个客户机同时运行需要访问数据库的工作。即使在用户数量很大的情况下,数据库仍能保持良好的工作负载,保持系统的快速的响应速度。
(3)可适应不断的变化和新的业务需求。
任何应用系统实施的重点不在于需求确定以后能否实现这些需求,而是在系统实施后如何适应变化的需求。三层系统结构和组件式系统的开发和维护过程中,技术人员可以按照新的需求,通过在不同系统层次上调度更新的组件或新加入的组件来调整旧的系统,以适应新的与不断变化的要求。以往的系统只能靠专业维护人员或系统开发商的再次开发或修改原有系统,才能满足新的需求,代价往往很大,无法保证时间上的要求。
(4)访问异构数据库。
多层结构的中间层即应用服务器能够提供广泛的异构数据库访问和复制能力。传统的客户机/服务器结构则需要在客户端安装许多访问异构数据库的驱动程序,而三层/多层结构只要在中间层有相应的驱动程序就可以访问异构数据源。
1B/S三层体系结构
20世纪80年代以前广泛使用的是单层结构,单层结构的典型特点是GUI(图形用户接口),处理逻辑和数据存储作为一个整体包含在系统中(见图1)。
图1单层计算模型
90年代中期盛行两层结构,这种结构把应用程序分成两层:客户层和服务器层。用户接口和处理逻辑驻留在客户端,而与其相关的所有数据则存放在服务器端。两层系统与单层系统相比,主要好处是这种客户/服务器结构使客户端的程序变小,因此处理速度比单层结构更快。其缺点是当应用程序更复杂时,客户端程序依然显得庞大,这将减慢服务器的响应和处理(见图2)。
图2两层计算模型
1996年初,三层结构(客户端Web服务器数据库服务器)的出现使计算机网络的应用发生了根本变化。这一开放的、分布对象的方法把客户端庞大的程序又分成了两个部分:用户接口和逻辑处理,这种三层结构加快了对用户请求的响应和处理(见图3)。
图3三层计算模型
(5)能有效提高系统并发处理能力。
传统的一体化集中式系统或客户服务器架构,在处理
大信息量业务时,都可能形成瓶颈。而多层体系架构的组件式系统将界面、界面发布、业务应用逻辑及数据存储分为多个层次分散管理,逻辑或物理地将它们分开,可减轻系统压力,提高整体性能。并且中间层可以采取多机并行的方式、相互备份的方式,保证系统的高可用性。一般情况下进行数据分析时,每次查询可能涉及到大量的数据,往往需要较长的响应时间,特别在分布式数据环境下,响应时间有时长得令人难以忍受。三层(多)层结构提供了客户端与服务器之间的异步通信,使得客户不必等待提交的分析处理结果而可以继续执行其他处理任务。
(6)能有效提高系统安全性。多层体系结构将数据与程序、数据控制与应用逻辑分与两层模型相比,三层模型的优点可概括为:(1)能有效降低建设和维护成本,简化管理。多层应用结构在各层次上的组件能单独更新、替换或增加、拆除。因此,系统维护更方便,代价更低。又因各组
件互相独立,更换组件好比更换组合音响的一个部件,对系统其它部分并无影响,所以更新维护更加安全可靠。
客户端采用瘦客户机。因为客户机不必进行大量的计算或数据处理,它的硬件配置就不需要太高。
通过将业务逻辑集中到中间层,系统获得了对业务逻辑的独立性,即当用户的需求改变时,开发人员可以迅速地在中间层(应用服务器)上更新业务逻辑,而无须将更新后的应用提交到众多的PC终端系统上去,即客户端无须任何改动(改动众多的客户端并不是件轻松的事)。第4期方木云等:基于B/S的三层结构的ERP库存软件系统开发#33#
层独立管理,能更严格地控制信息访问;信息传递中采用数据加密技术,可进一步减低信息失密的风险。应用服务器内建安全控制数据库,实现应用服务器与数据服务器的双重权限控制,对权限的划分更准确、灵活、严格。新系统在信息访问、传递和存储三个环节均有严格的安全措施。
包含任意数量的DataTable(数据库),并且可以在这些表上建立约束关系。
当前市场上,MicrosoftVisualStudio.NET是一个比
较理想的开发B/S的三层结构应用软件的理想工具。因此,选用其中的VB.NET作为Web应用程序的开发工具。
2.5ERP库存系统软件介绍
ERP系统中的库存部分(应用在餐饮业)的主要模块见图4。
[4]
2MicrosoftVisualStudio.NET
1999年微软定义了公司的远景:!用先进的软件让人们随时随地通过任何设备获得强大能量∀。1998~2000年初,微软一直蓄势待发,精心部署研发力量和管理团队,准备在新世纪进行全面转折。2002年发布了MicrosoftVisualStudio.NET开发工具,在微软内部被称为!下一代视窗服务∀。
.NETFramework是在Microsoft.NET平台上进行开发的基础,.NETFramework以及针对设备的.NETFramework简化版为XMLWeb服务和其他应用程序提供了一个高效安全的开发环境,并全面支持XML[3]。
.NETFramework的核心技术为:通用语言运行库(CLR,CommonLanguageRuntime)、类库、ASP.NET及ADO.NET。
2.1通用语言运行库(CommonLanguageRuntime)
CLR引入了一些能提高应用程序运行可靠性的技术(比如消除了内存泄漏),同时也提供了多语言执行环境,使得组件和XMLWeb服务的综合使用不再受编程语言的限制。目前,可以用来编写.NET应用程序的编程语言不下20种,如C++,VisualBasic.NET,JScript,以及微软最新推出的开发语言C#,此外还包括不少第三方的语言,如COBOL,Eiffel,Perl,Python,Smalltalk等等。2.2类库
统一的类库提供了调用平台函数的通用方法,使人们不必再去学习并研究不同语言的API体系结构。2.3ASP.NET
ASP.NET建立在.NETFramework类的基础之上,并提供了由控件和基础部分组成的!Web程序模板∀,大大简化了Web程序和XMLWeb服务的开发。程序员直接面对的是一组ASP.NET控件,而这些控件由一些诸如文本框、下拉选单等通用的HTML用户界面构件封装而成。实际上这些控件运行于Web服务器上,并简单地以HTML的形式将用户界面发送到浏览器。2.4ADO.NET
与现有的ADO数据访问模型相比,ADO.NET引入了一些新的特性:基于XML,并且是松散耦合的(loosely-coupled)。ADO.NET使用了脱机(disconnected)数据缓存,使用户能快速地创建出高性能、可靠的XMLWeb服务和现在流行的多层应用程序(N-tierapplications)。DataSet是ADO.NET的核心,是一个存在于内存中的数据库,是离线的,并没有同数据库建立即时的连接,它可以图4ERP系统中库存模块图
物料档案、入库和现存数查询的运行界面见图5。
图5ERP库存软件系统的三个运行界面
下面是物料现存数查询部分的代码:
ImportsSystem.Data34#微机发展第14卷#
ImportsSystem.Data.SqlClientPublicClassWebnoexit
InheritsSystem.Web.UI.Page
ProtectedWithEventsLabel11AsSystem.Web.UI.WebControls.Label
ProtectedWithEventsLbldecamoutAsSystem.Web.UI.WebControls.Label
ProtectedWithEventsForm1AsSystem.Web.UI.HtmlControls.HtmlForm
ProtectedWithEventsLabel2AsSystem.Web.UI.WebControls.Label
ProtectedWithEventsTxtcategoryAsSystem.Web.UI.WebControls.TextBox
ProtectedWithEventsbtnokAsSystem.Web.UI.WebControls.Button
ProtectedWithEventsDataGrid1AsSystem.Web.UI.WebControls.DataGrid
#Region∃Web窗体设计器生成的代码∃ 该调用是Web窗体设计器所必需的
PrivateSubPage-Init(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Init CODEGEN:此方法调用是Web窗体设计器所必需的 不要使用代码编辑器修改它InitializeComponent()EndSub#EndRegion 绑定函数 PrivateSubmydatabind(ByValstrqryAsString) DimcmmAsNewSqlConnection(!datasource=ANGONGDAFFF\\FFF;initialcatalog=HOTELERP;integratedsecurity=SSPI;persistsecurityinfo=False;userid=ANGONGDAFFF\\FFF\\aspnet;workstationid=ANGONGDAFFF\\FFF;packetsize=4096∀) DimdscmdAsNewSqlDataAdapter(strqry,cmm)DimdsAsNewDataSet()dscmd.Fill(ds,!sto-materialtotal∀) DataGrid1.DataSource=ds.Tables(!sto-materialtotal∀).DefaultView DataGrid1.DataBind()EndSub PrivateSubPage-Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load 在此处放置初始化页的用户代码,利用下拉框读出所有物料编码 IfNotIsPostBackThen mydatabind(!selecttop10materialcode%物料编码 ,materialname%物料名称 ,incamount%入库数量 ,incmoney%入库金额 ,decamount%出库数量 ,decmoney%出库金额 ,endamount%现存数量 ,endmoney%现存金额 fromsto-materialtotal∀)EndIfEndSub PrivateSubbtnok-Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) mydatabind(!select*fromsto-materialtotalwherematerialcategorylike%%!&Txtcategory.Text&∀% ∀)EndSubEndClass 从运行界面来看,软件完全在浏览器IE上运行,在Netscape上也能运行;从代码来看,VB.NET完全是面向 对象的开发语言,引入了命名空间(Namescape)和类(Class)的概念。Web页就是一个类,事件是Web页类的函数成员,Web页中的控件是其数据成员。主要用到数据控件SqlDataAdapter、DataSet和DataGrid,普通控件Button,连接数据库用类SqlConnection。 3总结 Web应用程序确实给开发人员带来了惊喜:在Web服务器上开发的应用程序可以在任何一台装有浏览器的机器上被授权人员运行。当人们用C/S结构开发ERP软件时,经常苦于两件事情:a.维护许多客户端,维护往往比开发更让开发者感到麻烦;b.当企业分布在两个城市时或企业分布在同城较远的地方,单独布线或租线不划算,因此无法访问同一个数据库,给ERP软件的实施带来实实在在的难题。基于B/S的ERP软件可以解决这些问题。 ERP系统从基于C/S的两层结构转变到基于B/S的三层结构是一种趋势,它极大地方便了开发商和用户,充分地利用了Internet资源,有利于电子商务的发展是,基于B/S的ERP软件目前也存在不少问题: [5] 。但 (1)MicrosoftVisualStudio.NET在Web应用程序开发上,功能不强大,控件少,没有Windows应用程序中的Menu,Treeview,Listview,ToolBar等控件。 (2)界面受到浏览器极大的限制:IE窗口总是占据屏幕的一部分,美观和习惯上难以为用户接受。 (3)大量的数据交互依赖于浏览器的速度。 上面的问题尽管不是严重的技术难题,但对于要求严格的用户来说,丝毫不能忽视,因此,该产品停留在实验室,没有提供给用户。可以肯定,B/S结构迟早是ERP软件的主流结构,但当前无法达到主流地位,C/S结构的ERP软件目前依然占据主流,微软也感觉.NET没有被用户如想象中那么快被接受。 参考文献: [1]罗鸿.ERP原理#设计#实施[M].北京:电子工业出版 社,2002. (下转第37页) 第4期范清彪等:面向对象的牵引保护动作行为分析专家系统#37# 构架,开发工具选择Borland公司可视化开发平台Delphi6.0。体系结构如图6所示。 procedureInference-backward();virtual;//判断推理//其他方法end; TByqCDProtect=class(TProtect)//变压器差动保护单元private FName:string;//保护单元名称FAddr:integer;//保护单元地址Protected //有关该对象的事实//有关该对象的专家规则 图6软件体结构 public constructorcreate();//构造函数destructordestroy;//析构函数//其他方法end; 其中所有对象均在内存对象层中实现如下(以保护为例): TProtectDV=class//保护装置基类private FName:string;//保护装置名称FAddr:integer;//保护对象FProtec:Tlist;//包含的保护单元//其他属性public constructorcreate();//构造函数destructordestroy;//析构函数 functionAddProtect():boolean;//增加保护单元functionDelProtect():Boolean;//删除保护单元//方法end; TProtect=class//保护单元基类private //有关该对象的属性protected FFacts:Tlist;//有关事实Fruels:Tlist;//有关专家规则Public constructorcreate();//构造函数destructordestroy;//析构函数 procedureR-Edit();virtual;//知识编辑procedureR-Insert();virtual;//插入规则procedureR-Delete();virtual;//删除规则procedureF-Insert();virtual;//插入事实procedureF-Delete();virtual;//删除事实 5结束语 本专家系统是采用面向对象技术建造。面向对象技术以数据为中心把数据和操作结合了起来,是一个促进模块化设计和软件重用的高效能程序设计方法[6]。由于它的统一性(一切事物都归结为称作对象的语义模型,囊括了说明性知识和过程式知识)和继承性(对象之间以层次结构上的关系联系着)而有力地支持了知识库系统逻辑结构向人类思维特征靠拢[5]。模块层次化的结构的采用使系统更具灵活性和可扩展性。 参考文献: [1]StyvaktakisE,BollenMHJ.ExpertSystemforClassification andAnalysisofPowerSystemEvents[J].IEEETransactionsOnPowerDelivery,2002,17(2):23-26. [2]秦红霞,董张卓.基于面向对象技术的变电站故障诊断及 恢复处理专家系统[J].电力系统自动化,1996,(9):19-23. [3]邓岳辉,杨以函.智能变电站发电厂倒闸操作及培训专家 系统[J].华北电力大学学报,1998,(7):25-28. [4]刘青,彭晓兰,程时杰等.面向对象的电力系统专家系统 设计[J].电力系统自动化,1997,(5):33-36. [5]张仰森,黄改娟.人工智能实用教程[M].北京:北京希望电 子出版社,2002. [6]陆伟民.人工智能技术及应用[M].上海:同济大学出版社, 1998. (上接第34页) [2]YenDC,ChouDC,ChangJ.AsynergicanalysisforWeb-basedenterpriseresourcesplanningsystems[J].ComputerStandards&Interfaces,2002,2(6):254-262. [3]高清和.ASP.NET程序开发[M].北京:中国铁道出版社, 2001. [4]东名,吴明月.ASP.NET动态网页设计高手[M].北京: 清华大学出版社,2001. [5]CheIJ.PlanningforERPsystems:analysisandfuturetrend [J].BusinessProcessManagement,2001,7(5):374-386. 因篇幅问题不能全部显示,请点此查看更多更全内容