【问题标题】:My first .net web app - should I go straight to MVC framework (c.f. ASP.net)我的第一个 .net Web 应用程序 - 我应该直接使用 MVC 框架(c.f. ASP.net)
【发布时间】:2010-05-15 11:37:22
【问题描述】:

我在 C# 中完成了一些 WinForms 工作,但现在不得不在 .NET (C#) 中开发 Web 应用程序前端。我有使用 Ruby on Rails 开发 Web 应用程序的经验(以及一些使用带有 JSP 页面和 struts mvc 的 Java)。

我应该直接跳到 MVC 框架吗? (而不是去 ASP.net)这是从微软未来方向的角度来看,以及从我自己的角度来看也很容易。

或者,如果您愿意,根据我迄今为止的经验,MVC 与 ASP.net 的优缺点对我来说是什么?

谢谢

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    看看这里它会帮助你Choosing the Right Programming Model

    【讨论】:

      【解决方案2】:

      如果您需要真正靠近电线工作,那么 MVC 是一个不错的选择。我的意思是,如果您需要对标记进行非常严格的控制,那么;虽然可以通过 WebForms 实现;使用 MVC 更容易。这对于针对可能具有更丰富图形体验的公共(例如互联网)受众的应用程序来说很常见。相比之下,如果您正在开发图形表示不那么重要的内部(例如 Intranet)业务应用程序,那么 WebForms 具有许多非常好的启用功能,可以让您更快地移动。 不要误会我的意思,您可以使 WebForm 应用程序看起来非常漂亮,但是您放弃了对标记的一些控制。

      ViewState 经常出现在这种讨论中。 MVC 将没有任何 ViewState,因此在线占用空间会小得多,这在某些时候可以节省速度和带宽成本。不利的一面是,使用 MVC 制作有状态的应用程序可能会更加痛苦。相比之下,WebForms 默认会携带 ViewState 并且本质上是更有状态的。这通常适用于内部应用程序。请记住,ViewState 不必通过网络发送......有一些扩展允许您将其卸载到本地缓存。我不是偏袒一个,但你应该知道每个人在这方面可以做什么。

      如果单元测试对您很重要,那么 MVC 也是一个更好的选择,因为这也更容易。这在 WebForms 中是完全可以实现的,但需要您正确地对代码进行模式化。

      安全性不是主要因素,因为大部分设置 IPrinciple 和 IIdentity 都是通过 HttpModules 在 HTTP 管道中进行的,因此在这方面两者都可以。

      做出选择的另一个主要因素与您的技能和交付时间有关...如果您不习惯以无状态方式工作或编码标准 Web 技术(例如 html、css、jquery、等等...)MVC 将花费您更长的时间来做非常基本的事情。话虽如此,一旦到位,它可能会更清洁、更小、更可测试和更快。如果您需要快速移动,您可以在 WebForms 中做得更快。 WebForms 在标记方面也做了很多繁重的工作,因此您可以将许多细节留给 ASP.NET。

      我实际上出于各种原因同时使用这两种方法,MS 已表示他们计划继续为这两种方法提供支持和开发。

      【讨论】:

        【解决方案3】:

        MVC 是 ASP.NET 的一部分。您一定是指 MVC 与 Webform,答案是:来自 Winform 背景,您会发现 Webform 更易于使用。对于未来,请使用 MVC。

        【讨论】:

          【解决方案4】:

          我以前也从事桌面应用程序的工作,但从未真正涉足网络领域。我什至不(喘气!)知道 HTML(是的,那是我的程序员的耻辱)。在我的新工作中,我们将使用 ASP.NET MVC 启动一个新应用程序,我必须告诉你,我喜欢它。但是,我认为只有当你是或者你指望具有良好 html/css 设计技能的人时,你才应该使用 MVC。

          HTML 很简单,我知道(我已经学会了!)但我认为用 html 和 css 做出漂亮的设计有点困难,特别是如果你不擅长设计,你可能会使用 webforms 做更漂亮的东西,这有点容易/类似于winforms。

          另外,如果你采用 MVC 方式,请确保你有足够的时间来学习它,因为你会走得更底层一些,所以你必须学习更多的小细节,比如 post 之间的实际区别/get 和所有几乎完全隐藏在网络表单中的东西。我真的会推荐一本书,我用过这本书Pro Asp.net MVC 并且非常喜欢它。

          最后,如果您的页面将有交互式位或 ajax-y 的东西,如果您采用 MVC 方式,您很可能也必须学习 javascript/jQuery。如果您使用网络表单,则可以使用包含的拖放 ajax 控件。

          【讨论】:

          • 您是否曾经遇到过 WebForms 的问题,您无法将其完全调整为您希望它们的外观?
          • 我没有过多地使用网络表单,但在我所做的几件事中,你非常受限于给定的控件及其操作,因为 id 是一团糟。这在 .net 4 中似乎要容易得多,因为现在您实际上可以指定 id,(从而使您可以更轻松地执行 jquery/ajaxy 事情
          【解决方案5】:

          来自 Ruby on Rails 或其他基于 MVC 的框架 ASP.NET MVC 几乎是最佳选择。 (ASP.NET MVC 实际上只是“VC”部分,因此您必须添加您选择的 ORM。EF 和 Linq to Sql 是 Microsoft 的方式,NHibernate 或其他 ORM 是另一种方式。一个很好的快速入门项目是S#arp Architecture 使用 NHibernate 作为“M”部分,或者您可以查看 WHCM,这是一个基于 S#arp 架构和其他良好框架的项目(它被认为是 ASP.NET MVC 最佳实践演示项目) ))。 ASP.NET MVC 几乎不使用 WebForms 包中的任何内容(我发现的唯一例外是 AntiForgeryToken),因此如果您不熟悉 ASP.NET WebForms,您将不会丢失任何东西。

          但正如您所说,您还制作了控制台应用程序,与 ASP.NET WebForms 更相似。

          如果您的项目是新项目,我建议您使用 ASP.NET MVC。如果您的项目清楚地将 M-V-C 部分分开(如在 S#arp 架构中,它们位于不同的程序集中),那么创建使用相同业务逻辑的控制台应用程序应该不会太难。如果您当前的项目是将 WinForms 应用程序移植到 Web,那么使用 WebForms 可能会更容易。

          【讨论】:

            【解决方案6】:

            在使用像 MVC 这样“花哨”的东西之前,我应该先熟悉这种语言,因为当你几乎可以用这种语言思考时,它会更容易学习(但这不是必需的)。

            【讨论】:

            • 来自 Ruby on Rails,ASP.NET Webforms 是“花哨的”而不是 ASP.NET MVC 变体
            • 这就是我的猜测 SztupY - 你怎么看?
            【解决方案7】:

            课程用马。如果您正在为某人制作一个快速应用程序,那么 Web 表单可能会更快、更容易。

            如果您正在构建一个长期运行的企业应用程序,MVC 可以为您提供更好的可测试性 SoC。

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-13
            • 2021-05-17
            • 2011-04-27
            • 1970-01-01
            相关资源
            最近更新 更多