0

对于即将到来的项目,我正在考虑将 MVP 作为 MVC 的一个选项。我非常熟悉并喜欢 MVC,我只是想看看我是否会使用 MVP 获得任何东西。

我收集到的关于 MVP 的信息是它使用了使用 ViewState 的 ASP.Net 视图引擎/MVC#(我不是特别喜欢)——向渲染的网页添加一堆额外的内容,而不是内置的路由功能(可以单独写入Global.asax)。

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

某些文章,例如这篇文章,似乎倾向于将 MVP 用于多个视图,但是鉴于带有 jQ​​uery Mobile 的 MVC3,可以使用此 MVC 完成一些奇妙的事情。

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

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

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

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

谢谢。

4

1 回答 1

1

您似乎在这里将模式与框架混淆了。

MVC 和 MVP 都是设计模式,另一方面,ASP.net MVC 和 MVC# 是实现 MVC/MVP 设计模式的框架。

关于 MVC 和 MVP 模式之间的区别,网络上有大量的混乱和大量相互矛盾的信息,事实上 Martin Fowler 是自从“退休”模式转而支持 2 个新模式之后让 MVP 流行的人。看这里

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

我一遍又一遍地看到的一件事是,在 MVP 中,视图负责创建演示者,但这不是原始设计的一部分。这似乎源于旧的 Web 框架(如 asp.net Webforms)是以页面为中心的。您无法更改此设置,因此创建演示者的是页面(视图)。基本上,该框架妨碍了该模式,因此对其进行了修改。不幸的是,这似乎已成为描述 MVP 的事实方式。

基本上我上面的文字墙是想说,如果你想正确地做 MVC,请使用专门设计的框架,ASP.net MVC 是一个不错的选择,它是 MS 堆栈的一部分,得到很好的支持(MVC# 还没有自 2008 年以来更新)如果您已经对此感到满意,那么尝试学习其他东西的生产力损失并不值得 imo

于 2012-02-20T15:12:23.460 回答