代码之家  ›  专栏  ›  技术社区  ›  Michael La Voie Frederik Gheysels

ASP.NET内联(单个文件)与代码隐藏

  •  2
  • Michael La Voie Frederik Gheysels  · 技术社区  · 15 年前

    在从经典ASP到ASP.NET的过渡过程中,一些开发人员将服务器端代码放在HTML ALA顶部的块中:

    <%@ Import Namespace="MyDll" %>
    
    <script runat="server">
        void Page_Load()
        {
        }
    </script>
    

    此单页模型具有以下优点: Jeff Atwood describes 但是,根据我的经验,最近我看到几乎所有代码都放在一个单独的代码隐藏文件中(即与2008年相比)。

    然而,事实证明,与单独的代码隐藏方法相比,同事更喜欢单文件(内联)方法。

    每种方法的优点和缺点是什么?(我注意到代码崩溃和区域似乎不受支持。同时,页面也变得相当长,客户机和服务器端代码之间不再存在视觉分离。你能告诉我有偏好吗?)

    我知道这个问题的变种以前有人问过,但是我没有看到有人具体地说出每种方法的优缺点。

    编辑

    感谢各位发人深省的回答。我仍然希望能列出每种方法的优缺点。每个系统都有(或没有)哪些实际功能?

    5 回复  |  直到 15 年前
        1
  •  1
  •   John Rudy    15 年前

    通常,在WebForms中工作时,我看到的趋势是使用代码隐藏。我在这个领域中看到的许多*webforms应用程序的代码太多,分离对于理解所有逻辑几乎是至关重要的。

    然而,在一个设计良好的应用程序中,用户界面只做一个用户界面工作,并将所有的逻辑和繁重的工作传递给不同的应用程序层,一个单一的文件解决方案最终往往会更加优雅和容易遍历。在某种程度上,使用单文件解决方案可能——在右手边——会促使更好地分离关注点,因为您不希望一个文件(它提供了您的UI)与一堆业务逻辑混在一起。

    在ASP.NET MVC模型中,默认值为单个文件。这再次强调了关注点的分离和良好的应用程序设计。(如果ASP.NET MVC工具包提供了一个代码隐藏概念,我还不太清楚。我还没有用过它。)

    最终,YMMV。好的开发人员倾向于编写好的代码,不管是使用代码隐藏还是单文件模型。坏的开发人员也倾向于以任何方式编写坏的代码。

    * 显然不是全部!

        2
  •  5
  •   Joel Coehoorn    15 年前

    毫无疑问,在我看来,代码隐藏或MVC模型对于您想要做的几乎所有事情都是优越的。然而,即使在今天,我仍然发现自己在我的大部分页面中使用内联代码。为什么?因为有一个很大的场景是内联脚本真正发光的。

    如果您有大量不想丢弃的传统ASP经典代码,包括深度嵌套结构,那么这些代码都存在于一个大型应用程序中,并且您希望将该应用程序与您的ASP.NET代码共享,那么您只需将内联ASP.NET页直接放到现有的Web文件系统中,它们就可以正常工作。

    这听起来正是您的其他开发人员的来源。

        3
  •  4
  •   Jan Jongboom    15 年前

    因为codebehind只是一个类,所以它具有所有的优点,比如固有性和接口。它还增强了可读性。

    对于专注于输出数据而不是实现业务逻辑的应用程序,单页主要被MVC所取代。

        4
  •  2
  •   The Matt    15 年前

    您是否考虑改用ASP.NET MVC?它会让你在一个非常干净的分离中克服这个迪勒姆纳。

        5
  •  -1
  •   Chuck Conway    15 年前

    内联代码本质上是程序化的,缺乏关注点分离…

    ASP.NET的卖点之一是代码隐藏和服务器控件。有内联代码被认为是不好的。当ASP.NET MVC出现在场景中时,这种情况发生了变化——内联代码再次变成了“hip”。

    如果我有选择,所有事情都是平等的,那么使用代码隐藏是一种更好的方法。我努力使尽可能多的逻辑/代码不在UI中。

    即使使用后面的代码,虽然它是一个类,但它可能会变得混乱不堪。我发现,在Web表单中使用MVP或MVC的某个变体可以使开发从长远来看更易于维护。