【问题标题】:Asp.Net inline (single-file) vs code-behindAsp.Net 内联(单文件)与代码隐藏
【发布时间】:2009-09-12 05:38:01
【问题描述】:

在从经典 ASP 到 Asp.Net 的过渡中,一些开发人员开始将他们的服务器端代码放在 HTML ala 顶部的一个块中:

<%@ Import Namespace="MyDll" %>

<script runat="server">
    void Page_Load()
    {
    }
</script>

这种单页模型与Jeff Atwood describes 一样具有一些优势,但是,根据我的经验,我最近看到几乎所有代码都放在一个单独的代码隐藏文件中(即使用 VS 2008)。

然而,事实证明,一位同事更喜欢单个文件(内联)方法,而不是单独的代码隐藏方法。

每种方法的优缺点是什么? (我注意到似乎不支持代码折叠和#regions。而且页面变得相当长,客户端和服务器端代码不再有视觉分离。你能告诉我有偏好吗?)

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

编辑

感谢大家发人深省的回答。我仍然希望列出每种方法的优缺点。每个都有(或没有)的实际功能是什么?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    毫无疑问,代码隐藏或 mvc 模型几乎可以胜任您想做的所有事情。然而,即使在今天,我仍然发现自己在我的大部分页面中都使用内联代码。为什么?因为有一个大场景是内联脚本真正闪耀的。

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

    这听起来就像您的其他开发人员来自哪里。

    【讨论】:

    • 我没想到。在我们的例子中,我们不维护经典的 ASP 代码。我们所有的代码至少是 .NET 2.0 或更高版本。
    【解决方案2】:

    因为代码隐藏只是一个类,它具有继承和接口等所有优点。它还增强了可读性。

    对于专注于输出数据而不是实现业务逻辑的应用程序,单页已大部分被 mvc 取代。

    【讨论】:

    • 好点,mvc 确实回归了经典的 asp 思维方式(尽管改进了很多)。
    • 错了,MVC 将业务逻辑带到了它所属的位置 - 业务类(模型),而不是将其与“单页”内的表示混合 - 意大利面风格。
    【解决方案3】:

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

    【讨论】:

    • 当然,我们正在研究 MVC,但我真的很想知道每种方法的具体优缺点是什么。
    【解决方案4】:

    通常,在使用 WebForms 时,我看到的趋势是使用代码隐藏。我在该领域看到的许多* WebForms 应用程序的代码隐藏太多,而分离对于能够理解所有逻辑来说几乎是至关重要的。

    但是,在一个设计良好的应用中,UI 只完成一项 UI 工作,并将所有逻辑和繁重的工作传递给不同的应用层,单文件解决方案通常会变得更加优雅和简单穿越。在某种程度上,使用单文件解决方案可能——在正确的手中——激发更好的关注点分离,因为你不希望一个文件(它提供你的 UI)被一堆业务搞得一团糟逻辑。

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

    最终,YMMV。优秀的开发人员倾向于编写好的代码,无论是使用代码隐藏模型还是单文件模型。糟糕的开发人员也倾向于编写糟糕的代码。

    *显然不是全部!

    【讨论】:

    • 很好,尽管在足够复杂的页面上有足够多的回发事件,但我看到即使是干净的代码隐藏也变得相当大。
    • 确实如此。然而,在这一点上,更好的设计是开始将内容分解为用户控件,然后将页面上的用户控件连接起来以相互通信。更多的努力,但绝对更容易维护。
    【解决方案5】:

    内联代码本质上是过程性的,缺乏关注点分离...

    ASP.Net 的卖点之一是代码隐藏和服务器控件。内联代码被认为是不好的。当 ASP.NET Mvc 出现时,情况发生了变化——内联代码再次变得“时髦”。

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

    即使使用代码隐藏,虽然它是一个类,但它可能会变得一团糟。我发现从长远来看,将 MVP 或 MVC 的某些变体与 Web 表单一起使用可以使开发更易于维护。

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      相关资源
      最近更新 更多