Bir projem var ve ASP.NET'teki büyük miktarda özel verilere erişmesi gerekiyor. Bu, paylaşımlı belleğe veri yükleyerek Linux/PHP üzerinde yapıldı. Memory Mapped Files'ı kullanmaya çalışmanın mı yoksa daha iyi bir .NET desteğiyle daha iyi bir yol olup olmadığını merak ediyordum. Veri Önbelleğini kullanmayı düşünüyordum, ancak Önbellekte saklanan veri boyutundaki tüm tuzaklardan emin değilim.Bellek Eşlenen Dosyalar .NET
cevap
C# için Bellek Eşlenmiş bir kitaplık arıyorsanız, Tomas Restrepo's filemap sarıcısına bir göz atın. LGPL kapsamında lisanslıdır.
Bellek Eşlenen dosyalar, çok miktarda veri olduğunda ve işlem sınırları boyunca bu ürünlerin fiyatlandırılması maliyetine katlanmak istemediğinizde kullanılabilir. Bunu benzer bir amaç için kullandım. MMF'lerden yararlanmak için .NET'teki güvenli olmayan ve sabitlenmiş bellek kavramlarıyla oldukça rahat olmanız gerekir. Apparently, Enterprise Library'nin önbelleğe alma bloğu, temel C# API'yi saran bir kod içerir. Başka bir yerde en az bir başka uygulama gördüm.
Satış maliyetiyle yaşayabiliyorsanız, bir çeşit .NET remoting çözümü kullanmak daha kolay ve daha zarif olur.
Sadece önbellek [] nesnesine atmak isteyebilirsiniz. Gerçek dosyaya göre bir önbellek son kullanma tarihi belirleyebilirsiniz. Daha sonra, gerçek dosyayı değiştirdiğinizde, içerik önbellekteki nesne için boş olacak ve yeniden yükleyebilirsiniz. Çok sayıda baytla uğraşırken bu uygun olmayabilir.
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));
}
Önbelleğin performans özellikleri ve büyük miktarda veri hakkında belirli bir cevabım yok. http://www.alachisoft.com/ncache/asp-net-cache.html Uygulamanız ve önbellek arasında paylaşılması gereken 2 ile 3 gr önbellek alanı arasında aldığınız durumlar.
Ben bunu biraz geç olduğunu biliyorum ama .NET 4.0 framework artık kutudan bellek eşlemeli dosyaları destekler:
http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx
- 1. Bellek eşlenen alan
- 2. Windows Bellek Eşlenen Dosyalarını İzleme
- 3. Bellek eşlemeli dosyalar: bellek kullanımını izleme
- 4. . Net bellek geri alınmıyor
- 5. Eşlenen tablo
- 6. Sharepoint sp2010 _Layouts eşlenen klasör
- 7. Maksimum Bellek a .NET işlemi
- 8. .net uygulamasını dağıtmak için gerekli dosyalar
- 9. Bellek altında bir işlem tarafından kullanılan bellek os x
- 10. Eşlenen ağ sürücüsündeki FileSystemWatcher
- 11. SQLite bellek içi veritabanı yedekleme. NET
- 12. .NET Framework - Olası bellek sızıntısı sınıfları?
- 13. Eşlenen ağ sürücüsüne ColdFusion'dan erişme
- 14. .NET
- 15. Emgu CV - bellek sızıntıları (bellek tüketimi)
- 16. Merging 3 farklı dosyalar
- 17. WebApi ve Eşlenen Modellerle OData Uygulanması
- 18. Harici kaynaklarda konsol dosyası eşlenen dosyasını açın
- 19. Kontrol Varlık eşlenen birimlerin listesine ise
- 20. Eşlenen ağ sürücüleri C# olarak listelenemez
- 21. Kullanıcı olarak çalışırken eşlenen sürücüye erişim
- 22. Python Win32 - DriveInfo Üzerinde Eşlenen Sürücü
- 23. CSS Dosyalar/
- 24. belirli dosyalar
- 25. Bellek eşlemeli dosyalara karşı kilitli işlemler nasıl kullanılır. Net
- 26. .Net Bellek Sızıntısı Çok sayıda iş parçacığı oluştururken
- 27. Her bir nesnenin aldığı bellek miktarı nasıl ölçülür .NET
- 28. . Net/PowerShell için bellek içi veritabanında iyi mi?
- 29. Belirli bir .NET uygulamasında bellek ayırmayı nasıl görebilirim?
- 30. Eşlenen ağ sürücüsünün mevcut olup olmadığını kontrol edin