Net, файли, які відображаються в пам’ять

Для тих, хто мав справу тільки з керованим кодом, файли, які відображаються в пам'ять (memory mapped file - MMF). можуть бути новим поняттям. В .NET Framework 4 файли MMF є частиною набору інструментів для побудови додатків і знаходяться в новому просторі імен System.IO.MemoryMappedFiles.

Використовувати файли MMF можна було завжди за рахунок виконання викликів платформи (P / Invoke) Windows API, а з появою простору імен System.IO.MemoryMappedFiles робота з файлами MMF стала можливою в керованому коді.

Файли MMF є практично ідеальним рішенням, коли програму слід частий або довільний доступ до файлів. При такому підході можна завантажувати частину чи весь файл в сегмент віртуальної пам'яті, де він виглядає для додатка так, нібито міститься в основній пам'яті.

Цікаво також те, що цей файл в пам'яті можна використовувати в якості загального ресурсу, доступного більш ніж одному процесу. Раніше за допомогою Windows Communication Foundation (WCF) або Named Pipes можна було організувати взаємодію із загальним ресурсом з кількох процесів, а тепер з'явилася можливість забезпечити спільне використання файлу MMF процесами з використанням загального імені.

При роботі з файлами MMF доводиться мати справу з двома об'єктами. Першим є екземпляр файлу MMF, який завантажує файл, а другим - об'єкт, що забезпечує доступ до нього. У наступному коді виконується запис в об'єкт файлу MMF, а потім його читання. Крім того, запис також відбувається і при звільненні об'єкта:

В даному випадку відображається в пам'ять об'єкт створюється з фізичного файлу за допомогою методу CreateFromFile (). Крім самого файлу MMF необхідно створити також і об'єкт для доступу до нього. Це робиться в такий спосіб:

Після створення об'єкта для доступу можна переходити безпосередньо до запису або читання.

клас MemoryStream