【问题标题】:Tips from ASP.NET MVC and lessons for ASP.NET WebForms developers来自 ASP.NET MVC 的技巧和面向 ASP.NET WebForms 开发人员的课程
【发布时间】:2008-11-07 20:30:22
【问题描述】:

ASP.NET MVC 开发人员可以提出哪些有用的建议来帮助我们 ASP.NET WebForms 开发人员编写更好的代码/Web 应用程序?

我是一名 WebForms 人,但由于围绕 MVC 的所有新炒作,我会重视一些可能可以在 Webforms 应用程序中使用的有用提示、技巧和策略的 cmets。

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    不久前,当我了解新的 MVC 框架时,我想到的是,WebForms 在很多方面都是 MVC 的尝试。标记和代码隐藏包含视图和控制器,您可以编写自己的模型。

    这个想法与我从学习 MVC 中获得的重要设计考虑密切相关。其中最重要的是巩固整个系统的核心域,并确保在该域内可重用的级别定义所有常见逻辑。这是您的模型,我喜欢将生活在此级别的逻辑称为域逻辑(我知道我混合了术语)。您的模型应该可以在不同的应用程序中重用(主要的 web/winforms 应用程序、用于实用程序和配置的 winforms 应用程序、后台处理服务、web 服务等)。您的应用程序应该非常特定于它们的用途:它们由表示逻辑(它们的视图)和应用程序逻辑(它们的控制器)组成。任何越过需要在其他应用程序中使用的东西都可以轻松归类为领域逻辑,并且不应成为任何给定应用程序的应用程序代码的一部分。

    我希望这是有道理的。

    它的要点是,即使您不使用纯 MVC 框架或对象模型或其他任何东西,这种高层次的设计外观也可以产生很好的效果。将通用逻辑隔离在可跨应用程序重用的域层中,您的应用程序更易于编写、扩展和维护。

    【讨论】:

      【解决方案2】:
      1. 忘记页面生命周期
      2. 没有 ViewState(默认情况下)
      3. 没有回发
      4. 您需要了解 HTTP 协议基础知识 (GET/POST)。 HTML 也是如此(DropDownList 实际上是一个标签)

      【讨论】:

        【解决方案3】:

        我建议首先观看 Microsoft 学习网站上的截屏视频:

        ASP.NET MVC Videos

        在那里,您将了解 WebForms 回发模型与 MVC 直接将您的 URL 路由到操作和方法的方式之间的区别。

        第二个主要区别是要记住,在 ASP.NET MVC 中,您不使用执行回发的控件。它可能感觉有点像 Classic ASP,其中代码在服务器端块内的页面上内联,但这是值得的。您将完全控制生成的 HTML,这对于搜索引擎优化之类的事情非常有用。

        【讨论】:

          【解决方案4】:

          一些建议

          1. 不要使用标准控件。而是关注 jQuery、MooTools。
          2. 使用强类型模型
          3. 最好使用一些 IoC,例如 Spring.NET

          【讨论】:

            【解决方案5】:

            我也来自 webforms,但从预览版 3 开始就一直在学习 asp.net MVC。

            我不确定如何将 MVC 中的任何内容引入 Web 表单,它们是两个完全不同的框架。我可能对它太陌生了,无法理解如何将它应用于网络表单,但现在看来它们几乎没有共同点。

            MVC 的一些优势在于它在您需要如何做事以及将代码放置在何处方面具有严格的结构。它还取消了 runat=server 形式,我相信不会促进任何 asp.net 服务器控件的使用(您需要自己编写所有 HTML)。这几乎就是网络表单的定义。 MVC 几乎用它自己的框架取代了网络表单。

            如果您曾经使用过 Classic ASP 或 PHP,我会称 ASP.net MVC 为一种更结构化的框架,以供人们使用那些较旧的脚本语言进行操作。它有点像 FuseBox 框架,但更加结构化和进化。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-04-19
              • 1970-01-01
              • 1970-01-01
              • 2011-01-06
              • 2011-11-02
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多