惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 司徒正美
Last Week in AI
Last Week in AI
爱范儿
爱范儿
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
量子位
V
V2EX
博客园 - 叶小钗
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog

博客园 - ProgrammingBookWorm

在.NET下多层架构企业管理系统的开发 VS2008中文试用版的破解 在ASP.NET 2.0中操作数据::使用ObjectDataSource展现数据 HTTP服务器状态代码定义(Status Code Definitions) CodeSmith快速向导(翻译) 利用.net 2.0中的TreeView控件与数据库绑定,生成无限级的树目录 用户控件中使用客户端脚本的控件名称问题 用户中心 - 博客园 图解Windows2003邮件服务器 Making sense of ASP.Net Paths JScript .NET Fundamentals JScript IntelliSense in Visual Studio Orcas JScript Debugging in Visual Web Developer Orcas javascript中String 对象属性和方法 Window.Open详解 Get Query String variables in JavaScript ASP.NET Script Exploits Overview ASP.NET / How to: Implement Simple Forms Authentication How to: Implement Simple Forms Authentication
多层结构来开发ASP.NET程序
ProgrammingBookWorm · 2008-04-18 · via 博客园 - ProgrammingBookWorm
最近我们用ASP.NET开发了一个企业内部的软件开发管理系统,这也是我们第一次用ASP.NET,用的语言是C#。下面我着重讲一下我们系统的架构,恳请大家指点。

先讲讲系统开发的背景。系统不大,开发的目的也是用来管理我们公司的软件开发流程,同时达到学习.NET的目的。既然是公司自己的系统,同时还带有学习的目的,所以在系统的架构上,我们也力求结构完整和清晰,而把性能等其他放在第二位考虑。存在很多不完善的地方也是在所难免的,大家带着批判的眼光来看待它就好了:)

系统分为4层,分别为(Web)表示层、(Facade)业务外观层、(Rules)业务逻辑层和(Data)数据层。每层分别属于自己的Project。另外还有一个用于处理共通业务的Project。他们之间互相的调用关系如下所示:
Web --> Facade --> Rules --> Data --> DB

下面分别来讲讲每层的作用和特点:
Data层叫数据层,它负责数据的提取和转换。Data层继承自DataTable。在它上面建立了一个数据库的映射关系,也就是说,数据库的每一个字段在这里都有一个常量和它关联。它封装好了Select,insert和update方法。你可以像操作DataTable那样来操作它,比如取值前先调用Select方法,然后再用oData.GetValue(i,数据库字段的别名)就可以取得值了。插入和更新操作前先用oData.GetValue(i,数据库字段的别名,value)设置值,然后再调用Insert或者Update方法。通过这层,就把数据库的定义和上层业务逻辑分离开了。

Data上面是Rules层。Rules层叫规则层,那它主要做什么呢?其实很简单,Data层相当于是数据库的一个记录集,它可能包括了很多条记录。而Rules这一层则把包含多条记录的Data对象拆分成多个Rules对象,通过提供属性的方式给Facade层调用。在这一层上,根据业务规则做一些处理和检查操作。上一层就可以通过调用Rules对象不同的属性来获取相应的处理后的值。

Facade层叫业务外观层,它在Rules层的上一层。它主要负责一些业务的外观处理,组织多个Rules对象和为Web层提供显示准备等。

最上层就是Web表示层了。它负责处理页面上的一些check和显示的制御等等。

以上结构也是参考了微软的Duwamish 7.0。并且每层的命名完全是按照微软的命名来的。在具体实施的过程中,根据上面的设计,Data和Rules层已经很有规律了,而且数据库的定义是通过我们公司的另外一个系统来管理的,数据库表和列的定义都可以很方便的得到,于是我们制作了一个自动生成Data层和Rules层的小工具,这个小工具能自动生成Data层和Rules层的类,你要做的仅仅是根据你的业务来充实Rules层的类和处理Facade和Web层了,这样就大大地减轻了我们的负担。

系统现在已经编码测试完成正准备投入试用。由于是在企业内部网上使用,也没感觉慢:)。但是性能不好是肯定的了,接下来就是要想办法如何来提高性能了。

在开发的过程中,自己也总是不断的拿它来跟JSP比较。个人ASP.NET还是很不错的,它可以让你象桌面程序开发那样来开发WEB程序,微软也提供了很丰富的控件,但是很多控件感觉有点像鸡肋,好像用起来挺方便,但是却有各方面的缺陷不是很实用。另外VS.NET这套开发工具还有很多Bug,由于是在进行WEB开发的时候(我们用的是2003版)。不过据说VS.NET 2005在2003的基础上改良了很多,很值得期待。