首先,我阐述一下众所周知的概念,MVC指Model、View和Controler,三层指UI层(或View层)、BL层和DA层。
共同点:两者都有三个要素,都有一个View,而且在常见的三层中也另有一个Model类库。
不同点:三层是架构,MVC是开发模式。这么说可能大家依然不明白,还是打个比方吧,就像盖房子,要先确定盖几层,这就是架构,而每一层究竟是使用单跨梁还是多跨梁,这就是模式。
架构是基础性的,领统性的,确定后不可以随便修改,否则就像三层的地基上盖四层,很容易出问题;
模式是指导性的,可在实施过程中根据实际情况做可控调整,比如原计划每一层都用多跨梁,实施时发现第三层用单跨梁也能够满足需求,经报批同意后, 完全可以按照新方案进行。
由于ASP.NET的MVC例子将整个解决方案都是用MVC来实现,导致一些人认为项目要么使用MVC,要么使用N层,其实,二者不应该那么对立,因为这样做,导致MVC的Model太过庞大不易管理,我们完全可以在MVC中把Model进行细分,比如分成UI逻辑层(负责数据验证和键盘鼠标的输入输出管理)、业务逻辑层(负责业务数据的组织和加工)、数据持久层。反过来说,我们完全可以把三层的UI层和BL层按照MVC模式来实现。
注:以上看法是本人的一家之言,目的是欢迎大家讨论和指正,诚表谢意!