ASP.NET Handler(ashx)vs MVC Controller Action用于下载文件

时间:2014-10-23 14:58:48

标签: asp.net asp.net-mvc ashx

我们有一个应用程序,它将webforms用于一些较旧的Web应用程序页面,但也包含一些较新功能的MVC功能。我们对下载必须在服务器上处理的文件有一些新的要求(而不是直接链接到Web服务器上的静态文件)。

我还没有看到任何迹象表明是否有理由应该使用ASHX处理程序而不是仅使用MVC控制器并对响应对象进行操作并在操作方法结束时返回EmptyResult()。 / p>

MVC是否有最佳实践? ASHX处理程序是否应该用于WebForms,或者它们是否提供了使用MVC来提供此类文件下载功能的一些好处?

2 个答案:

答案 0 :(得分:5)

HttpHandler的性能更好,因为它比MVC操作更简单(只需几步,但仍然如此)。

除此之外,我认为没有理由为了性能原因你应该选择一个而不是另一个。 MVC有一些你可能想要使用的很好的功能,比如缓存和授权属性。

如果您选择使用MVC,请使用专为文件处理而构建的结果,例如FileStreamResultFileContentResult

答案 1 :(得分:4)

嗯,ASHX可以更加包含和具体......但是,在主应用程序中包含所有代码和逻辑还有一些事情可以说。

根据我对MVC的了解,现在没有技术上的理由去做另一个。使用WebForms,流式传输大型文件更加困难,但使用MVC,您可以非常轻松地完成此操作(因此您不必先将整个文件加载到内存中)。此外,鉴于现代异步方法,您不必过于担心绑定工作线程以及不具备可伸缩性的方法。

这真的取决于你。即使你想将它分成它自己的模块,现在将它作为一个owin模块而不是一个ashx可能更有意义。它更多地是关于您如何设计应用程序。