我有一个在网络和移动平台上运行的应用程序,它的用户可以使用该应用程序上传照片。我需要一个web服务来处理上传和显示web和移动应用程序上的图像。
使用ASP.NET Web API作为图像服务并在其上发出上传照片的POST请求是不是一个好主意?这种方法的优点和缺点是什么?对这样的服务使用ASP.NET Web API开销吗?
发布于 2012-08-05 02:07:38
ASP.NET Web API非常适合异步I/O --它在.NET 4(特别是.Net 4.5)中使用了新的基于任务的异步模型,这使得构建异步控制器和协调多个异步操作变得非常简单。如果这个模型对你来说是新的,那么我会推荐this presentation on channel9。
对于上传,HTML完全支持基于表单的常见ASP.NET文件上传模型的异步MIME多部分文件上传。您可以在FileUploadSample available as source中看到这方面的示例。
使用StreamContent异步服务文件也很简单。在这里,您(在控制器中)打开一个文件,创建一个HttpResponseMessage,然后以包装该文件的HttpContent的形式附加一个StreamContent,这就完成了。
所有这些操作都不会阻塞I/O上的任何线程。
希望这能帮上忙
亨里克
发布于 2012-08-04 02:36:32
这取决于你的应用程序的并发性和用户数。
这类应用程序的本质是以I/O为中心的,这意味着您的ASP.NET服务器将在大多数时间等待I/O操作完成。在高并发的情况下,这将导致您的ASP.NET托管线程池因线程匮乏而崩溃。
我会推荐:
1)如果您保持ASP.NET的主动性,请实现IAsync编程模型。这将使您的web应用程序更具伸缩性。
2)如果您不想处理IAsyncResult,那么在中间放置一些负载均衡器,并水平扩展,根据需要添加更多的服务器。这可能会导致需要将您的ASP.NET应用程序重新设计为Web,从而增加一些复杂性(会话状态管理、身份验证、授权等)。
3)尝试不同的技术,Node.js在处理I/O高延迟编程模型方面广为人知。
https://stackoverflow.com/questions/11800844
复制相似问题