【问题标题】:ashx vs aspx for file downloadashx vs aspx 文件下载
【发布时间】:2011-05-26 05:14:57
【问题描述】:

在一个基本场景中,我有一个 GridView,其中包含要下载的文件和链接按钮来下载它们,创建自定义 http 处理程序来流式传输这些文件,而不是简单地从下载链接按钮?

编辑:

因为一些建议的代码重用会支持处理程序,但在这种特殊情况下这不是问题。处理程序也更快,因为它避免了页面生命周期,但是这种轻微的性能改进可能不值得在我的特定情况下创建处理程序。

现在唯一想到的是(假设使用相同的 aspx 页面方法)在 GridView 位于 UpdatePanel 内的情况下是否有任何特殊考虑?

【问题讨论】:

  • 我会说和处理程序一起去。页面类有它自己的怪癖。

标签: .net asp.net httphandler


【解决方案1】:

这真的取决于你。 ASHX 没有与 ASPX 相同的页面生命周期(没有 OnLoad 等),由于开销低,通常被认为更快,并且没有与 web 表单关联的无关标记文件。

如果适合您的应用程序,您还可以考虑使用 Web 服务 (ASMX)。

【讨论】:

  • 同意,我知道它更苗条。不确定沿着这条路线走是否还有其他好处。考虑到我已经有一个提供下载链接的页面,如果重用不是问题并且性能是唯一的其他好处,那么我不妨在同一页面上的事件处理程序中这样做。
  • 使用 HTTPHandler 进行文件下载与性能或重用无关。它被赋予了一项特定的任务,即验证和提供文件,仅此而已。这对页面生命周期或 SOAP 模式或类似的东西没有要求。您的 aspx 页面和 asmx/wcf 服务有效地构建在 HTTPHandlers 之上。我投票支持使用 HTTPHandler 下载文件。
【解决方案2】:

您是否计划在应用程序中的多个位置重复使用下载功能?如果您想将下载与应用程序的其余部分松散耦合,Generic Handler 是一个不错的选择,因为您实际上是在创建一个服务。否则,如果您只打算从该按钮下载该按钮,并且只有该按钮,您可以将逻辑保留在那里。请记住,有些事情会让您的应用程序变得过于复杂。

【讨论】:

  • 重用的好点,在这种情况下,功能将不会被重用。现在唯一想到的另一件事是更新面板内的事件处理程序是否可以弹出下载框?也许我也会用这个来更新原来的问题。
【解决方案3】:

我为此使用 ASHX,因为我认为它们占用的空间更小,而且我根本不需要 UI 来流式传输文件,这些对我来说非常完美。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2017-03-13
    • 2012-08-18
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    相关资源
    最近更新 更多