2008-12-10 38 views
12

Tôi có một dự án và nó cần truy cập một lượng lớn dữ liệu độc quyền trong ASP.NET. Điều này đã được thực hiện trên Linux/PHP bằng cách tải dữ liệu trong bộ nhớ dùng chung. Tôi đã tự hỏi nếu cố gắng sử dụng Memory Mapped Files sẽ là con đường để đi, hoặc nếu có một cách tốt hơn với hỗ trợ tốt hơn. NET. Tôi đã nghĩ đến việc sử dụng Cache dữ liệu nhưng không chắc chắn về tất cả các cạm bẫy về kích thước dữ liệu được lưu trong Cache.Tập tin ánh xạ bộ nhớ .NET

Trả lời

10

Nếu bạn đang tìm thư viện Bộ nhớ được ánh xạ cho C#, hãy xem Tomas Restrepo's filemap trình bao bọc. Nó được cấp phép theo LGPL.

3

Bộ nhớ Các tệp được ánh xạ có thể được sử dụng khi bạn có một lượng lớn dữ liệu và không muốn chịu chi phí marshaling nó trên các ranh giới quy trình. Tôi đã sử dụng nó cho một mục đích tương tự. Bạn cần phải khá thoải mái với các khái niệm bộ nhớ không an toàn và được ghim trong .NET để tận dụng các MMF. Apparently, khối bộ nhớ đệm của Thư viện doanh nghiệp chứa mã bao bọc C# API cơ bản. Tôi đã thấy ít nhất một triển khai khác ở nơi khác.

Nếu bạn có thể sống với chi phí marshaling, nó có lẽ dễ dàng hơn và thanh lịch hơn để sử dụng một số loại giải pháp Remoting .NET.

1

Bạn có thể chỉ cần ném nó vào đối tượng Cache []. Bạn có thể đặt hết hạn bộ nhớ cache dựa trên tệp thực. Sau đó, bất cứ khi nào bạn sửa đổi các tập tin thực tế các nội dung sẽ được null cho các đối tượng trong bộ nhớ cache và bạn có thể tải lại nó. Điều này có thể không phù hợp nếu bạn đang xử lý một số lượng lớn 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)); 
} 

Tôi đoán tôi không có câu trả lời cụ thể về đặc điểm hiệu suất của bộ nhớ cache và lượng dữ liệu lớn. http://www.alachisoft.com/ncache/asp-net-cache.html Các quốc gia mà bạn nhận được từ 2 đến 3 hợp đồng biểu diễn không gian bộ nhớ cache phải được chia sẻ giữa ứng dụng của bạn và bộ nhớ cache.

Các vấn đề liên quan