簡體   English   中英

跨應用程序的ASP.NET MemoryCache共享

[英]ASP.NET MemoryCache Sharing Across Applications

我一直在各處閱讀有關從.Net Framework 4.0開始的新MemoryCache類的信息。 通過閱讀,您可以跨不同的.Net應用程序訪問MemoryCache。 我正在嘗試在Asp.Net應用程序和標准Windows窗體.Net應用程序之間共享一個對象。 如果將對象添加到.Net應用程序中的MemoryCache,則Asp.Net應用程序看不到它。 有什么辦法可以做到這一點? 謝謝您的寶貴時間,不勝感激。

Windows Form應用程序:

    Dim cache As ObjectCache = MemoryCache.Default
    Dim policy As New CacheItemPolicy()
    policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(60)
    cache.Set("testcache", TestObj, policy)

Asp.Net應用程序:

    Dim cache As ObjectCache = MemoryCache.Default
    If IsNothing(cache("testcache")) Then Response.Write("TestCache Is Nothing")

謝謝-瑞安

不,那不可能。 MemoryCache不是分布式緩存解決方案。 因此它將僅在本地可用。

如果您正在尋找分布式緩存替代方案,則可能需要研究AppFabricRedis

但是,以這種方式共享緩存聽起來確實有點奇怪。 也許暴露了一個共享服務層,即asp.net和winforms都消耗了,而僅由服務實現了緩存,這似乎更合乎邏輯(考慮到我實際上對您要解決的問題一無所知,所以我可以錯誤)。

出於性能原因,更常使用緩存,而不是將其作為在應用程序之間共享數據的一種方式。

MySQL內存表運行良好,並且具有出色的性能。 20/30插入一秒鍾,而CPU負載僅為1%左右。

我意識到此建議並不及時,但是對於其他閱讀此問題的人來說,另一個可能是兩個程序之間的進程間通信(IPC)。 這樣,兩個程序就可以直接交換消息/數據,而無需經過中間程序。

https://msdn.microsoft.com/zh-CN/library/windows/desktop/aa365574(v=vs.85).aspx

根據上面的文檔,這是您的一些選擇。

剪貼板COM數據復制DDE文件映射Mailslots管道RPC Windows套接字

在您的情況下,映射內存文件可能是最好的方法,因為它允許應用程序之間共享內存空間。 從根本上講,您的MySql / Redis方法可能沒有什么不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM