不将MVC架构用于Web应用程序的原因

jay*_*won 15 model-view-controller n-tier-architecture

在过去,我主要使用N层架构构建了所有Web应用程序,实现了BLL和DAL层.最近,我开始做一些RoR开发以及研究ASP.NET MVC.

我理解不同架构之间的差异(正如其他一些SO帖子所引用的那样),但我无法想到为什么我不会选择MVC模型为新项目提出的任何理由.

当您的MVC架构不合适时,或者您选择BLL/DAL架构的原因有什么理由/时间吗?

Cla*_*edi 17

我不认为你的选择是相互排斥的.在为模型逻辑使用BLL/DAL时,您可以完美地使用MVC.

您可以根据需要实现MMVC 的一部分,对此没有限制.使用BLL和DAL将是一个有效的选项.

  • 这个答案+1.N-Tier是一种体系结构,MVC是一种设计模式 - 你可以将两者结合使用,没有真正的理由不在网页上使用MVC,因此寻找不使用它的理由是徒劳的. (5认同)

Al *_*l W 7

为了我?我不使用MVC的唯一原因是因为我正在处理的应用程序已经在Web表单中启动了.我不是废弃/重写的大力支持者,但我做的任何新事都是在MVC中.


Anu*_*rag 5

因素之一可能是 Web 应用程序的状态性。如果它是一个基本的 Web 应用程序,通过一些 JavaScript 挂钩(例如客户端验证)从服务器获取所有内容,那么 Rails 类型 MVC 真的很棒。我不熟悉 ASP.NET 上的 MVC,但我听说它与 Rails 中的类似。

如果 Web 应用程序确实是有状态的,那么更好的方法是拥有双 MVC 层 - 一个位于客户端,另一个用于服务器。服务器上的 MVC 主要关注身份验证、授权、以标准格式生成数据等。客户端 MVC 将关注 DOM 事件、用户操作、它们如何影响应用程序状态以及如何/何时应请求/发送数据到服务器。

MVC 只是组织代码的一种方式,就像 BLL 或 DAL 所做的那样。Rails 中的 MVC 基本上通过使用一组约定完全隐藏了 DAL。通常业务逻辑驻留在模型本身中。但是,如果您的应用程序需要更复杂的 BLL,其中对象交互可能会很复杂,那么 BLL 没有理由不能与 MVC 中的 M 和平共存。