最近我们用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的基础上改良了很多,很值得期待。