C # Shared Memory Cache - PullRequest
       23

C # Shared Memory Cache

2 голосов
/ 01 апреля 2011

Кто-нибудь знает реализацию с открытым исходным кодом в C #, использующую предварительную совместную память?.NET 4.0 (где у нас нет реализаций файлов с отображением в память.

Предпочтительно использовать индексы идентификаторов.

Ответы [ 3 ]

2 голосов
/ 01 апреля 2011
[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 # Cookbook содержит реализацию SharedMemoryManagerчто вы можете посмотреть здесь: http://csharp.codefetch.com/example/p1/MutexFun/SharedMemoryManager.cs

2 голосов
/ 01 апреля 2011

Корпоративная библиотека имеет блок приложения для кэширования. Смотрите здесь: Microsoft Enterprise Library 5.0 - апрель 2010 для последней версии (.NET 3.5 и .NET 4). В более старых версиях этот блок приложения для кэширования также имеется, если у вас более низкие требования.

1 голос
/ 01 апреля 2011

У вас есть несколько вариантов.

Я бы выбрал файлы с отображением в памяти, так как вы получите намного лучшую производительность. Все зависит от того, чего вы пытаетесь достичь. Взгляните на .NET Framework 4.0. реализация System.IO.MemoryMappedFile.

...