2011-05-20 80 views
0

我正在尋找一些幫助,圍繞一個很好的方法/體系結構來處理我的ASP.NET MVC 2應用程序中的圖像。該應用程序是封裝我們的域邏輯和規則的中間層Web服務應用程序的客戶端。這些圖像存儲在只能通過Web服務訪問的後端數據庫中。多層ASP.NET MVC 2應用程序中的圖像處理

爲了便於討論,我們將使用具有關聯圖像的產品的經典案例。每當我顯示有關產品的信息時,我也會顯示圖像。因此,例如,在查看產品列表以供管理員進行編輯時,我會將圖像和產品名稱顯示爲超鏈接。編輯時,用戶可以看到現有的圖像並上傳替換。當用戶瀏覽產品列表或查看他們的「購物車」中的物品時,我還會顯示圖像。

不用說,我必須獲得很多圖像數據。 (是的,緩存將是解決方案的一部分,但不是我問題的一部分。)

我的第一項任務是創建控制器和視圖,用於編輯包含上載圖像的產品數據的產品數據。我遵循Pro ASP.NET MVC 2框架中描述的方法,其中將圖像元素的src設置爲返回圖像數據的控制器操作。控制器在其構造函數中接收對ProductManagementServiceAgent的引用,並委託處理對Web服務的調用的代理。這很好,但是,當然,這意味着兩次調用服務來顯示信息。

接下來我必須向管理員顯示包含圖像的產品列表。在這種情況下,這不是一個問題,因爲我使用相同的控制器執行相同的操作,所以我可以使用相同的方法。不幸的是,現在我正在對該服務進行「n + 1」呼叫。

當我找出如何最好地處理需要顯示圖像的所有其他用例時,我的困惑就來了。例如,在'購物車'內。我的ShoppingCartController是否也應引用ProductManagementServiceAgent並使用相同的方法來檢索產品圖像?這意味着任何顯示產品圖像的控制器都必須引用代理,是的?

讓我困擾的第一件事就是我不喜歡在類中注入多個依賴關係,如果我真的不需要在構造函數中將長參數列表看作臭味代碼(告訴我對象正在嘗試做太多)。另外,ProductManagementServiceAgent真的是用於管理界面,所以也許不同的代理會更好?還是採用不同的方法?

我不得不認爲其他人已經制定了這個領域,所以我很欣賞任何智慧讓我朝着正確的方向前進。

回答

0

我其實去了一個建議沒有發佈到這個網站,所以我不能給予適當的功勞。簡而言之,當需要圖像時,我們在控制器上公開其他操作。因此,例如,我們的ProductController有一個ProductImage操作方法,它接受產品ID並返回圖像。它似乎滿足我們的需求。

0

有一個專門的圖像控制器。

它將有一個依賴項 - ProductManagementServiceAgent。

緩存服務器端和客戶端以最小化請求。

相關問題