求解:ASP.NET中的添加引用到底是一个什么样的事情
在我们提高班,到现在为止机房收费系统是每个人的必做项目,而且不止一遍。但是每一遍有每一遍的意义。
第一遍,我们用的VB6.0,当看到这个系统是自己一行一行敲出来的时候,心里有种不敢相信的感觉,所以我们
建立了兴趣,建立了信心,只要坚持,我们一定能够成功。
第二遍,用VB.NET,这一次就说不好要重做几次了。我们学习了分层,所以在这要体验分层带来的好处,分层
带来的纠结,分层分了半年多了,却发现分的还是不好。
第三遍,是基于第二遍的,因为这次,要体验合作开发的快乐。
经过上次老师讲解,在讲完的当时,我发现,原来是这个样子啊。但是好奇心让我,不得不想着去做两个Demo
来验证一下。
首先,说一下这个系统的样子,系统采取经典三层架构,然后添加了外观模式来对功能进行模块的划分,还用了
抽象工厂加反射来实现数据库的更换方便。下图是架构图。

此架构通过抽象工厂加反射使得工厂和DAL层没有依赖的关系,所以在生成的过程中,DAL层的DLL是不会生成
到其他层里面的bin的Debug下面的,也就使得如果不对DAL层进行那么一点点处理,那么是会报错的,为什么报错自
己研究。
我用了两种方法,一种是在UI层添加了对DAL层的引用(是万万不可取的,因为在架构图上,是没有任何层对DAL
层进行了依赖。第二种就是讲DAL的生成路径改成了UI下的bin的Debug。
对于第一种,因为违反了架构图,所以做法不可取,但是,是不是我在UI层添加了对DAL层的引用,那么编写好
的程序打包后DAL不是仅仅打包成一个.dll文件,而是将DAL.dll文件打包到UI中了,那么在更换了DAL.dll后,程序就
无法运行。按照上面的架构来说,就是说BLL中原来的登陆检查是只检查是否已登陆,那么我现在讲BLL中的登陆方
法体改成先检查是否存在此账号,然后再检查是否已经登陆,然后将生成好的dll替换原来的,那么程序依然只是还执
行只检查是否已登陆。
我后来做了个实验,下面我用一个比较简单的实验来澄清这个事情。
首先我们建一个经典的三层架构吧,下面是架构以及引用关系:



每层中的代码如下:
UI
现在,三层是顺序依赖的,如果按照老师说的,那么如果我如果只使得DAL层的接口保持一致,而DAL层中的代码发生变化,那么程序将无法执行,可是事实是,我新建了一个解决方案,然后重新写了DAL,然后对DAL进行替换,下面是新DAL层中的代码
然后生成,进行替换,运行结果如下:
所以,通过此实验,发现如果在UI层对DAL层进行了添加引用。所以我感觉引用只是把dll复制到了自己目录下的bin/Debug下,之所以不能再UI层添加DAL层的引用,是因为违反了架构,所以需要做的是该生成路径。
但是引用到底还包含哪些呢?求大虾们赐教。
- 5楼tcl_6666前天 11:49
- 自己下去实践了,很大的优点
- 4楼liusong06053天前 14:52
- 嗯,结果是这样。n我觉得咱理解错了
- 3楼xhf555553天前 14:45
- 变量的思想
- 2楼lfmilaoshi3天前 07:58
- 还是没看懂。。。米老师
- 1楼zllaptx48693天前 00:06
- 内行看门道,外行看热闹~~~我暂时的来看热闹来了!!!!哈哈哈哈

