什么是MVC的替代品?

时间:2009-04-17 07:04:27

标签: model-view-controller language-agnostic design-patterns architecture

似乎我正在使用的每个项目都使用模型视图控制器架构,这就是我如何滚动自己的项目。还有其他选择吗?如何创建具有持久存储和用户界面的应用程序?

7 个答案:

答案 0 :(得分:8)

MVC已经存在了一段时间。这是经过时间考验并证明pattern。许多框架都使用MVC Pattern。 Martin Fowler将MVC解构为Supervising PresenterPassive View

建筑师Christopher Alexander说得最好:

  

每种模式都描述了一个问题   我们一遍又一遍地发生   然后描述环境   解决这个问题的核心,   以这种方式你可以使用它   解决方案一百万次,没有   两次以同样的方式做事。

我不确定你为什么要离开MVC。你遇到的问题是MVC没有雄辩解决吗?要为您提供更好的答案,我们需要了解有关问题域的更多信息。

在考虑模式/架构时需要考虑的事项:如果您正在构建具有Myspace类型架构的东西,则需要一个健壮的架构(MVC)。如果你是通过网络创建一个简单的crud界面 - 几乎任何事情都可以。

对于.Net Web表单(我假设网络,因为你没有说厚或网络客户端)不是MVC,这是一个维护它们的噩梦。生活在几年之后的Web窗体应用程序往往会成为big balls of mud。即使这样,开发人员也发现了使用MVC with web forms的方法。

具有讽刺意味的是,ASP.NET网络表单中缺乏MVC架构是导致ASP.Net MVC framework发展的主要原因之一。

根据经验,如果您不使用某种MVCesk方法,您的解决方案将变得难以维护和膨胀。这些应用程序将死于缓慢的痛苦。

如果您的解决方案是小型一次性项目,那么无论如何都要把它们放在一起。哎呀,有些工具可以生成从屏幕到数据访问层的所有内容。无论做什么都可以完成工作。

答案 1 :(得分:6)

使用VB6和Delphi等工具构建的经典CRUD应用程序具有用户界面,持久存储并且不使用MVC。他们中的大多数使用直接链接到数据库字段的数据感知控件

答案 2 :(得分:4)

比较各种可能有用的MV *模式的链接:WPF patterns : MVC, MVP or MVVM or…?& MVC, MVP and MVVM

答案 3 :(得分:3)

查看MVP模型视图演示者。

答案 4 :(得分:0)

用户界面是View,应用程序将始终具有模型,两者之间的桥梁是Controller。整个MVC并不特别,因为事情将永远如此。

最多你可以摆脱控制器,让你的视图与你的模型对话,但你失去了灵活性。

答案 5 :(得分:0)

我开发了ASP.NET MVC的替代品。您可以获得相同的松散耦合和关注点分离,但区别在于您如何构建项目。

我的博客上有几个视频,框架的源代码,示例项目和一些VS.NET插件(New Project项目,New Builder和New View)。

Builder for ASP.NET

一些关键的差异化功能是 1.模板只是html - 没有与模板混合的代码 2.因此,模板可以跨视图重复使用,网站设计人员可以在他们选择的设计工具中设计模板 3.强类型代码(没有ViewData和东西),所以你得到了intillisense,编译时间检查,F12导航等。 4.您将页面构建为视图的组合而不是从内到外的方法 5.视图可以视为“真实”类。 6.一切都得到了遵守,因此没有运行时编译

还有其他一些差别因素。

答案 6 :(得分:0)

理论上:

MVC是一种经过验证的技术和yada-yada-yada,它是网站的理想选择。

但在一个真实案例中:

使用MVC的一个严肃的项目需要一个框架,因此您遵循一个框架,其中包含所有限制和限制。所以,在这一点上,MVC的具体实现是规则而不是简单的“指南”。

当网站即将连接到模型而不是简单的POST / GET时,MVC也会失败,它失败了xml异步并且它失败了ajax。 (*)

(*)存在一些补丁,但设计必须清晰且功能齐全,如果你需要“补丁”,那么它既不清晰也不实用。

我个人认为MVC的主要问题是它在Controller中投入了大量精力,大多数项目使用的控制器部分不超过5行。

ps:大多数“做得好”的MVC项目都是3层项目。

ps2:MVC排除某些框架,只是一个嗡嗡声,不是一个严重的术语,它在“mvc的解释”组中反映出来。