Asp.net mvc 3 针对web和移动设备的MVP与MVC设计模式?

Asp.net mvc 3 针对web和移动设备的MVP与MVC设计模式?,asp.net-mvc-3,asp.net-4.0,mvp,webformsmvp,Asp.net Mvc 3,Asp.net 4.0,Mvp,Webformsmvp,对于一个即将到来的项目,我将MVP作为MVC的一种选择。我对MVC非常熟悉,也非常喜欢,我只是想看看使用MVP是否会有所收获 我对MVP的了解是,它使用ASP.Net view engine/MVC#(我并不特别喜欢),它使用ViewState——向呈现的网页添加大量额外内容,而不是内置路由功能(可以单独写入Global.asax) 另一方面,MVC/Razor呈现非常干净的HTML 某些文章,例如,似乎倾向于在多视图中使用MVP,但是鉴于jQueryMobile的MVC3,使用这个MVC可以完

对于一个即将到来的项目,我将MVP作为MVC的一种选择。我对MVC非常熟悉,也非常喜欢,我只是想看看使用MVP是否会有所收获

我对MVP的了解是,它使用ASP.Net view engine/MVC#(我并不特别喜欢),它使用ViewState——向呈现的网页添加大量额外内容,而不是内置路由功能(可以单独写入Global.asax)

另一方面,MVC/Razor呈现非常干净的HTML

某些文章,例如,似乎倾向于在多视图中使用MVP,但是鉴于jQueryMobile的MVC3,使用这个MVC可以完成一些奇妙的事情

这些与MVP当前可用的相比如何?与MVC相比,使用MVP有哪些优点/缺点或潜在的缺陷

我还考虑使用现有的MVP应用程序来加快开发时间

我知道您会对以下内容感到畏缩,但会寻找选择: 虽然此应用程序提供了所有必需的功能,但如果实现此解决方案,那么要与其他MVC应用程序结合起来有多困难(我知道这看起来很难看)?如果这是我们必须考虑的事情(两者结合),最好将应用程序封装在MVC(路由)中,并将MVP应用程序包含在内部吗?

这样做的原因是一个交错的特性更新过程,其中要求实现一个新特性(使用MVC框架构建;系统的其余部分不是)。未来的计划是将当前框架完全更改为MVC或MVP


谢谢。

您似乎把模式和框架混淆了

MVC和MVP都是设计模式,而ASP.net MVC和MVC#则是实现MVC/MVP设计模式的框架

关于MVC和MVP模式之间的区别,网络上存在着大量的混乱和许多相互矛盾的信息,事实上,马丁·福勒(Martin Fowler)自从“退休”MVP模式,转而支持两种新模式后,使MVP流行起来。看

这两种模式都有助于分离关注点,这是肯定的,但除了它们之间没有太大区别之外,我发现的唯一一件事是,MVC在屏幕上每个小部件都有一个控制器,而MVP是每个屏幕一个控制器,尽管如果屏幕很复杂,甚至违反了这个规则。我仍然不确定,我自己也可以互换使用这些术语

我反复看到的一件事是,在MVP中,视图负责创建演示者,但这不是原始设计的一部分。这似乎是因为旧的web框架(如asp.net webforms)是以页面为中心的。您无法更改此设置,因此创建演示者的是页面(视图)。基本上,框架阻碍了模式的发展,因此有人对其进行了修改。不幸的是,这似乎已经成为描述MVP的实际方式

基本上,我上面的文章是想说,如果你想正确地使用一个设计好的框架来实现MVC,ASP.net MVC是一个不错的选择,它是MS堆栈的一部分,支持良好(MVC从2008年起就没有更新过)如果你已经对它感到满意,那么在我看来,尝试学习其他东西的效率损失是不值得的