Aracılığıyla paylaş


.NET Framework Uygulamalarında Önbelleğe Alma

Önbelleğe Alma, hızlı erişim için verileri bellekte depolamanıza olanak tanır. Verilere yeniden erişildiğinde, uygulamalar verileri özgün kaynaktan almak yerine önbellekten alabilir. Bu, performansı ve ölçeklenebilirliği geliştirebilir. Ayrıca önbelleğe alma, veri kaynağı geçici olarak kullanılamadığında verileri kullanılabilir hale getirir.

.NET Framework, ASP.NET dahil olmak üzere hem Windows istemci hem de sunucu uygulamalarının performansını ve ölçeklenebilirliğini geliştirmek için kullanabileceğiniz önbelleğe alma işlevselliği sağlar.

Not

.NET Framework 3.5 ve önceki sürümlerinde, ASP.NET ad alanında System.Web.Caching bir bellek içi önbellek uygulaması sağladı. .NET Framework'ün önceki sürümlerinde önbelleğe alma yalnızca ad alanında System.Web kullanılabilirdi ve bu nedenle ASP.NET sınıflarına bağımlılık gerektiriyordu. .NET Framework 4'te, System.Runtime.Caching ad alanı hem Web uygulamaları hem de Web dışı uygulamalar için tasarlanmış API'ler içerir.

Verileri Önbelleğe Alma

Ad alanında sınıfları kullanarak bilgileri önbelleğe System.Runtime.Caching alabilirsiniz. Bu ad alanında önbelleğe alma sınıfları aşağıdaki özellikleri sağlar:

  • Özel önbellek uygulamaları oluşturmak için temel sağlayan soyut türler.

  • Somut bir bellek içi nesne önbelleği uygulaması.

Soyut temel önbelleğe alma sınıfı (ObjectCache) aşağıdaki önbelleğe alma görevlerini tanımlar:

  • Önbellek girdileri oluşturma ve yönetme.

  • Süre sonu ve çıkarma bilgilerini belirtme.

  • Önbellek girdilerindeki değişikliklere yanıt olarak tetiklenen olayları tetikleme.

MemoryCache sınıfı, sınıfının bellek içi nesne önbellek uygulamasıdırObjectCache. Çoğu önbelleğe alma görevi için sınıfını kullanabilirsiniz MemoryCache .

Not

MemoryCache sınıfı, ad alanında tanımlanan ASP.NET önbellek nesnesinde System.Web.Caching modellenmiştir. Bu nedenle, ASP.NET önceki sürümlerinde sağlanan mantığa benzer iç önbelleğe alma mantığı.

WPF uygulamasında önbelleğe almak için nasıl kullanılacağını gösteren bir örnek için bkz. İzlenecek Yol: WPF Uygulamasında Uygulama Verilerini Önbelleğe Alma.

ASP.NET Uygulamalarında Önbelleğe Alma

Ad alanında önbelleğe alma sınıfları System.Runtime.Caching , ASP.NET verileri önbelleğe almak için işlevsellik sağlar.

Not

Uygulamanız .NET Framework 3.5 veya önceki sürümleri hedef alıyorsa, ad alanında System.Web.Caching tanımlanan önbelleğe alma sınıflarını kullanmanız gerekir. Daha fazla bilgi için bkz. ASP.NET Önbelleğe Alma Genel Bakış.

Not

Yeni uygulamalar geliştirirken sınıfını MemoryCache kullanmanızı öneririz. Ad alanında System.Runtime.Caching sağlanan API, ad alanında sağlanan API'ye Cache benzer. Bu nedenle, ASP.NET önceki sürümlerinde önbelleğe alma kullandıysanız API tanıdık olacaktır. ASP.NET uygulamalarda önbelleğe alma özelliğinin nasıl kullanılacağına ilişkin bir örnek için bkz. İzlenecek Yol: ASP.NET'da Uygulama Verilerini Önbelleğe Alma.

Çıktı Önbelleği

Uygulama verilerini el ile önbelleğe almak için ASP.NET sınıfını MemoryCache kullanabilirsiniz. ASP.NET ayrıca sayfaların, denetimlerin ve HTTP yanıtlarının oluşturulan çıkışını bellekte depolayan çıktı önbelleğini de destekler. ASP.NET Web sayfasında veya Web.config dosyasındaki ayarları kullanarak çıkış önbelleğini bildirimli olarak yapılandırabilirsiniz. Daha fazla bilgi için bkz. önbelleğe alma için outputCache Öğesi (ASP.NET Ayarlar Şeması).

ASP.NET, özel çıkış önbelleği sağlayıcıları oluşturarak çıktı önbelleğini genişletmenize olanak tanır. Özel sağlayıcılar kullanarak diskler, bulut depolama ve dağıtılmış önbellek altyapıları gibi diğer depolama cihazlarını kullanarak önbelleğe alınmış içeriği depolayabilirsiniz. Özel çıkış önbelleği sağlayıcısı oluşturmak için sınıfından OutputCacheProvider türetilen bir sınıf oluşturur ve uygulamayı özel çıkış önbellek sağlayıcısını kullanacak şekilde yapılandırırsınız.

WCF REST Hizmetleri'nde Önbelleğe Alma

WCF REST hizmetleri için .NET Framework, ASP.NET'de kullanılabilen bildirim temelli çıktı önbelleğe alma özelliğinden yararlanmanızı sağlar. Bu, WCF REST hizmeti işlemlerinizden gelen yanıtları önbelleğe almanızı sağlar. Kullanıcı önbelleğe alma için yapılandırılmış bir hizmete HTTP GET isteği gönderdiğinde, ASP.NET önbelleğe alınan yanıtı geri gönderir ve hizmet yöntemi çağrılmaz. Önbelleğin süresi dolduktan sonra, bir kullanıcı bir sonraki HTTP GET isteği gönderdiğinde hizmet yönteminiz çağrılır ve yanıt yeniden önbelleğe alınır.

.NET Framework ayrıca koşullu HTTP GET önbelleği uygulamanıza da olanak tanır. REST senaryolarında, http belirtiminde açıklandığı gibi akıllı HTTP önbelleğe alma uygulamak için hizmetler tarafından genellikle koşullu HTTP GET isteği kullanılır. Daha fazla bilgi için bkz. WCF Web HTTP Hizmetleri için destek Önbelleğe Alma.

.NET Framework'te Önbelleğe Alma genişletme

.NET Framework'teki Önbelleğe Alma genişletilebilir olacak şekilde tasarlanmıştır. sınıfı, ObjectCache özel bir önbellek uygulaması oluşturmanıza olanak tanır. Bu sınıf, Windows Forms, Windows Presentation Foundation (WPF) ve Windows Communications Foundation (WCF) dahil olmak üzere tüm yönetilen uygulamalar için kullanılabilen üyeler sağlar. Bunu, farklı bir depolama mekanizması kullanan bir önbellek sınıfı oluşturmak için veya önbellek işlemleri üzerinde ayrıntılı denetim istiyorsanız yapabilirsiniz.

Önbelleğe alma süresini uzatmak için aşağıdakileri yapabilirsiniz:

  • sınıfından ObjectCache türetilen bir özel sınıf oluşturun ve sonra türetilmiş sınıfta özel bir önbellek uygulaması sağlayın.

  • sınıfından MemoryCache türetilen bir sınıf oluşturun ve türetilmiş sınıfı özelleştirin veya genişletin. Bunun nasıl yapıldığını gösteren bir örnek için bkz. ASP.NET Bir Uygulamada Birden Çok Önbellek Nesnesi Kullanarak Uygulama Verilerini Önbelleğe Alma.

  • sınıfından OutputCacheProvider türetilen bir sınıf oluşturun ve uygulamayı özel çıkış önbellek sağlayıcısını kullanacak şekilde yapılandırın.

Daha fazla bilgi için Scott Guthrie'nin blogundaki ASP.NET 4 (VS 2010 ve .NET Framework 4.0 Series) ile Genişletilebilir Çıkış Önbelleğe Alma girdisine bakın.

Ayrıca bkz.