在.NET下多层架构企业管理系统的开发
引言
.NET 框架是微软开发出的新一代开发平台。允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。本文介绍的管理系统是在.NET平台下开发的,以极限编程的开发思想,采用了面向对象开发、B/S架构、ASP.NET、C#以及自动化测试工具CSUnit。
问题分析
本系统为国外的某贸易公司开发,对公司的采购、销售、库存等各个贸易环节进行管理。该公司在国外,它的供应商在国内,而客户都是国外的公司。公司、供应商、客户目前都可以连接Internet,公司内部有局域网,对外主要通过ADSL高速连接Internet。
在对公司的业务需求进行了仔细的分析后,我们认为整个系统应当包含如下的功能:能够及时同供应商进行交流,并对供应商的产品生产进度进行跟踪;收到供应商发来的产品后,可以对这些产品进行库存管理,并随时了解产品的库存状况;可以及时同客户进行交流,并对客户发来的订单状况进行跟踪;能够对用户进行权限控制,提高系统的可控性和安全性;新系统要界面友好、数据传输速度较快、易用性和扩展性强,等等。
系统开发描述
根据前面的系统需求和功能分析,系统主要分为以下几个部分:
⑴ 基本设置管理:包括人员管理模块——用于建立和维护使用系统的用户,公司管理模块——维护系统涉及到的客户和供应商信息,产品管理——添加、修改、删除以及查询产品信息。
⑵ 供应管理系统:因为公司的供应商主要在国内,系统采用中文界面,包括对采购订单的管理模块,生产进度管理模块,发货批次管理模块,报表管理模块以及交流信息管理模块。
⑶ 销售管理系统:该子系统负责与客户的交流,包括客户询价管理模块,客户订单管理模块,生产信息查询模块,质量信息反馈系统以及报表管理模块。
⑷库存管理系统:对公司的库存情况进行维护,包括库房基本设置模块,库房产品管理模块,报表管理模块。
系统采用三层的体系结构,数据库采用Microsoft SQL Server2000,编程语言为C#以及ASP.NET, Web页面采用ASP.NET、codebehide代码,后台程序由C#编写。除Web表示层外,还有Model层、数据访问层DAL、业务逻辑层BLL,自动化测试层UT,等等。
DAL负责数据库的数据存取,BLL通过调用DAL层的方法来实现业务需求,Web层通过调用BLL的方法来实现与用户的交互,UT层负责Model层、DAL层和BLL层的单元测试,Model提供数据实体类供Web、BLL、DAL调用,各层之间的关系如图1:
图 1
DAL负责与数据库的交互,为了提高维护性,采用OOP的设计思想,只有BLL层可以直接调用DAL层类中的方法,不可以跨层调用。数据库的连接字段信息放置在Web.config文件中,例如:要连接SQL SERVER数据库,设置如下:
<add key=” MSSQLConnString” value=”server=(local); user id=sa; password=pwd; database=dbEnt”/> |
对于DAL,数据访问可能比较频繁,需要经常进行数据库的连接以及关闭操作,因此系统没有采用ADO.NET,使用DataReader对象返回数据以提高应用程序的性能并减少系统开销。示例如下:
public static SqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connString); try { PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch { conn.Close(); throw; } } |
BLL层的功能主要包括销售管理、采购管理、库存管理、基本设置管理、产品管理、质量管理、财务管理等方面,由多个不同的类互相配合实现复杂的业务逻辑。
UT层负责对BLL、DAL以及Model进行单元测试,按照XP以及TDD的思想,先编写单元测试类,后开始类方法的编写。通过测试来指导程序代码的开发,单元测试的通过就是类方法的完成。UT层的结构类似DAL,BLL等,针对不同的类建立相应的测试单元类。UT的结构如图2:
WEB层是直接与用户交互的层面,通过codebehind代码,该层直接调用BLL层的方法来实现用户的业务需求,并将结果显示在Web页面。因为公司服务器在英国伦敦,但是很多用户并不在英国,要考虑的问题包括:
⑴ 安全性 在web.config中对文件的安全性进行设置,即使用户登录系统后,某些网页必须有特定权限的用户可以浏览;对于页面间的参数传递通过Session进行,超级链接后不附加任何参数。
⑵ 速度 考虑到部分的用户上网速度比较慢,带宽不足,对于大批量的数据显示尽量采用分页的方式进行。
⑶ 易用性 由于很多的用户非计算机专业人员,因此要求系统使用方便而快捷,比如:对有多个输入框的数据输入,可以通过回车键在不同的输入框之间跳转,方便用户操作;对于内部管理系统,因为原先客户一直使用Access系统,要求新的系统具有较高的自学习能力,尽量参照原先系统。
图2 UT的结构图
结束语
本系统开发时间为12个月,开发人员为5人。数据库使用50多个库表,开发工具为Visio Studio 2003,采用开源工具CSUnit作为单元测试工具。在多层架构的开发模式下,不同的开发人员负责不同的层,可以专注于自己的部分。比如:负责Web页面的人可以专心设计界面,负责DAL层的人则主要考虑与数据库的交互,至于业务需求则由负责BLL层的人来进行。通过分层模式,大大改善了系统的维护性,也加快了开发速度。可以想像,伴随着微软.NET战略的推行,在.NET下多层架构的开发模式将越来越流行。
在.NET下多层架构企业管理系统的开发的更多相关文章
- 用ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统
用http://ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统 背景:前段时间,给一家公司做外包(就是图标是朵菊花那家).为了尽快实现交付,网上四处寻找适合中小型企 ...
- 分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构)
项目源码下载: WWW.DI81.COM 分享一个大型进销存供应链项目(多层架构.分布式WCF多服务器部署.微软企业库架构) 这是一个比较大型的项目,准备开源了.支持N家门店同时操作.远程WCF+企 ...
- .NET跨平台之mac 下vs code 多层架构编程
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入,申请备注填写姓名+技术+工作年限) Q Q:408365330 E-Mail:eg ...
- 转载Mvc的多层架构
Mvc的多层架构 分享一个Mvc的多层架构,欢迎大家拍砖斧正 多层架构是什么? 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,关于多层架构的标准,我认为有 ...
- 分享一个MVC的多层架构,欢迎大家拍砖斧正
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策 ...
- 多层架构+MVC+EF+AUTOFAC+AUTOMAPPER
最近使用ligerui搭建了一个简单的教务管理demo,将重要的地方记录,也希望能帮到有这方面需要园友. 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证 ...
- 【课程分享】基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构、自己定义工作流)
基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构.自己定义工作流) 课程讲师:张弘 课程分类:Java 适合人群:中级 课时数量:37课时 用到技术:Spring ...
- Mvc的多层架构
分享一个Mvc的多层架构,欢迎大家拍砖斧正 多层架构是什么? 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,关于多层架构的标准,我认为有一句话是比较有代表 ...
- 企业管理系统——第三周需求&原型改进_张正浩,黄锐斌
企业管理系统——需求&原型改进,架构设计,测试计划 组员:张正浩,黄锐斌 一.需求&原型改进 1.给目标用户展现原型,与目标用户进一步沟通理解需求 我们的目标用户是公司管理员 场景:随 ...
随机推荐
- 【 D3.js 入门系列 --- 5.1 】 做一个带坐标轴和标签的图表
前面几节讲解了图标.坐标轴.比例等等,这一节整合这些内容做一个实用的图表.结果图如下: 代码如下所示: <html> <head> <meta charset=" ...
- 转自一个CG大神的文章
<如何学好游戏3D引擎编程>此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自 ...
- Postfix邮件服务器搭建及配置
一.邮件服务器(Mail Server)的传输协议 1.简单邮件传输协议(SMTP):Simple Mail Transger Protocol 2.扩展的简单邮件传输协议(ESMTP):Extend ...
- linux用户和用户组的基本操作
1.用户组操作 -创建用户组 # groupadd 组名 说明:新创建的组id默认从500开始,也可以通过[-g]选项指定组id,指定组id后新创建的组id会从指定的id后依次创建. -删除用户组 # ...
- 《C专家编程》第四章——令人震惊的事实:数组和指针并不相同
数组和指针是C语言里相当重要的两部分内容,也是新手程序员最容易搞混的两个地方,本章我们锁定指针与数组,探讨它们的异同点. 首先来看指针与数组在声明上的区别: int a[10]; int *p; 很明 ...
- Exynos 4412
Exynos 4412采用了三星最新的32nm HKMG工艺,是三星的第一款四核处理器 1.启动 有时间再接着写……
- grunt压缩js文件
grunt是node中很好的管理项目的工具,利用它可以实现对整个项目的管理,避免很多重复性的工作如合并.压缩,检查语法等. 使用grunt首先要安装node环境,nodejs官网http://node ...
- Qt实用小技巧(转)
原博网址:http://www.cnblogs.com/feiyangqingyun/archive/2010/12/06/1898143.html 1.如果在窗体关闭前自行判断是否可关闭答:重新实现 ...
- CentOS 7下源码安装MySQL 5.6
本文转载,并非原创. 目录 准备工作 运行环境 确认你的安装版本 下载MySQL 安装MySQL 准备安装环境 编译和安装 配置MySQL 单实例配置 单实例配置方法 添加防火墙 启动MySQL 重启 ...
- shell脚本,防止sshd被暴力破解
1.tail -f /var/log/secure 你会发现有很多的登录 错误.这说明你的机器正在被暴力破解. 2.新建 一个 shell脚 本 保存退出. 3.加入定时crontab -e 我这里每 ...