2012-08-03 50 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