2012-12-20 91 views
2

我目前正在使用從一組wcf服務讀取數據的mvc4應用程序。目前,當用戶點擊頁碼時,如果觸發wcf請求以獲取頁面的不同部分的數據。我想改善它的表現。我們可以通過單個WCF調用來替換多個WCF調用嗎?

我的想法是,當用戶登錄一個頁面時,會進行一次wcf調用,它將檢索多個調用先前所做的所有必要數據,並將其中的數據放入用戶請求httpcontext中。

這是提高性能比單一的方法,但較大的wcf調用命名管道或命名管道下多個較小的調用?將大量數據放入httpcontext中是否有任何性能影響?

+0

如果您以異步方式進行多個呼叫,則可以獲得更高的吞吐量。 –

+0

多次調用不是在頁面生命週期的不同時間進行的,因此不可能做到以上。 – amateur

回答

1

我認爲你正試圖通過產生更多的問題來解決一個問題。 如果您一次查詢所有數據並存儲在httpcontext中,它將加快打開新頁面的性能,但第一次打開頁面所花費的時間會更長。另外,如果每個用戶在httpcontext中存儲數據時,一次只有很多用戶,則可能會導致內存不足。

我認爲首先您需要本地化問題並找出表現不佳的根本原因。它可能是一個查詢,也可能是一些數據庫鎖。 在任何情況下緩存是一個好主意,但不要使用httpcontext。使用ASP.NET cahe或像App Fabric這樣的分佈式緩存。這些工具將爲您提供許多內置功能,並且隨後您可以更輕鬆地擴展您的應用程序。

希望它有幫助。

+0

感謝您的反饋 - 我已將數據緩存並正在考慮將其讀入用戶上下文中,以便每次請求都能輕鬆訪問。是的,該網站將被大量訪問。根據你所說的在上下文中持有物品有內存影響?另外,您是否可以解釋以下內容,因爲我不明白「如果您一次查詢所有數據並存儲在httpcontext中,它將加快打開新頁面的性能,但第一次打開該頁面所需的時間會更長。」 。 – amateur

+0

據我瞭解,你有一個網頁,其中包含一些按頁面分割的數據。當用戶點擊頁碼鏈接時,您將進行WCF服務調用以獲取特定頁面的數據。因此,當用戶登錄您的網頁時,您只會收到第一頁的數據。對?如果是的話,那麼如果你在第一次打開你的網頁時得到所有的數據,它將比獲得第一頁數據花費更多的時間。 –

相關問題