Model view controller 什么';什么是MVC的替代方案?

Model view controller 什么';什么是MVC的替代方案?,model-view-controller,language-agnostic,design-patterns,architecture,Model View Controller,Language Agnostic,Design Patterns,Architecture,似乎我参与的每个项目都使用模型-视图-控制器体系结构,这就是我如何滚动自己的项目。还有别的选择吗?否则如何创建具有持久存储和用户界面的应用程序?使用VB6和Delphi等工具构建的经典CRUD应用程序具有用户界面、持久存储,而不使用MVC。大多数应用程序使用直接链接到数据库字段的数据感知控件用户界面是视图,应用程序总是有一个模型,两者之间的桥梁是控制器。整个MVC没有什么特别之处,因为事情总是这样 最多您可以摆脱控制器,让视图与模型对话,但您失去了灵活性。查看MVP模型视图演示器 已经有一段时间

似乎我参与的每个项目都使用模型-视图-控制器体系结构,这就是我如何滚动自己的项目。还有别的选择吗?否则如何创建具有持久存储和用户界面的应用程序?

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

用户界面是视图,应用程序总是有一个模型,两者之间的桥梁是控制器。整个MVC没有什么特别之处,因为事情总是这样


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

查看MVP模型视图演示器

已经有一段时间了。这是一个经过时间考验和证明的过程。许多框架都利用了这一点。马丁·福勒将MVC分解为:和

建筑师说得最好:

每个模式都描述了一个 在我们的生活中反复发生 环境,然后描述 这个问题解决方案的核心, 这样你就可以用这个了 解决方案超过一百万次,没有 曾经用同样的方法做过两次

我不知道你为什么想离开MVC。您是否遇到了MVC无法雄辩地解决的问题?为了给你一个更好的答案,我们需要更多地了解你的问题领域

考虑模式/体系结构时要考虑的事项:如果您正在使用类型体系结构构建某些东西,那么您将需要一个健壮的体系结构(MVC)。如果你正在通过网络创建一个简单的crud界面,几乎任何东西都可以

对于不是MVC的.NETWeb表单(我假设是Web表单,因为您没有说胖表单或Web客户端),维护它们是一场噩梦。寿命超过几年的Web表单应用程序往往会变得更加复杂。即使在那时,开发人员也发现了使用的方法

具有讽刺意味的是,ASP.NET web表单中缺少MVC体系结构是导致开发的主要原因之一

根据经验,如果您不使用一些MVCesk方法,您的解决方案将变得难以维护和臃肿。这些应用程序将缓慢而痛苦地消亡


如果您的解决方案是一次性的小项目,那么您的解决方案一定会把一些东西放在一起。有一些工具可以生成从屏幕到数据访问层的所有内容。无论什么都可以完成任务。

两个链接比较了各种可能有用的MV*模式:&

我已经开发了ASP.NET MVC的替代方案。您获得了相同的松散耦合和关注点分离,但不同之处在于如何构建项目

我的博客上有一些视频,框架的源代码,一个示例项目和一些VS.NET插件(新项目项,新构建器和新视图)

一些关键的区别功能包括 1.模板只是html-没有与模板混合的代码 2.因此,模板可以跨视图重用,网站设计者可以在他们选择的设计工具中设计模板 3.强类型代码(没有ViewData和其他东西),所以您可以使用intillisense、编译时检查、F12导航等。 4.您可以将页面构建为视图的组合,而不是由内而外的方法 5.视图可以被视为“真实”类。 6.所有内容都已编译,因此没有运行时编译

还有许多其他的区别因素。

理论上:

MVC是一种经过验证的技术,非常适用于网站

但在实际案例中:

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

对于网站来说,当MVC即将连接到除简单POST/GET之外的其他模型时,MVC也会失败,因为xml异步和ajax都会失败。(*)

(*)存在一些补丁,但设计必须清晰且功能性强,如果需要“修补”,则既不清晰也不实用

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

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


ps2:MVC不包括一些框架,只是一个流行术语,不是一个严肃的术语,它反映在“MVC的解释”组中你可以在这里读到一些文章:[[cs]:重复的?