【问题标题】:How to decide which is right, WebForms or MVC when doing ASP.NET做 ASP.NET 时如何决定哪个是正确的,WebForms 还是 MVC
【发布时间】:2010-09-24 14:46:19
【问题描述】:

所以我即将为我的体育俱乐部启动一个用于会员注册的小项目,我正在尝试在 WebForms 或 MVC 之间做出决定。

Allit 将是一个用户登录和数据捕获表单(或数据检索),所以我最初考虑使用 FBA 的 WebForms,但我想玩 MVC 有一段时间了,我想它会不错的选择。

但我对 MVC 的了解并不多,我不知道它是否适合。

那么,确定 WebForms 或 MVC 是否是正确选择的好方法是什么?

【问题讨论】:

标签: asp.net asp.net-mvc webforms


【解决方案1】:

Webforms 是来自 gui 世界的人们的 Web 抽象。我发现它有很多优势,尤其是在 RAD 意义上,但是在编写大型强大的应用程序时,您通常最终会将自己画到一个很难摆脱的角落(即:与视图状态有关的一切。)

另一个问题是您在使用 Web 表单时会陷入不良习惯。你不应该使用拖放数据源、内置网格控件,并且如果你想要一些可扩展和可维护且具有干净架构的东西,那么绝对不能在背后的代码中包含业务逻辑。在网络表单中做到这一点需要深谋远虑和纪律,因为一切都会引导您朝着这些方向前进。

相比之下,使用 MVC,您会陷入最佳实践。它的性能更高(整个页面生命周期/视图状态在客户端和服务器上都表现出色),并且从架构的角度来看更清晰。

缺点是你可以告别 RAD,实际上你需要对 css/javascript 有一定的了解才能制作好看的页面。

这真的归结为最适合这项工作的工具,以及您/您的团队拥有的经验/知识类型。

【讨论】:

    【解决方案2】:

    我真的很喜欢 WebControls 方法。很多人都说“在做 MVC 时,单元测试更容易”。首先,无论如何,您应该使用哪种类型的方法将业务逻辑和您的 UI 层完全分离。如果您这样做,那么无论您使用哪种方法,您都可以对您的业务逻辑进行单元测试。当然,使用 MVC 可能会更容易并且“开箱即用”,但这并不是通向罗马的唯一道路……

    其次,您可以使用WatiN,它可以让您的应用以远远优于传统单元测试的方式进行测试。 (请注意,我并不是说它应该取代单元测试,但除了单元测试之外,它还可以将您带到以前无法获得的安全级别)

    第三,网络是无状态的。这是因为 HTTP 是一个完全无状态的协议。这正是使 Web 变得美丽的原因,但同时开发应用程序 却非常困难。 WebControls 方法主要通过拥有诸如 ViewState 之类的概念来完全解决这个问题。这在进行应用程序开发时消除了很多的麻烦。看看这个Ajax Calendar sample,这在任何其他范例中几乎不可能使用相同()数量的代码来实现,然后是 WebControls(免责声明;我自己使用 Ra-Ajax)

    现在看看Stacked(免责声明;......我也与 BTW 合作)然后意识到我到目前为止花了不到 3 天的时间来开发你在那里看到的东西。也许有人可以用 MVC 实现这一成就,但我对此表示怀疑......

    我认为 WebControl 范式非常漂亮。当然它在某些方面有所欠缺,但你猜怎么着,everything也是如此。编程作为一种艺术形式存在的唯一“银弹”是不存在任何银弹。

    话虽如此,我知道Grurrah 正在添加 到基于WebControl 的Ajax 库中使用Castle Project 的MVC 层。所以混合 WebControls MVC 可能很困难,但肯定不是不可能的......

    我认为 MVC 得到了很多“当之无愧”的炒作,但不幸的是,在这个过程中也有很多不应有的炒作......! :(

    下定决心,不要听 MVC 布道者试图说服你他们已经找到了 Web 编程的“银弹”。更重要的是,也不相信我!我也有一个议程(让 Ra-Ajax 采用)

    自己决定。问别人你是否应该做 MVC 就像问我应该吃苹果还是橘子......你会得到的唯一好的答案是; “这取决于”...

    【讨论】:

    • 我对 WebForms 非常精通,所以对他们没有什么个人意见,我更多的是在问我想要实现的目标是否可以在 MVC 中实现。
    • @Slace,MVC 可以使用 WebForms 作为视图。它是一种架构(和模式),而不是一种技术。
    • 我同意并 +1 提到 WaitN,整洁的项目!
    • 有趣的是,您在 SO 克隆上花了 3 天时间。 ;] 当您说“WebControls 方法”时,我假设您是在谈论 MVP(而不是 MVC)?
    • @bzlm - 我的工具链中使这成为可能的关键点是 ActiveRecord 和 Ra-Ajax。 (我与 Ra-Ajax 合作)
    【解决方案3】:

    我们获得了同样的机会。在玩了几个星期的 MVC 之后,我们发现有些事情我们并不完全理解,以及一些事情会涉及到一些变化:

    • 实施存储库设计 模式
    • Html Helpers 与标准 Web 窗体控件,例如 Repeaters 和 GridView
    • 缓存
    • 无论是使用我们目前使用的框架,Csla,还是尝试使用带有部分类的 Linq-To-Sql 来保存业务逻辑
    • 涉及主从类的复杂类和用户界面

    我们决定继续玩它,等到它正式发布,然后编写一个内部应用程序,看看它会把我们引向何方。

    【讨论】:

      【解决方案4】:

      根据您对 tvanfosson 的 cmet,听起来 MVC 对您来说是一个不错的选择,因为您将学习的愿望列为选择该技术的理由。我怀疑 MVC 会从它的测试版中彻底改变。因此,这可能是学习新工具的好机会。至于 WebForms 是“快速而讨厌”的解决方案,我担心这是 MVC 宣传。

      【讨论】:

      • 鉴于 MS 已明确授予将 MVC 测试版用于生产应用程序的权限,可以肯定的是,它不会改变到发布 v1.0 时应用程序会中断的地步。
      【解决方案5】:

      IMO,MVC 是前进的道路。如果你有时间学习 MVC 编程方式(因为你暗示你想玩 MVC ..意思是你还没用过),那么这将是一个深入了解产品的绝佳机会。

      如果您以前有过 WebForms 经验(我猜您有),那么学习曲线并不高。

      如果您需要真正快速地创建一个站点,不要关心它是什么,并且站点会很小,那么请使用 WebForms。这是快速而讨厌的解决方案(仅出于我的意见)。 WebForms 100% 完美运行。我所有的网站都是 WebForms,它们都很好。

      总结:

      • 有时间想学习制作网站的最佳方法:MVC
      • 没时间或不在乎:WebForms。

      gl 和 hth。

      【讨论】:

        【解决方案6】:

        这是一个关键的生产级应用程序还是一个小的一次性应用程序?您能否处理 MVC 的学习曲线所花费的额外时间,或者您是否需要立即完成?如果 MVC 不成功,你能负担得起放弃整个事情并重新开始吗?您是否愿意在开发过程中改变平台(现在它处于测试阶段可能不会改变太多)?是否还有其他不太重要的项目可以使用 MVC 来学习它。

        根据您如何回答这些问题,在这个项目中学习 MVC 可能是值得的。就个人而言,我认为它是一个更好的架构,但在这一点上是一个不太成熟的技术。它确实增加了我的 Web 代码的可测试性。我希望在接下来的一年左右将我所有的开发都朝着这个方向发展,尽管我怀疑我是否会改变我已经开发了一段时间的任何项目。我刚刚开始了我在 MVC 中的第一个新项目。在它进入测试阶段之前我不愿意承诺它,我认为它会在我完成项目之前投入生产。

        【讨论】:

        • 只是将纸质系统迁移到电子系统。因此,我可以随心所欲,而且只适用于小型体育俱乐部。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多