2012-08-03 49 views
5

我有一个应用程序在Web和移动平台上运行,其用户可以使用该应用程序上传照片。我需要一个Web服务来处理在Web和移动应用程序上上传和显示图像。使用ASP.NET Web API作为图像服务

将ASP.NET Web API用作图像服务并在其上发送POST请求以上传照片是一个好主意吗?这种方法有什么优点和缺点?正在使用ASP.NET Web API开销这样的服务吗?

回答

2

这取决于您的应用程序可能具有多少并发性和多少用户。

这种应用程序的本质是以I/O为中心的,这意味着您的ASP.NET服务器将大部分时间等待I/O操作完成。在并发性较高的情况下,这会导致您的ASP.NET托管线程池崩溃并导致线程匮乏。

我会建议:

1)如果保留ASP.NET倡议,请执行IAsync编程模型。这将使您的Web应用程序更加可扩展。

2)如果您不想处理IAsyncResult,请在中间放置一些负载平衡器并水平扩展,根据需要添加更多的服务器。这可能会导致需要重新设计ASP.NET应用程序作为Web Farm,增加一些复杂性(会话状态管理,认证,授权等)。

3)尝试一种不同的技术,Node.js很好地处理I/O高延迟和编程模型。

12

ASP.NET Web API与异步I/O非常相称 - 它使用.NET 4中新的基于任务的异步模型(特别是.Net 4.5),这使得构建异步控制器和协调多个异步操作。如果这个模型对你来说是新的,那么我会推荐this presentation on channel9

对于上传,ASP.NET Web API支持基于表单中常见HTML文件上传模型的完全异步MIME多部分文件上载。你可以在FileUploadSample available as source中看到这个例子。

使用StreamContent异步提供文件也是直接的。在这里你(在控制器中)打开一个文件,创建一个HttpResponseMessage并以StreamContent的形式附上一个HttpContent来包装文件,就是这样。

这一切都发生在没有阻塞I/O上的任何线程。

希望这有助于

亨里克

+0

谢谢,非常有用!那么,您认为新的ASP.NET Web API应该足以作为所有图像处理的服务吗? – 2012-08-04 20:42:24

+0

Web API中不再提供HttpResponseMessage – Markive 2013-07-28 03:55:08