2010-02-16 66 views
2

我有一種情況,有關用戶的信息存儲在Web應用程序緩存中,並且該信息在一個應用程序中更新時 - 我想通知其他應用程序應該從緩存中刪除數據,以便刷新數據。基本上我需要保持跨多個asp.net應用程序同步緩存數據。在同一臺機器上的ASP.NET應用程序之間進行通信

我已經開始使用中央Web服務來協調通知,但事實證明它比我想的要複雜得多。

有沒有一種方法,一個asp.net應用程序可以很容易地跨越另一個在同一個盒子清除緩存中的項目?

有沒有比使用應用程序緩存更好的方式來實現共享緩存信息?

我真的想創建一種應用程序以鬆散耦合的方式進行通信的方式 - 我看着nservice總線,但依賴MSMQ嚇跑了我 - 我的客戶對MSMQ有不良的體驗,並且不想支持需要它的應用程序。

對此提出建議? 邁克爾

回答

1

有商業分佈式緩存可用於.net以外的Microsoft Velocity - NCache,Coherence等

+0

感謝您的參考 - 我會看看。我同意分發的緩存是理想的解決方案,並會看看我是否可以讓我的客戶同意我們需要實現一個緩存。 – MIantosca 2010-02-18 20:43:37

-1

什麼COM/DCOM,使用命名空間System.Runtime.Remoting

+0

Microsoft建議WCF而不是遠程處理。我個人不想做COM,除非沒有其他選擇(並且服務顯然是其他選項) – Murph 2010-02-16 16:58:29

+0

Remoting對我來說似乎是一個非常糟糕的主意。如果其中一個應用程序脫機,會發生什麼?當接收應用程序不立即響應時,呼叫應用程序應該做什麼。解決方案將是脆弱的,或者至少很難以不脆弱的方式構建它。 – Steven 2010-02-16 17:01:41

3

共享數據庫可能會導致你的最小疼痛。

編輯

注:ASP.NET使您可以 「清除緩存」 引發的SQL服務器的更改。應該快速搜索MSDN上的緩存示例以查找一些示例。因此,當存儲在緩存中的用戶信息在數據庫中發生變化時,本地緩存副本將清除並從數據庫重新加載。

+0

@霍根:我敢打賭表現。當不使用緩存時,所有應用程序始終保持最新狀態,但在這種情況下,每次請求都必須查詢數據源,這可能會導致性能問題。 – Steven 2010-02-16 17:04:00

+0

我實際上將一個自定義用戶主體存儲在緩存中 - 初始化主體的過程相當數據密集,所以我將其緩存20分鐘,以便後續請求不必擊中分貝。我想知道是否使用sql緩存依賴關係可以適用於這種情況。 – MIantosca 2010-02-16 17:05:26

+0

@Mlantosco:我確信它會 - 我曾經使用過類似的SSO自定義增強功能,它運行良好。由於您已經定製了身份驗證系統,所以您處於定製原則的好位置...... – Hogan 2010-02-16 17:18:03

3

我同意Hogan。最好的是使用共享數據庫。我想補充一點,在使用SQL Server時,可以使用SQL Cache Dependency。這種SQL Server機制允許以這樣的方式嚮應用程序發送通知,即在對數據進行更改後可以直接使用緩存。

+0

大聲笑 - 我剛剛編輯我的答案,指出有關SQL緩存依賴...以懶得到鏈接壽。 – Hogan 2010-02-16 17:14:08

0

Velocity怎麼樣?它是一個分佈式緩存,可以在服務器之間以及應用程序之間運行。它具有PowerShell管理和各種文檔,可以幫助您更快速地進行維護,並且可以長期維護。

+0

我不認爲AppFabric(現在是速度的一部分)已經發布 - 我喜歡使用像速度這樣的分佈式緩存,但我的客戶端不會去尋找非RC/RTW/RTM代碼,應用。我認爲它仍然在CTP – MIantosca 2010-02-16 19:27:40

相關問題