需要帮助了解MVC

时间:2013-04-24 19:25:03

标签: model-view-controller

据我了解,MVC是一种实现表示层与业务和数据层分离的方法。我理解正确吗?如果是这样,MVC应该将业务逻辑与表示完全分开,对吧?

所以对我来说,似乎javascript(或jquery)在某种程度上违反了MVC设计,因为它接管了客户端的一些逻辑,不是吗?模型=数据层,控制器=业务层,视图=表示层?我想我误解了整个概念。

4 个答案:

答案 0 :(得分:2)

你似乎对MVC有一个很好的理解。麻烦的是,您正在将两种不同的潜在MVC结构看作同一个。在服务器上,您可以拥有数据模型,控制器和视图。在客户端,您还可以拥有数据模型,控制器和视图。如果你想把你的客户端JavaScript视为MVC,那么jQuery只是一个视图控制器可以用来操作视图(DOM)的实用程序。

简单地说,客户端并不总是只有视图。例如,如果您使用Backbone等Web应用程序客户端框架,则可以在客户端使用模型,视图和控制器,这些模型,视图和控制器可以与服务器上的另一个SEPARATE MVC结构进行通信。

答案 1 :(得分:1)

您所描述的确实对许多实施提出了挑战。诸如ASP.NET MVC框架之类的框架已经尝试基于中间层中的业务逻辑(主要是表单字段的验证规则)将JavaScript自动呈现到UI。但是,他们距离拥有真正引人注目的JavaScript用户体验还有很长的路要走,这种体验不会重复逻辑。

就个人而言,我喜欢将JavaScript视为纯粹的UI问题。应用程序内部处理所有逻辑。作为UI的一部分,JavaScript可能会复制某些逻辑......但仅限于严格的UI用途。请记住,如果用户禁用了JavaScript,应用程序应该优雅地回归到仍处于工作状态。也就是说,它仍然应该使用服务器端(中间层)代码来完成工作。所有JavaScript都为UI层添加了更丰富的用户体验。

JavaScript也不是唯一的罪魁祸首。假设您的中间层有很多验证逻辑,用于定义对象的有效或无效内容。当您将这些对象持久化到数据库(就像UI一样位于应用程序的外围)时,该数据库是否也包含重复的验证逻辑?不可为空的字段等。

答案 2 :(得分:0)

  

恭喜!您对MVC的理解是完全错误的。它与n层架构无关(这似乎让你感到困惑)。

MVC的核心思想是separation of concerns。通过将应用程序划分为两个主要层来使用它:

  • 模型层:包含所有域业务逻辑和规则。
  • 表示层:处理用户界面
然后,演示文稿进一步分为控制器(用于处理用户输入)和视图(用于处理响应)。

当应用于Web应用程序时,您只能在服务器端具有MVC(或类似MVC)结构,或者对于更大和更复杂的应用程序,您有前端和后端的单独MVC三元组。

此外,在使用应用程序时,MVC的用户不是人类,而是浏览器。

在后一种情况下,后端就像前端应用程序的一个数据源。 MVC的整个前端部分是用javascript编写的。

  

P.S。如果您能够阅读PHP代码,您可以在this answer中找到关于模型层的非常简单的解释。是的。它是“简单版本”,因为MVC是一种在大型应用程序中强制执行结构的模式,而不是用于制作guesbook。

答案 3 :(得分:0)

您可以访问http://www.asp.net/mvc网站并参考教程/示例,了解使用Microsoft技术的MVC。

相关问题