多层结构来开发ASP.NET程序
2024-07-10 12:57:30
供稿:网友
注册会员,创建你的web开发资料库,最近我们用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,由于是在进行的时候(我们用的是2003版)。不过据说vs.net 2005在2003的基础上改良了很多,很值得期待。