2011-05-03 82 views
0

我想就如何處理編程任務提供一些建議。ASP.net/WCF服務圖像處理建議

我正在創建一個網站,收集數據隨着時間的推移(用戶輸入數據),然後顯示空間地圖(根據請求)從數據創建。

每次用戶輸入數據時,我都使用webservice將數據存儲到SQL數據庫(使用ef4)。

我現在的設計決策是當客戶端請求地圖/圖像時,我應該如何將圖像返回給他們。

我應該:

  1. 在調用WCF服務構建 的圖像,並通過 服務
  2. 返回圖像在調用WCF服務構建 的形象,店面 它的服務器端的某個地方,返回路徑 或圖像的URI/URL

我曾希望做(2),但我不確定在哪裏可以節省e圖像以及試圖揭示它的含義。

WebService和Asp.Net應用程序很可能會從相同的服務器運行,如果有幫助的話。

如何進行的任何建議,將最讚賞,尤其是細節,如它是安全的,從WCF服務等

由於保存。

(我正在使用一項服務,因爲除Asp.Net應用程序以外,還有其他客戶端請求數據)

回答

0

我會根據一些參數使用HTTP處理程序來使用您的WCF服務。我使用類似的東西來檢索數據庫中存儲爲BLOB的圖像,並在圖像上設置一些默認大小。

HTTP處理程序將從asp.net頁面上的圖像標籤調用。

This article對HTTP處理程序的更多信息

1

這將在很大程度上取決於什麼樣的API的客戶可以消耗?如果他們需要SOAP API,則必須使用WCF服務或asmx來提供圖像。然而,更好的選擇顯然是HTTP API,即爲訪問特定圖像提供了一個唯一的URL--您可以使用REST風格的URL或者可以選擇通過查詢字符串接受參數。本質上,URL應該具有從數據庫檢索圖像所需的全部信息。

現在,您可以直接選擇基於REST的WCF服務來提供這些圖像,或者可以將基於ASP.NET的HTTP處理程序(作爲外觀)通過WCF服務提供給它們。如果您打算使用WCF並且圖像尺寸很大,那麼請考慮streaming。我更願意推薦一個外觀,因爲它可以幫助您在WCF世界之外移動一些重要的問題,如緩存和流式傳輸。所以在這種情況下,WCF服務將使用可能的最佳端點從數據存儲提供圖像數據。您的外觀HTTP處理程序將轉換必要的WCF服務調用中的url,獲取圖像數據,緩存到文件系統並提供給客戶端。隨後的請求將通過此緩存圖像提供。由於您使用URL並獲取請求,因此圖像也會在客戶端緩存(您可以通過在門面處理程序中發出明確的標題來控制此圖像)。通常,獲取圖像的請求將比請求更新數據高很多 - 通過通過不同的處理程序提供獲取請求,您可以獨立於WCF服務進行擴展。