2008-12-10 235 views
12

我有一個項目,它需要訪問ASP.NET中的大量專有數據。這是通過在共享內存中加載數據在Linux/PHP上完成的。我想知道是否嘗試使用內存映射文件將是要走的路,或者如果有更好的.NET支持更好的方法。我正在考慮使用數據緩存,但不確定緩存中保存的所有數據大小的缺陷。內存映射文件.NET

回答

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個緩存空間的緩存空間。