6

请注意,我不是问选择哪一个(MVC 或 MVP),而是问是否应该将两者之一用于 Web 应用程序。

我意识到将旧应用程序从其当前设计转换为 MVC 或 MVP 模式可能需要做太多工作。但是,对于新应用程序呢?看起来这些是最流行的架构模式,那么应该选择其中一种吗?如果不是,还有哪些其他模式?

如果您不熟悉 MVC 和/或 MVP,一个很好的问题是“什么是 MVP 和 MVC,有什么区别?” . 它有很多很好的答案,包括指向各个网站的链接,这些网站会分解每个网站。

4

8 回答 8

3

MVP / MVC 在 Web 应用程序中运行良好,因为 HTTP 动词 + URL 组合是确定要采取的操作的非常好的方法。有理由不使用它,例如如果您的团队对另一个框架有很多经验,但我通常会推荐 MVP / MVC 框架。您的申请将以更高的质量更快地完成。

于 2008-10-08T11:46:07.353 回答
2

两者都是不错的选择。

我会选择 MVC,因为它有更广泛的采用,并且更容易被前端(HTML / CSS)开发人员理解和使用。

此外,考虑到采用 MVC 模式的框架的数量,chanches 正在与您在 MVC 中的同事交谈,您将谈论一种众所周知的语言。

于 2008-10-08T11:20:13.647 回答
2

我已经为另一个问题发布了以下答案,尽管在这里可能更合适。

MVC适用于普通的服务器端脚本。在 MVC 中,开发人员总是尽量保持控制器非常精简。控制器主要用于选择合适的模型并反映在视图上。但是在当今的 Web 应用程序中,视图部分已经发生了根本性的变化,变得复杂到足以产生一个又大又胖又凌乱的控制器。所以现在我们需要一个新的地方来放置用户界面的复杂控制逻辑。这里MVP的P进来了,即 Presenter。因此演示者负责控制特定用户界面组件的逻辑。不用担心控制器还在这里,命名为Application Controller。它最终负责在相对较大的应用程序组件之间进行切换。所以MVP也可以说是MVPC(!!)。顺便说一句,这是我理解 MVP 的方式,显然不是任何基本规则。

所以我已经倾向于复杂网络应用程序的MVP

于 2012-04-09T03:07:20.083 回答
1

您的问题是“我应该使用其中一种设计模式”。

我不得不说这真的取决于你的项目范围。对于一个非常大的项目,该项目与预算庞大的大型组织中的其他系统相互依赖,我认为它们绝对值得考虑。

我认为这些模式经常在较小的项目中被过度使用,它们可能会增加不必要的复杂性和成本。

松耦合的主要目的是让您可以在以后更改数据库或 UI,或重用业务逻辑。很多时候,这永远不会发生。您必须意识到,这两种模式中的任何一种都将花费更长的时间来实现并使代码变得相当复杂。因此,我强烈建议认真考虑一下并权衡您的选择。通过使用可以完成工作并降低复杂性的非常简单的架构,您通常可以更快地交付更好的解决方案!

于 2009-02-10T17:46:34.770 回答
0

这取决于您使用的框架。只需使用它支持的东西。我见过的大多数 Web 框架都使用前端控制器模式并将其称为 MVC 或 MVP。

于 2008-10-08T11:21:13.597 回答
0

我认为你应该这样做。它们更难实现,尤其是在 MS 世界中,因为它们竭尽全力推动 Web 表单并使构建 Web 应用程序更容易。
使用它们,您可以直接进行编程,并且感觉自己已经完成了很多工作。但是在您的网站变大后,它们会变得更慢且更难维护。
使用 MVC 和 MVP 允许您分离模型(代表您正在使用的域的基本类)、控制器和视图。最好的一点是您可以在其他应用程序(如移动应用程序或 Windows 应用程序)中重用您的模型。然后它们有更多的共同点,而不仅仅是一个数据库,因此您必须编写更少的代码。你只需要编写控制器和视图。
我对此并不陌生,但我看到了好处,因为当我不得不在一个地方更改某些东西时,其他地方的其他东西就会崩溃(因此您还必须考虑松散耦合并编写单元测试)。在 Web 表单中编写测试是不可能的。

但是,如果您正在构建代表个人或公司的应用程序,而 Web 上没有业务逻辑,并且您必须快速完成,那么 Web 表单就适合它。并且还用于构建原型,以便您可以展示完成后应用程序能够执行的操作。

于 2009-01-25T13:56:22.913 回答
-1

我喜欢这两种模式。我的最佳做法是选择一种模式,这总是比没有模式更好。

我已经在这两种模式上开发了很多应用程序,我个人的感觉是,当你是一名 RAD 开发人员并且你对 CSS 和 javascript 不太擅长时(大多数是想要创建 webapp 的 winforms 开发人员,没有冒犯 ;-) )你应该使用 MVP 模式,因为这很容易与 Web 应用程序项目一起使用。

但是,当您知道分配 CSS 和 javascript 时,您应该考虑 ASP.NET MVC 模式。

于 2009-02-27T13:52:40.933 回答
-2

我更喜欢 MVC 模式,只是因为松耦合。模型、视图和控制器之间有明显的分离,通过这种分离,它更适合测试驱动开发或单元测试。

于 2009-01-25T14:04:10.760 回答