.net ashx与aspx用于文件下载

.net ashx与aspx用于文件下载,.net,asp.net,httphandler,.net,Asp.net,Httphandler,在一个基本场景中,我有一个GridView,其中包含要下载的文件和要下载的链接按钮,创建一个用于流式传输这些文件的自定义http处理程序,而不是简单地从下载链接按钮的事件处理程序流式传输,这有什么好处吗 编辑: 正如一些人建议的那样,代码重用将有利于处理程序,但是在这种特殊情况下,这不是一个问题。处理程序也更快,因为它避免了页面生命周期,但是在我的特定情况下,这种轻微的性能改进可能不值得为其创建处理程序 现在想到的唯一一件事是(假设使用相同的aspx页面方法),在GridView位于Update

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

编辑:

正如一些人建议的那样,代码重用将有利于处理程序,但是在这种特殊情况下,这不是一个问题。处理程序也更快,因为它避免了页面生命周期,但是在我的特定情况下,这种轻微的性能改进可能不值得为其创建处理程序


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

我使用ASHX来实现这一点,因为我认为它们占用的空间更小,而且我根本不需要用于流式传输文件的UI,这些对我来说太完美了。

您是否计划重用应用程序中多个站点的下载功能?如果您想将下载内容与应用程序的其余部分松散耦合,那么
通用处理程序是一种很好的方法,因为您实际上是在创建服务。否则,如果您仅计划从该按钮下载,并且仅从该按钮下载,则可以将逻辑保留在那里。请记住,有些事情会让你的应用程序变得过于复杂。

这完全取决于你自己。ASHX没有与ASPX相同的页面生命周期(无OnLoad等),通常认为由于开销较低而更快,并且没有与webform关联的无关标记文件


你也可以考虑一个Web服务(ASMX),如果你的应用程序合适的话。Page类有自己的怪癖。同意,我知道它更苗条。我不确定沿着这条路线走下去是否还有其他好处。考虑到我已经有了一个提供下载链接的页面,如果重用不是问题,而且性能是唯一的好处,那么我最好在同一页面上的事件处理程序中使用它。使用HTTPHandler进行文件下载与性能或重用无关。它被赋予了一个特定的任务,即验证和提供一个文件,而不是别的。这不需要页面生命周期、SOAP模式或类似的东西。您的aspx页面和asmx/wcf服务有效地构建在HttpHandler之上。我投票赞成使用HTTPHandler下载文件。重用的观点很好,在这种情况下不会重用该功能。现在唯一想到的另一件事是更新面板中的事件处理程序是否可以弹出下载框?也许我也会用这个更新原来的问题。