即使到目前为止,我对三层的理解也是模糊的,发表下自己的拙见,希望大家指正。
不是所有的程序都是适合使用三层的!
很多出循着都会存在这样的误区,我学了半天三层发现对于我所写的代码没有什么用,反而让代码更复杂,费时费力,所以,我在论坛上看到不少关于三层的评价是“取之无味,弃之可惜”、“用了一段时间,感觉特别麻烦,就不用了”。其实,这并不是三层的问题,而是程序本身的问题,说一个我们平时最常见的问题,来说一下三层。
这是一个饭店的系统,和三层有着异曲同工之妙,这张图在很多关于三层的学习中都存在,其实这个例子不仅能充分解释三层的关系,更能说明三层的使用范围,同样是为客户提供服务的,为什么不举路边的小吃摊那样的例子?因为它不符合三层的特点,对了,其实,我们平时所写的程序中,很多就是路边的小吃摊,服务员,厨师,采购员都是同一个人,所有也就无法分出表示层,业务逻辑层,数据访问层了,所以,三层一般都用于大型的项目,需要多人多组开发的,组与组之间互不影响。再说我们学三层的经历,其实我刚开始学也是这种感觉,感觉三层没什么用,其实,原因就在于,我提供的是路边的小吃,也就是,我所使用写三层的程序是很小的,但是,我却请了服务员给我卖,请了厨师专门做饭,请了采购员去采购,所以,本来是小本经营,一下子就赔了大本,但是,我们初学三层又不可能使用多么庞大的程序,所以,摆正心态很重要。毕竟,我们是初学者。
三层架构之间的影响问题。
这是我在一个论坛里看到的人们关于三层的一段对话。
其中一个人认为三层是鸡肋,另一个人认为三层是件非常好的东西,他们关于三层之间的改动问题的讨论。
以下是我理解的三层之间的修改关系。
首先,在开发中,如果不使用三层(当然,有时候不只是三层,可能是多层,这里以三层为例),而程序是几个人一起开发,那么他们这几个人之间的耦合性就会非常大,比如,其中一人有事,那么另外两个人就无法工作,或者,某一人只能另一个人完成时他才能工作的情况。而使用三层,开发人员的耦合度降低,不会因为一个人请假而另外两个人而无法工作的情况。
其次,是使用中,比如我们开发一个系统,所用的数据库是SQL SERVER2005,但是情况需要,另外一家公司也需要开发一个类似的系统,他们所使用的系统是ORACLE,那么,不使用三层的程序就需要改动大量的代码,而使用三层,只需要改动DLL就可以了,层与层之间是互不影响的。
还有,三层的解耦合让系统更安全,即表示层与数据访问层中间加了一个业务逻辑层,这样就使得用户无法直接访问数据访问层,使数据更安全,这也是分三层后层与层之间的影响减少的一个表现。
三层更容易使代码复用
因为三层之间的耦合性比较弱,所以,他们可以大大提高代码之间的复用,所以,从长远角度来看,虽然三层在写的过程中比不分层多花费时间,但是最终还是省时省力的。
其实,没有什么体系是万能的,主要是看适合和不适合,就像我们不可能让一个路边小吃去请服务员,厨师,采购员,更不可能让一个大型饭店一个人去承担服务,厨师,采购的职责,合适才是最关键的。