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
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.
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.
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.
Tôi biết điều này là hơi muộn, nhưng khuôn khổ .NET 4.0 bây giờ hỗ trợ các file bộ nhớ ánh xạ ra khỏi hộp:
http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx
- 1. Khó đọc từ Tập tin Ánh xạ Bộ nhớ
- 2. Linux Bộ nhớ ánh xạ tập tin dự trữ rất nhiều bộ nhớ vật lý
- 3. Làm thế nào để không đồng bộ tuôn ra một tập tin ánh xạ bộ nhớ?
- 4. GPU - Ánh xạ bộ nhớ hệ thống
- 5. Các tệp ánh xạ bộ nhớ trong Java
- 6. Zero, một ánh xạ bộ nhớ lớn với `madvise`
- 7. sự khác biệt giữa bộ nhớ ánh xạ io và io ánh xạ io
- 8. Giám sát các tệp ánh xạ bộ nhớ trong Windows
- 9. Tệp bộ nhớ được ánh xạ trên Windows
- 10. ánh xạ tải Unity từ một tập tin XML
- 11. Làm thế nào để unmap một tập tin từ bộ nhớ ánh xạ bằng cách sử dụng FileChannel trong java?
- 12. Ưu điểm của tệp ánh xạ bộ nhớ là gì?
- 13. Cách mô phỏng ánh xạ bộ nhớ I/O
- 14. bắt segfault, bộ nhớ không ánh xạ lỗi
- 15. Cách bộ nhớ được ánh xạ khi sử dụng nĩa?
- 16. Nền tảng bộ nhớ độc lập được ánh xạ [file] IO
- 17. Hiệu suất của các tệp ánh xạ bộ nhớ Win32 so với CRT fopen/fread
- 18. tải .so tập tin từ bộ nhớ
- 19. Bộ nhớ cache tập tin Python
- 20. C - tạo tập tin trong bộ nhớ
- 21. Bộ nhớ ánh xạ MappedByteBuffer hoặc ByteBuffer trực tiếp để thực hiện DB?
- 22. Làm thế nào tôi có thể đọc nhanh byte từ một tệp ánh xạ bộ nhớ trong .NET?
- 23. Cách sử dụng các hoạt động liên khóa với các tệp ánh xạ bộ nhớ trong .Net
- 24. Tôi có thể nhận được đường dẫn cho Tệp Bộ nhớ được Ánh xạ không? (.NET 4.0)
- 25. Làm thế nào để xử lý song song dữ liệu trong tệp ánh xạ bộ nhớ
- 26. Các tệp được ánh xạ trên bộ nhớ: ưu và nhược điểm?
- 27. Bộ nhớ cache được ánh xạ trực tiếp Lượt truy cập/Miss
- 28. Sử dụng trình ánh xạ & bộ tập tin để sao chép các tệp vào một thư mục con khác?
- 29. Có sự khác biệt nào giữa tệp iostream được ánh xạ và tăng tệp ánh xạ interprocess không?
- 30. Hibernate tìm kiểu chung của một bộ sưu tập trong ánh xạ @OneToMany như thế nào?