回答
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr CreateFileMapping(
IntPtr hFile,
IntPtr lpFileMappingAttributes,
FileMapProtection flProtect,
uint dwMaximumSizeHigh,
uint dwMaximumSizeLow,
[MarshalAs(UnmanagedType.LPTStr)] string lpName);
在這裏看到更多的信息
http://www.pinvoke.net/default.aspx/kernel32.createfilemapping
和
http://msdn.microsoft.com/en-us/library/aa366551(v=vs.85).aspx
C#的食譜包含SharedMemoryManager的實現,你可以查看這裏: http://csharp.codefetch.com/example/p1/MutexFun/SharedMemoryManager.cs
企業庫有一個緩存應用程序塊在這裏看到:Microsoft Enterprise Library 5.0 – April 2010最新的版本(.NET 3.5和.NET 4)。如果你有要求較低舊版本也有這個緩存應用程序塊。
我知道ETLIB中的高速緩存塊,但對它的細節知之甚少......只是一個快速問題,如果您關心awnser,它是否能夠在應用程序域和進程之間共享高速緩存(在同一臺計算機上)這不是基於數據庫或文件? (AKA Shared Memory Backing Store)... 因爲現在飲料不多了,所以現在還沒有時間去研究它,但是如果我必須......但歡呼提醒我它已經存在。 – Jens 2011-04-01 18:46:02
@Jens - 我認爲你可以這樣做,並且緩存可以是,我引用「內存中或基於磁盤的文件或數據庫」(來自http://msdn.microsoft.com/zh-cn/ -us/library/ee658105.aspx),並且還可以擴展它。 – 2011-04-02 07:42:06
你有幾種選擇。
- 內存映射文件 - Working with memory mapped files in .NET 4
- IPC或RPC - Take a look at this examples
- DCOM - Distributed Component Object Model
- 機DLL - How do I share data in my DLL with an application or with other DLLs?
- 自己的數據共享/緩存窗口基於TCP/IP服務(套接字服務器) - WCF
我會選擇內存映射文件,因爲你會得到很多bette r演出。一切都取決於你想要達到的目標。看看.NET Framework 4.0。實施System.IO.MemoryMappedFile.
我看了那個,以及...內存映射的文件是想法,如果我不得不執行我的自我...希望能解決這個問題... 4.0實現看起來有點像我在現實中需要的東西......所以「在.NET 3.5中重新實現它」是不需要的......但是明天你會看到你的鏈接,我想我已經被其中的一些人看到了。當我寫信給另一個...我真的希望做一個快捷方式>。<。 – Jens 2011-04-01 18:47:53
- 1. 共享內存中高速緩存
- 2. 集羣共享高速緩存
- 3. activerecord內存共享緩存
- 4. CUDA共享內存速度
- 5. C共享內存
- 6. C++ InMemory高速緩存庫
- 7. 在內存中緩存數據共享
- 8. NGINX內存高速緩存時出現
- 9. 高速緩存內存大小限制
- 10. C++共享內存泄漏,如何清除共享內存?
- 11. 應用局部化行爲和共享高速緩存定位
- 12. JPA 2.0 <共享高速緩存模式>與javax.persistence.sharedCache.mode
- 13. 多核英特爾CPU如何共享高速緩存?
- 14. java高速緩存 - 在多個獨立java程序之間共享高速緩存
- 15. C#高速緩存未顯示存儲在高速緩存中的原始值
- 16. Facebook共享緩存
- 17. SQLite共享緩存
- 18. ASP.Net緩存共享
- 19. Java和C++共享內存
- 20. C內存共享問題
- 21. C#併發共享內存
- 22. C-fork()和共享內存
- 23. Apache Ignite C++,共享內存
- 24. 內存共享
- 25. MySQL高速緩存
- 26. 共享緩存共享模板?
- 27. 禁用高速緩存中的緩存
- 28. 使用spring高速緩存的屬性高速緩存
- 29. 元高速緩存或Codeigniter高速緩存
- 30. 從高速緩存下載圖像Android與高速緩存
你對「id索引」有什麼看法? – HABJAN 2011-04-01 17:39:49
猜測「相同的內存地址/ ID指向相同的內存位置」。 – Mario 2011-04-01 17:41:03
大多數我發現是基於對象的「字符串名稱」,並且這看起來像一個低效的映射,並且我正在使用int當前的基於磁盤的緩存。 – Jens 2011-04-01 18:41:05