三层架构到底怎么玩?
刚刚参加工作半年,虚心向前辈们学习!长话短说,在玩三层之前,身在小公司,做的项目基本都是一个人从头做到尾,在设计思想及架构上也只算是一层架构,也就是在aspx.cs文件中直接写数据访问及业务代码,唯一的封装只有一些常用数据库操作及工具类。自己知道,这样的东西基本拿不上台面,好吧,来学三层,研究了一阵,到头来还是一头雾(当然也有一些心得)。虽然也能写出三层的程序来,但也只是为了做出三层而写三层。也许是自己笨,也许是以前的那种写法成了习惯,对三层的理解上老是转不过弯。无奈,来请教了…
我想问的是(为了使问题更明确,我也列出我自己肤浅的理解):
1.
三层到底怎么体现他的好处?
(都说三层好,易维护,易扩展,代码复用性好,高内聚,低耦合!可到底具体怎么体现出这些好处那?就我所知,三层就是让各层分离开来,更关注自己要做的事,但也同时对程序员面向对象思想的要求较高,更增加了代码的编写成本,为了就是易于以后维护和扩展。那好,既然针对维护和扩展,基本上就是应对bug及客户的需求更改,面对这些我基本是从页面入手,然后查看对应代码去修改。如果是一层,我可以马上看到这段业务代码,直接修改就行了,而如果是三层,UI层就只有其他层的方法调用,我要修改就得去BLL、DAL或许还有其他层飞来飞去,尤其是BLL层,我总觉得有点”脱裤子放屁”的感觉,真够麻烦!难道就是为了重新编译的时候不用整个项目编译?我希望有真正理解的兄弟帮我解开这个结,越具体越通俗越好。比如我们做各层的时候都是在一个解决方案中每层建一个项目而不是都建在一个项目中,就是为了可以单独重新编译一层吗?比如webForm项目,重新编译了BLL层是将得到的dll文件重新覆盖到bin文件夹中这样实现修改吗?我直接用 UI层访问DAL层,不用BLL层不行吗?…)
2.
三层到底什么时候应该用?有没有不该用的时候?
(有人说,需要数据库访问的时候就用三层,或者说业务逻辑比较复杂的时候使用,再或者说客户需求更改会比较频繁的时候使用。当然我也理解,用三层就是为了它带来的好处和优点。但我想,现在公司里做的项目都还算较复杂,就我感觉,是项目就得用三层。那是不是只要是项目就应该用三层呢?)
我知道网上对三层的介绍资料有很多,我也看了一些,但大多都是比较笼统,概念性的东西。对于我这种新手来说,还是愿意面对比较实际比较通俗的答案。希望有前辈能帮我以及和我有同样困惑的新手,怎样从一层进入三层的世界,踏出三层这一步!