2013-06-12 63 views
2

我有一個關於MVC體系結構的問題。MVC控制器中的私有變量

我有一個從WCF服務收集數據的類,我們稱之爲'WCFDataAccess'。這個類暴露了許多不同的方法來獲取或設置數據。

MVC中的家庭控制器的內部我經常需要使用這個'WCFDataAccess'類來收集每個路由的數據。

索引路由可能會創建WCFDataAccess對象的實例並收集數據。不同的路由,比如'IndexDetails'也需要創建一個WCFDataAccess對象的實例來收集數據。

我可以共享一個'WCFDataAccess'類的實例:將它作爲一個私有變量放在Home控制器中,而不會對性能產生負面影響?如果兩個請求同時進入控制器類,那麼如何使用私有變量工作?

另一個想法是使用HttpContext.Current.Cache類。

有什麼建議嗎?

謝謝!

回答

4

在控制器內使您的對象保持私密不會讓使其在請求中共享。將爲每個請求創建對象的新實例。

構建這個對象時,您想讓它共享嗎?如果它只是實例化一個應該相當輕量級的Web服務客戶端,並且根據請求重新創建它應該不會導致任何性能下降。

+0

感謝您的回覆@ Ek0nomik 我同意,目前的實現工作,並且構造函數不是很重。我試圖看看是否有更好的方法去做,而不是每次重新初始化課程。 – user959729

+0

我不認爲每次創建新實例都有什麼問題。 .NET框架爲每個請求在後臺創建對象的新實例。如果你真的認爲你可以擠出一些性能汁液,那麼我會建議看看使用靜態類。 –