2016-09-19 54 views
0

我有一個WCF服務。 WCF服務提供了一套直接與CRM對話的方法。我從這些服務獲得的大部分數據都是查找數據,我經常收到這些數據。這會降低性能,因爲我的網站中的單個表單包含從CRM獲取的多個查找。頻繁訪問WCF服務的最佳方式

爲了解決這個問題,我已經想到了:

*創建一個Windows服務,將抓住所有的數據並保存在本地數據庫中。該服務將在特定時間後運行,以確保所有數據同步。

*緩存數據。對於每次調用某個方法來檢索查詢類型時,數據都將被緩存,以便任何類似的調用都會返回緩存的數據。

我的問題是:

1-有沒有比這更好的方法?

2 - 如果不是,哪個更好?

回答

0

我不建議創建一個緩存服務來提供更快的CRM數據訪問。它只是一個具有持久性的遠程緩存,如同您提到的第二種方法,它也可以集成到您的wcf服務中。

如果您可以保證所選數據在從CRM系統中選擇例如1小時前仍然有價值,則您在此處使用緩存的方法是正確的。問題是,如果您的客戶錯過了最近一小時在CRM中可能做出的最新更改是可以接受的。 只是說 - >小心緩存。

我的提示: 如果您的wcf服務頻繁訪問頻率較高,例如每秒100 x,則5-10秒的緩存通常會減少訪問次數,因爲這不會極大地減少數據的實際情況。

但是:大部分數據庫系統和表都被設計爲提供快速的併發數據讀取訪問(f.e. paging)。例如,Ms-Sql存儲已知的,經常使用的腳本和存儲過程的執行計劃,以提高將來調用的性能。 因此,首先確保在引入緩存之前,您的CRM確實無法處理讀取訪問(應該經常謹慎使用)。

+0

正如我之前所說,我的大部分數據都是查詢,這意味着他們不會經常更改。我的緩存想法是緩存數據一天,如果客戶指出一些數據不斷變化,那麼我會改變過期。 – ykh

+0

如果適合您的客戶,應該是您的解決方案,是的。緩存鍵可以存儲過程/視圖/方法名稱+輸入參數。無論如何,您的密鑰的字符串長度是沒有問題的,因爲它在緩存中被散列(如果您正在使用MemoryCache f.e.) – KoPoCabana

相關問題