第一章(续):企业级项目框架解决方案的提出
前言:自从上篇文章,争议很多,所以我决定采用:翻译+自创的方式来写文章,在写的过程中也把自己的一些心得和体会融合进去,希望大家支持,从技术的角度来看文章。
上一篇文章已经谈论了整个项目的"提出问题--设计方案"部分,本篇的话题是接着上一篇而来的。主要包括如下:
整个项目的解决方案
步入实战
而且由于篇幅的原因,本系列的文章结构一般是每一章分为两篇文章来写:第一篇:提出问题和设计方案,第二篇:解决方案。
项目的解决方案
之前我们已经说过了,整个系统的的开发将会采用三层结构:UI,BLL,DAL。当我们用Visual Studio来创建解决方案的时候,我们可以把很多的不同类型的项目放在同一个解决方案中,这样做也使得我们容易管理三个层。UI层主要是有web项目和自定义控件组成。UI开发人员控制网站的整体的外观,而不是编码。他们主要关注外观的字体,颜色等等,来满足客户的外观的需求。
BLL包含了所有的业务逻辑和验证的规则,可以说BLL是整个系统中最为核心的部分。例如,假设在系统中有一个创建用户的界面,用户的名字是必须而且唯一的,我们一般把判断的逻辑放在了页面的代码后面。现在如果新的需求来了:系统要导入一个以逗号分隔用户名的文件(也就是说一下子准备创建多个用户),而且用户名依然是必须且唯一,那么我们就必须在之前出现那段判断逻辑出现的地方去修改,如果是写在很多的页面中的话,我们就得一一的修改。如果我们是把判断的逻辑放在一个单独的类中,那么我们就可以重用代码,而且修改也只有一处。相信这点大家都懂,所以业务逻辑层BLL的设计就是依照整个原理,同时这也是OO中的一个设计原则:封装变化点,哪里变化就封装哪里。
至于第三层就是DAL数据访问层,一般在DAL中包含了数据库访问的一些逻辑,例如调用数据库的存储过程,或者是执SQL查询语句。一般DAL层的开发人员对数据库操作的知识比较了解。创建DAL的原因主要是为了以后为数据库的替换带来方便,当数据库变换之后,系统的UI,和BLL不用变化,变化的只是DAL部分。说实话,虽然设计是这样的,但是一般的在系统完成之后要变换数据库的很少。
下面就是三层架构的很常见的设计图:
![](https://i-blog.csdnimg.cn/blog_migrate/59d8534507cff9b42169eebb2d1dcedc.jpeg)
步入实战
在我们这个系统开发过程中,整个系统的解决方案的组成部分主要包括:一个ASP.NET的网站项目,一个类库项目来作为BLL层,一个类库项目来作为DAL层,以及一个服务器控件的类库。同时在系统还会用到Microsoft Exception Handling Application Block,我会在会面用到的时候,把安装包给大家。
在一个企业级的开发项目中,在使用的控件的时候,很多的时候都是需要定制的,因为一般要根据不同的业务逻辑来设计开发控件。(希望了解控件开发的朋友,可以看看我的自定义控件系列)
下面我们就开发一步步的动手(也希望大家跟着一起做,因为很多时候看着看着就在不知道之前写了什么):
1.打开 Visual Studio 2008 ,选择"文件"-"新建"-"项目",如下图:
2.选择"其他项目类型"-""Visual Studio 解决方案"
3.解决方案命名为"PaidTimeOffSolution".
4.选择我们存放解决的目录。
这个解决方案包含了一个ASP.NET网站醒目和一些类库项目。我们可以建立基于文件系统的网站,但是我们最后的项目还是要放在IIS中运行的,为了更好的模拟我们产品的运行环境,我们还是创建基于IIS的网站。
下面我们就配置一个IIS的虚拟路径:
1.我们导航到我们刚刚创建的那个解决方案的文件目录下,并且在文件目录下创建一个文件夹:PaidTimeOffUI
2.把PaidTimeOffUI文件夹配置为虚拟的路径.
3.在Visual Studio 2008 中,右击"PaidTimeOffSolution"解决方案,选择"添加新网站",然后建立基于IIS的ASP.NET网站,并且选择C#语言。
下面我们就开发创建BLL和DAL:
1.右击"PaidTimeOffSolution"解决方案,添加"新建项目",并且选择C#类库,命名为"V2.PaidTimeOffBLL",然后确认。
2.同理,创建"V2.PaidTimeOffDAL".
3.最后添加一个自定义控件库,如下:
然后编译整个解决方案,并且把V2.PaidTimeOffBLL.dll,V2.FrameworkControls.dll,引入到PaidTimeOffUI网站项目中。
好了,整个项目的解决方案就完成了。
本篇写的比较短,主要是因为才开始,大家见谅,以后的文章就不会这样了!
而且为了大家交流,已经创建企业项目开发团队,希望大家也以后会把有关企业开发的文章放入团队中,希望大家积极参加这个团队。而且我以后也会发表更多的项目示例,大家一起学习进步!