回答
[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