2008-12-10 7 views
12

У меня есть проект и ему нужно получить доступ к большому количеству запатентованных данных в ASP.NET. Это было сделано на Linux/PHP, загрузив данные в общую память. Мне было интересно, будет ли попытка использовать файлы с памятью в MAP, или если есть лучший способ с лучшей поддержкой .NET. Я думал об использовании Data Cache, но не уверен в всех ошибках в отношении размера данных, сохраняемых в кэше.Файлы с отображением памяти .NET

ответ

10

Если вы ищете библиотеку с отображением памяти для C#, загляните в обложку Tomas Restrepo's filemap. Он лицензирован под LGPL.

3

Файлы с отображением памяти могут использоваться, когда у вас большой объем данных, и вы не хотите брать на себя затраты на его маршалинг через границы процесса. Я использовал его для аналогичной цели. Вы должны быть достаточно комфортно с небезопасными и закрепленными концепциями памяти в .NET, чтобы использовать MMF. Apparently, блок кэширования корпоративной библиотеки содержит код, который обертывает базовый C# API. Я видел, по крайней мере, еще одну реализацию в другом месте.

Если вы можете жить с затратами на маршалинг, возможно, проще и элегантнее использовать какое-то решение для удаленного доступа .NET.

1

Возможно, вы захотите просто выбросить его в объект Cache []. Вы можете установить срок действия кеша на основе реального файла. Затем, когда вы изменяете фактический файл, содержимое будет нулевым для объекта в кеше, и вы можете его перезагрузить. Это может оказаться неприемлемым, если вы имеете дело с большим количеством байтов.

byte[] fileBytes = Cache["fileBytes"]; 
if (null == fileBytes) { 
    // reload the file and add it to the cache. 
    string fileLocation = Server.MapPath("path/to/file.txt"); 
    // Just a same of some bytes. 
    fileBytes = new byte[10]; 
    Cache.Insert(fileLocation, fileBytes, new System.Web.Caching.CacheDependency(fileLocation)); 
} 

У меня нет конкретного ответа о характеристиках производительности кеша и больших объемах данных. http://www.alachisoft.com/ncache/asp-net-cache.html Указывает, что вы получаете от 2 до 3 гигабайт пространства кеша, которые должны быть разделены между вашим приложением и кешем.

 Смежные вопросы

  • Нет связанных вопросов^_^