使用ASP.NET Web API作为映像服务

Neb*_*ron 5 asp.net rest web-services image asp.net-web-api

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

将ASP.NET Web API用作图像服务并在其上发出POST请求以上传照片是一个好主意吗?这种方法有哪些优点和缺点?是否正在为此类服务使用ASP.NET Web API开销?

小智 12

ASP.NET Web API与异步I/O配合使用 - 它使用.NET 4中新的基于任务的异步模型(特别是.Net 4.5),这使得它可以直接构建异步控制器并协调多个异步操作.如果这个模型对你来说是新手,那么我会在channel9上推荐这个演示文稿.

对于上载,ASP.NET Web API支持基于表单中的常见HTML文件上载模型完全异步MIME多部分文件上载.您可以在FileUploadSample中看到此示例,作为源.

使用StreamContent异步提供文件也很简单.在这里(在控制器中)打开一个文件,创建一个HttpResponseMessage并以StreamContent的形式附加一个HttpContent包装文件就是这样.

这一切都发生在不阻塞I/O上的任何线程的情况下.

希望这可以帮助,

亨里克


Adr*_*zar 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 高延迟编程模型而闻名。