我应该在ASP.NET MVC中构建我的下一个Web应用程序吗?

9
我的团队正在考虑使用ASP.NET MVC框架构建我们的下一个Web应用程序。我有些犹豫,还有其他人也是,因为它仍然只是测试版。我真的想尝试一下,因为它似乎是提供清晰的关注点分离和改善可测试性的好方法。
我应该在MVC仍处于测试版阶段时就开始使用呢,还是等到发布候选版本再开始使用?
从一些回复中,我认为我需要稍微澄清一下我的问题。我的主要担忧是是否选择一个仍处于测试版的产品,而不是WebForms vs. MVC。这个担忧主要是因为担心我们会在测试版中使用一些功能,但最终版本中这些功能可能会被更改/弃用/不支持。
但是,我确实欣赏WebForms vs. MVC的观点。它只是没有涉及到我问题的核心。
7个回答

17

这其实是一个相当简单的决策树。

如果你:

  • 非常在意URL
  • 非常在意HTML
  • 想要真正的关注点分离
  • 希望全方位地可测试性
  • 希望拥有视图引擎的灵活性(ASPX,NVelocity,NHaml等)

那就选择ASP.NET MVC。

如果你:

  • 享受WebForms(ViewState)的有状态抽象
  • 不介意PostBack模型
  • 更喜欢可以“拖放”在页面上的组件

那就选择WebForms。

对我来说,答案99%是ASP.NET MVC,因为我认为它更适合Web。 我认为Ajax的情况也更清晰,而且我完全掌控我的HTML和URL。 除此之外,我还可以轻松地测试驱动我的网站(控制器)。

是的,我知道你可以通过WebForms实现清晰的URL,并且可以通过控件适配器获得更清晰的HTML,在WebForms中使用MVP模式可以实现一定程度的可测试性,但这些都是非常特殊的方法。 在ASP.NET MVC中,这些都是核心。 这就是你这样做的方式。

不用担心预览/测试版状态。团队一直坚持认为,您不需要go-live许可证来部署它(尽管现在他们提供了一个)。 它纯粹是在现有的ASP.NET Runtime上添加的。

这就像自动和手动变速器。 选择使您快乐的那个并运行它即可。


这不是唯一的两个解决方案。 - roundcrisis
在英国长大,我习惯了手动挡,一直坚信我会在买第一辆车时选择手动挡。但是我太忙于挑选颜色和功能,以至于完全忘记要求手动挡了。回想起来,我很高兴当时没有选择手动挡(我现在住在洛杉矶),但是现在我又回到了MVC的手动挡! - Simon_Weaver

4

我更倾向于使用ASP.NET MVC而不是WebForms,所以我会选择它,但你需要作为一个团队确定你们的核心技能集在哪里,以及选择MVC是否会:

  1. 创建更好的产品。
  2. 更快地进入市场。

不要仅仅因为它是新的就选择它。WebForms仍然是一个很好的选择,你可以编写可测试且具有清晰关注点分离的WebForms代码。


1
到目前为止,Mvc看起来不错,但我是一个城堡拥护者。我在许多生产站点中使用了Monorail,并使我开始学习IoC和AR。请查看castleproject.org。

1

我建议你试一试。

我们最近使用MVC开发的电子商务平台已经发布了。虽然可能会有一些问题(比如,使用匿名类型解析Url目前要比使用RouteValueDictionary慢得多,这个对我来说是个惊喜),但与我们旧的WebForms应用程序相比,在MVC中构建可管理的系统似乎要容易得多。

如果你有选择的余地,那么你肯定应该仔细看看。在我们开发它的过程中出现的错误都被迅速修复了,现在大部分事情都运作良好,它开始感觉非常完整。

但归根结底,采用早期测试版产品始终存在风险。 :)


1

除非你的应用程序非常简单,否则在你进入生产之前MVC可能会被发布。但这并不重要。我从预览2开始就一直在使用MVC进行构建。每个新版本都包含了破坏性的更改;然而,它们并不难以追踪和修复。很不可能在1.0版本中,你能够创建一堆代码,会被某些破坏性的更改所推翻。只需预算几个人小时来应用每个新版本即可。


0

如果您不必很快将应用程序投入生产,请使用MVC编写。 在这里,我们有一个正在使用MVC的团队,并计划在2009年1月投入生产。


0
如果这不是关键任务,而且你和你的团队有时间去学习它,为什么不呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接