ASP.NET MVP与ASP.NET MVC

时间:2010-12-07 15:21:13

标签: asp.net asp.net-mvc sharepoint sharepoint-2010 mvp

我的公司正在努力做出有关如何追求未来发展的明智决定。

我们似乎已将未来的内部和外部应用程序缩小为Web应用程序。但是从那时起我们仍然有点困惑。

这里有大量的Sharepoint支持。据我了解,Sharepoint基本上是使用MVP的ASP.NET。

其他人希望使用更新的MVC风格来使用普通的ASP.NET。

我也被告知,这些并不容易在一起发挥。

看起来像Sharepoint(和ASP.NET MVP)将成为赢家。在我们走向那个方向之前,我想问:

  

如果我们选择将我们未来5到10年的开发工作基于Sharepoint(即ASP.NET和MVP),我们放弃了什么?这是一个大问题,还是只是一些我们正在失去的“好东西”。

(现在要让管理层改变方向,这将是一件相当大的事情。)

5 个答案:

答案 0 :(得分:11)

无论发生什么,WebForms在某些时候都会变成一个丑陋的混乱。如果你必须使用webforms,不要使用回发和页面lifycycle模型 - 让aspx页面带有获取请求的演示者,并且每个帖子都有一个处理程序或空的aspx。它会像MVC那样感觉更像

答案 1 :(得分:9)

我会说你选择的内容在很大程度上取决于你的开发者是谁,以及你打算建立什么样的应用程序。

如果你构建了很多类似crud的应用程序,它们大量使用第三方(或你自己的)自定义控件,那么继续使用Webforms可能是一个好主意。

如果您构建具有大量客户端功能的“web”风格的应用程序,那么MVC是一个更好的选择。

如果你有很多新手开发者,Webforms可能会更好。如果你有更多经验丰富的开发人员,即使他们是asp.net的新手,那么MVC可能是更好的选择。

如果要构建具有复杂互连的非常以数据为中心的应用程序,那么MVC可能是更好的选择。

有很多理由可以选择其中一种,而且它总是“它取决于......”。

此外,MVC和Webforms并非完全不兼容。您不能在同一页面中使用它们,但可以在同一站点中使用它们。此外,就像上面的评论所说,Sharepoint本身不是Webforms或MVP ..它是基于webforms的自己的东西。它非常“面向Web部署”,这只是一种说明你构建大量自定义控件的方式。

答案 2 :(得分:2)

无论你使用MVVM,MVC还是MVP,无论你使用MVVM,MVC还是MVP,我一直都是关注Separation of Concern(SOC)的强力支持者。由于这完全特定于ASP.NET,我会说你应该使用MVC3。

我多年来一直是.NET开发人员,并编写了构建在StructureMap之上的MVP模式(在我的博客上有很多关于它的内容),有一段时间我从来没有看到处理相关更改的好处。让webforms转到MVC。然而,在处理ASP.NET这么长时间之后,我刚刚使用ASP.NET webforms错误,这完全不受我的控制。

Webform的主要错误发生在ViewState超时导致通用加密异常的情况下,第二个是ViewState被客户端或帖子截断的地方,导致合法的加密错误。对于MVC,这些错误不再适用。使用.NET4,我试图在没有ViewState的情况下创建一个webforms应用程序,它们在.NET4中添加了新功能,并且完全无法通过webforms时间过去的决定来巩固。

在MVC,MVC2和MVC3中,MVC3和Razor视图引擎附带的功能集是最强大的。您可以获得MVC2带来的所有增强功能以​​及Razor视图引擎可以创建的更清晰的视图,最重要的是您可以获得全局操作过滤器和烘焙的jQuery客户端模板(我90%肯定)。

我也会像MVVM一样接近MVC,在那里我将拥有3组不同的实体,我的视图模型,我的域实体和我的物理数据库模型。 (最后一组可能是,或者可能不是域实体,我已经开始意识到尝试使您的纯域实体与数据库层一起工作在高级阶段可能不是最理想的)

答案 3 :(得分:2)

如果您正在执行页面回发以处理事件,我建议使用MVP,因为Presenter将包含所有版本视图的事件处理程序(不同的用户界面,如网页,iPhone,Android,Windows表单),具有统一的行为。换句话说,您不需要为每个视图在代码隐藏中编写控制事件。至少,他们只会调用Presenter的事件处理程序方法或引发Presenter处理的事件。

如果您正在创建Web应用程序并大量使用Ajax进行页面更新,使用一个或多个Web视图和跨浏览器的JavaScript库(例如jQuery),我建议使用MVC。

因此,它归结为您希望如何处理页面事件。 MVP& MVC都有关注点分离。 MVP更基于服务器,更容易添加多个UI,MVC更基于客户端,用于事件处理和更多以Web为中心。

答案 4 :(得分:0)

根据我的经验,强大的MVP模式对于以数据为中心的复杂LOB应用程序来说要好得多。

MVP提供更大的分离,因为您的演示者不了解以网络为中心的概念。 代码覆盖率也会增加,因为视图中没有条件代码。 我们有几个应用程序,在网络和Windows应用程序之间使用演示者。 您是主持人对视图的完整抽象的参考,asp.net MVC依赖于视图依赖的抽象(HttpContextBase等)

所有人都说你需要将它设计成网络表单,它不是开箱即用的,但是如果你第一次就做到这一点并让开发人员理解它并坚持下去,你就会得到一个非常干净的解决方案。

有一些可靠的框架可以支持webforms中的MVP:

http://www.codeguru.com/csharp/.net/net_general/patterns/article.php/c15173

webformsmvp dot com。