2008-12-10 23 views
12

Tengo un proyecto y necesita acceder a una gran cantidad de datos de propiedad en ASP.NET. Esto se hizo en Linux/PHP cargando los datos en la memoria compartida. Me preguntaba si tratar de usar Memory Mapped Files sería el camino a seguir, o si hay una mejor manera con mejor soporte de .NET. Estaba pensando en usar la memoria caché de datos pero no estoy seguro de todos los inconvenientes del tamaño de los datos que se guardan en la memoria caché.Archivos de memoria asignados .NET

Respuesta

10

Si está buscando una biblioteca de memoria asignada para C#, eche un vistazo al contenedor Tomas Restrepo's filemap. Está licenciado bajo LGPL.

3

Memoria Los archivos asignados se pueden usar cuando tiene una gran cantidad de datos y no quiere incurrir en el costo de ordenarlos a través de los límites del proceso. Lo he usado para un propósito similar. Debes sentirte bastante cómodo con los conceptos de memoria insegura y anclada en .NET para aprovechar los archivos MMF. Apparently, el bloque de almacenamiento en caché de Enterprise Library contiene código que envuelve la API C# subyacente. He visto al menos otra implementación en otro lugar.

Si puede vivir con los costos de distribución, probablemente sea más fácil y más elegante utilizar algún tipo de solución .NET remota.

1

Es posible que desee arrojarlo en el objeto Caché []. Puede establecer una caducidad de caché basada en el archivo real. Luego, cada vez que modifique el archivo real, el contenido será nulo para el objeto en la memoria caché y podrá volver a cargarlo. Esto puede no ser apropiado si se trata de una gran cantidad de bytes.

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)); 
} 

Supongo que no tengo una respuesta específica sobre las características de rendimiento de la memoria caché y grandes cantidades de datos. http://www.alachisoft.com/ncache/asp-net-cache.html Indica que obtiene entre 2 y 3 gigas de espacio de caché que deben compartirse entre su aplicación y el caché.

Cuestiones relacionadas