2008-12-10 38 views
12

Ho un progetto e ha bisogno di accedere a una grande quantità di dati proprietari in ASP.NET. Questo è stato fatto su Linux/PHP caricando i dati nella memoria condivisa. Mi chiedevo se provare a utilizzare Memory Mapped Files sarebbe la strada da percorrere, o se c'è un modo migliore con un migliore supporto .NET. Stavo pensando di usare Data Cache ma non sono sicuro di tutte le insidie ​​della dimensione dei dati salvati nella cache.File mappati in memoria .NET

risposta

10

Se stai cercando una libreria Memory Mapped per C#, dai uno sguardo al wrapper Tomas Restrepo's filemap. È concesso in licenza sotto licenza LGPL.

3

I file di memoria mappati possono essere utilizzati quando si dispone di una grande quantità di dati e non si desidera sostenere il costo del marshalling attraverso i limiti del processo. L'ho usato per uno scopo simile. È necessario essere abbastanza a proprio agio con concetti di memoria non sicuri e bloccati in .NET per sfruttare gli MMF. Apparently, il blocco di memorizzazione nella cache della Enterprise Library contiene codice che racchiude l'API C# sottostante. Ho visto almeno un'altra implementazione altrove.

Se è possibile convivere con il costo del marshalling, è probabilmente più semplice ed elegante utilizzare una soluzione di remoting .NET.

1

Si consiglia di lanciarlo nell'oggetto Cache []. È possibile impostare una scadenza della cache basata sul file reale. Quindi, ogni volta che si modifica il file effettivo, i contenuti saranno nulli per l'oggetto nella cache e sarà possibile ricaricarlo. Questo potrebbe non essere appropriato se hai a che fare con un numero elevato di byte.

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

Immagino di non avere una risposta specifica sulle caratteristiche di prestazioni della cache e grandi quantità di dati. http://www.alachisoft.com/ncache/asp-net-cache.html Dichiara di ottenere tra 2 e 3 concerti di spazio nella cache che devono essere condivisi tra l'applicazione e la cache.

Problemi correlati