前言:
接着上篇博客说:MVC和三层架构到底是怎么样的一个关系?相同?或是迥异?或是部分相同,部分不同?或是思想同,逻辑不同?这是个值得思考的问题。关于三层架构大家应该差不多都有些了解,那么在本文中将侧重于MVC的学习。
正文:
关于MVC与三层架构的关系,这两个的关系还真不好说,因为它们的关系是动态的,相对的,取决于整个项目的框架。那么本文论述两种情况下的MVC与三层架构的关系
情况一、只有MVC框架的项目和不含有MVC框架的三层架构项目
那么这个时候他们之间的关系就有异同点了:
相同:的是都分为三层,都能形成从用户到数据库的闭合回路。
不同点:
1、划分层次不同
三层:分为表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)
MVC:即模型(Model)、视图(View)、控制(Controller)
它们之间并没有什么对应关系,但如果非要对应的话,可以看下下图中的关系
2、三层中的Model与MVC中的Model
首先解释下MVC,关于V和C分别代表什么,作用是什么,之前的博客都详细描述过,那在这里就不作解释了,在这三个里,最不容易理解的是Model,就什么是Model?跟三层架构中的实体层是同样的功能吗?很多人可能会把MVC中的Model层误认为三层架构中的实体类。其实在MVC架构中Model层有比实体类更丰富的定义和作用,在MVC框架中Model层的作用既有真正的逻辑事物,数据访问,甚至算法都放在Model去,这和实体类完全是两回事。“三层”中典型的Model层是已实体类构成的,而MVC中的model,则是由业务逻辑与访问数据组成的。不一样的概念。虽然名字一样。
再说三层架构,三层其实很好理解,界面,业务,数据访问,就这三个,从字面都可以理解出它们的意思。我要说的是它和MVC的区别。在三层架构中没有定义Controler的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。
情况二、既含有MVC框架也含有三层架构的项目
在这种框架下,MVC和三层架构的关系就变得非常显而易见了。
三层架构中,DAL(数据访问层)、BLL(业务逻辑层)、WEB层各司其职,意在职责分离。MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的WEB层,也就是说,MVC把三层架构中的WEB层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。三层和MVC的组合解决了Model与数据库耦合性太强的问题。
小结:
由于学习是一个逐步深入的过程,现在还未到深刻理解的程度,本文仅是记录这个学习认知的过程,这些也都是小编在不断学习和思考中得到的暂时的结论。希望和大家一同交流,随着时间的推移,自己的认识也在不断的刷新,期待各位大神斧正!学到这里关于【Asp.Net MVC+EF+三层架构】中MVC部分的理论学习就已经完成了,接下来就是MVC的实际操练的环节,小编将会在下篇博客中讲述,敬请关注❀❀❀❀