日期:2014-05-17  浏览次数:20699 次

关于 MVC和三层架构 讨论讨论
  首先说说MVC
  MVC 模型层-视图层-控制层  这种架构 实现了前端 后端以及控制层的分离。
优点:分出多层,降低耦合。实现复用。比如一个模型层可以设计多个视图层。

  三层架构
业务逻辑层  数据访问层   表现层

  也是划分出多层。但是将MVC中的模型层,也就是关于数据的逻辑处理划分为 数据访问层和业务逻辑层。当然,三层架构不是在MVC的基础上划出来的。
  相对于MVC,三层架构少了控制层,无法实现表现层和后端模型的灵活控制。相对于三层架构,MVC少了对模型层的进一步划分。业务逻辑层和数据访问层放在在一起。
  所以二者首先是不同的,并且都不是完善的。二者结合起来最终由控制层,业务逻辑层,数据访问层,表现层四层。

  可以这样理解。MVC解决了前端和后端的控制,在前端,控制,和后端这块降低了耦合度。视图可灵活匹配模型。但是没有将后端的业务逻辑层和数据访问层进行解耦。
三层架构解决了数据访问层,业务逻辑层,表现层的分离。那么这样够了吗?表现层如何和后端进行匹配的呢?(问题1

  如果说三层架构没有解决前端和后端的控制,那么前后端代码还是存在耦合的。虽然理论上有表现层。但是这个表现层可能不够独立。会和后端代码耦合。
  综上,结合MVC的前后端解耦。加上三层架构的后端数据访问层和业务逻辑层的分离。组合出来的是二者优点结合的。
表现层+控制层+业务层+数据访问层  这样四层的结构。这样充分二者的优点!

   我的实践经验不多,完全属于个人推理。欢迎各种拍砖,相互提高!谢谢!!最好是有实际经验的帮助深入分析下!!谢谢!!

------解决方案--------------------
按照你的思路去做是完全可以的。

MVC是比较经典的,按你说的,就是把MVC中的M分成业务逻辑和持久层(也就是你说的数据访问层),这样也完全是符合MVC结构的。

我还是第一次听说什么三层架构。表示怀疑
------解决方案--------------------
例 在java web开发中 m(模型)可以用javabean来实现 v(视图)可以由jsp来实现 c(控制)可以有servlet来实现,三者有机结合就形成了经典的mvc三层架构模型
------解决方案--------------------
MVC跟三层结构,我觉得是两种不同的说法,基于的也不是很相同。

MVC强调的是工程整体,模型-视图-控制

三层,我觉得是控制层,业务逻辑层和数据访问层,这是基于后端处理的一个层次结构,是为了让业务控制更加清晰,而出现的这种层次结构。因为如果把很多都写在一起,导致了代码冗余很多,为了很好的维护和代码重用,将一些东西提出放到不同的层次上。这样显得更加清晰。

所以对于三层结构来说,并不是一个很清晰的界限。

以上均是个人观点,我也没有多少经验~~相互交流。
------解决方案--------------------
很多年前java web开发  jsp + javabean
后来出现了 jsp + servlet + javabean 
再后来大伙都用  jsp/freemarker + struts-action + spring-service +dao 
分层一直在变,mvc的概念是否也可以做些调整呢