ASP.NET Handler(ashx)与MVC Controller Action用于下载文件,它们有什么区别?

6
我们有一个应用程序,对于一些旧的Web应用程序页面使用WebForms,但也包含一些新功能的MVC功能。我们有一些新的要求需要下载文件,这些文件必须在服务器上处理(而不是直接链接到Web服务器上的静态文件)。
我没有看到任何迹象表明是否应该使用ASHX处理程序,而不是只是使用MVC控制器,在响应对象上操作并在操作方法结束时返回EmptyResult()。
对于MVC,是否有最佳实践? ASHX处理程序应该留给WebForms,还是它们提供了比使用MVC更好的优势来处理此类型的文件下载功能?
2个回答

6
好的,一个ASHX可以更加封闭和具体化... 但是,将所有的代码和逻辑放在主应用程序中也有其优点。就我所知,在MVC现在已经没有明显的技术原因需要做出选择。使用WebForms时,流式传输大文件更加困难,但是在MVC中你可以很容易地实现这一点(因此你不必先把整个文件加载到内存中)。而且,由于现代异步方法,你不必太担心工作线程等会影响可伸缩性的问题。
真正取决于你自己。即使你想将它分开成为自己的模块,现在可能更有意义将其制作成owin模块而不是ashx。这更多地关乎你如何设计你的应用程序。

6
HttpHandler的性能更好,因为它比MVC操作更加裸机(只是多了一些步骤,但仍然如此)。
除此之外,我没有看到你应该出于性能原因选择其中之一的理由。 MVC具有一些不错的功能,例如缓存和授权属性,您可能希望使用。
如果选择使用MVC,请使用专门用于文件处理的结果,例如FileStreamResultFileContentResult

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接