Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ö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, .NET Framework uygulamalarında önbelleğe almayı kullanmanızı sağlayan sınıflar sağlar. Bu sınıflar System.Runtime.Caching ad alanında bulunur.
Uyarı
System.Runtime.Caching ad alanı .NET Framework 4'te yenidir. Bu ad alanı, önbelleğe alma özelliğinin tüm .NET Framework uygulamalarında kullanılabilmesini sağlar. .NET Framework'ün önceki sürümlerinde önbelleğe alma yalnızca System.Web ad alanında kullanılabilirdi ve bu nedenle ASP.NET sınıflarına bağımlılık gerektiriyordu.
Bu izlenecek yol, .NET Framework'te bir Windows Presentation Foundation (WPF) uygulamasının parçası olarak kullanılabilen önbelleğe alma işlevinin nasıl kullanılacağını gösterir. İzlenecek yolda, bir metin dosyasının içeriğini önbelleğe alırsınız.
Bu kılavuzda gösterilen görevler şunlardır:
WPF uygulama projesi oluşturma.
.NET Framework 4'e referans ekleme.
Önbelleği başlatma.
Metin dosyasının içeriğini içeren bir önbellek girdisi ekleme.
Önbellek girdisi için bir tahliye politikası sağlama.
Önbelleğe alınan dosyanın yolunu izleme ve izlenen öğedeki değişiklikler hakkında önbellek örneğine bildirme.
Önkoşullar
Bu kılavuzu tamamlamak için şunlar gerekir:
Visual Studio 2010.
Az miktarda metin içeren bir metin dosyası. (Metin dosyasının içeriğini bir ileti kutusunda görüntülersiniz.) İzlenecek yolda gösterilen kod, aşağıdaki dosyayla çalıştığınızı varsayar:
c:\cache\cacheText.txtAncak, bu kılavuzda herhangi bir metin dosyasını kullanabilir ve kodda küçük değişiklikler yapabilirsiniz.
WPF Uygulama Projesi Oluşturma
Bir WPF uygulama projesi oluşturarak başlayacaksınız.
WPF uygulaması oluşturmak için
Visual Studio'yu başlatın.
Dosya menüsünde, Yeni'e tıklayın ve ardından Yeni Projeöğesine tıklayın.
Yeni Proje iletişim kutusu görüntülenir.
Yüklü Şablonlar altında, kullanmak istediğiniz programlama dilini seçin ( Visual Basicveya Visual C# ). yeni proje
iletişim kutusunda WPF Uygulaması öğesini seçin.Uyarı
WPF Uygulaması şablonunu görmüyorsanız, WPF'yi destekleyen bir .NET Framework sürümünü hedeflediğinizden emin olun. Yeni Proje
iletişim kutusunda listeden .NET Framework 4'i seçin. Adı metin kutusuna projeniz için bir ad girin. Örneğin, WPFCaching'i girebilirsiniz.
Çözüm için dizin oluştur
onay kutusunu seçin. Tamam'a tıklayın.
WPF Tasarımcısı Tasarım görünümünde açılır ve MainWindow.xaml dosyasını görüntüler. Visual Studio, Projem klasörünü, Application.xaml dosyasını ve MainWindow.xaml dosyasını oluşturur.
.NET Framework'ü Hedefleme ve Önbelleğe Alma Derlemelerine Başvuru Ekleme
Varsayılan olarak, WPF uygulamaları .NET Framework 4 İstemci Profilini hedefler. WPF uygulamasında System.Runtime.Caching ad alanını kullanmak için uygulamanın .NET Framework 4'i (.NET Framework 4 İstemci Profili değil) hedeflemesi ve ad alanına bir başvuru içermesi gerekir.
Bu nedenle, sonraki adım .NET Framework hedefini değiştirmek ve System.Runtime.Caching ad alanına bir başvuru eklemektir.
Uyarı
.NET Framework hedefini değiştirme yordamı, Visual Basic projesinde ve Visual C# projesinde farklıdır.
Visual Basic'te hedef .NET Framework'ü değiştirmek için
Çözüm Gezgini 'nde proje adına sağ tıklayın ve ardından özellikleröğesine tıklayın. Uygulamanın özellikler penceresi görüntülenir.
Derle sekmesine tıklayın.
Pencerenin alt kısmında Gelişmiş Derleme Seçenekleri...tıklayın.
Gelişmiş Derleyici Ayarları iletişim kutusu görüntülenir.
Hedef çerçeve (tüm yapılandırmalar) listesinde .NET Framework 4'i seçin. (.NET Framework 4 İstemci Profili seçmeyin.)
Tamam'a tıklayın.
Hedef Çerçeve Değişikliği iletişim kutusu görüntülenir.
Hedef Çerçeve Değişikliği iletişim kutusunda Evet'etıklayın.
Proje kapatılır ve sonra yeniden açılır.
Aşağıdaki adımları izleyerek önbelleğe alma derlemesine bir başvuru ekleyin:
Çözüm Gezginiiçinde, projenin adına sağ tıklayın ve sonra Başvuru Ekleöğesine tıklayın.
.NET
sekmesini seçin, 'ı seçin ve ardından tamam tıklayın.
Visual C# projesinde hedef .NET Framework'leri değiştirmek için
Çözüm Gezgini 'nde proje adına sağ tıklayın ve ardından özellikleröğesine tıklayın. Uygulamanın özellikler penceresi görüntülenir.
Uygulama sekmesine tıklayın.
Hedef çerçeve listesinde .NET Framework 4'i seçin. (.NET Framework 4 İstemci Profili seçmeyin.)
Aşağıdaki adımları izleyerek önbelleğe alma derlemesine bir başvuru ekleyin:
Referanslar klasörüne sağ tıklayın ve Referans Ekleöğesine tıklayın.
.NET
sekmesini seçin, 'ı seçin ve ardından tamam tıklayın.
WPF Penceresine Düğme Ekleme
Ardından bir düğme denetimi ekleyecek ve düğmenin Click olayı için bir olay işleyicisi oluşturacaksınız. Daha sonra, düğmeye tıkladığınızda metin dosyasının içeriği önbelleğe alınacak ve görüntülenecek şekilde kod ekleyeceksiniz.
Düğme denetimi eklemek için
Çözüm GezginiMainWindow.xaml dosyasına çift tıklayarak açın.
Araç Kutusu'ndanOrtak WPF Denetimlerialtında,
Buttonbir denetimiMainWindowpenceresine sürükleyin.Özellikler penceresinde,
ContentdenetimininButtonözelliğini Önbelleği Alolarak ayarlayın.
Önbelleği Başlatma ve Girdiyi Önbelleğe Alma
Ardından, aşağıdaki görevleri gerçekleştirmek için kodu ekleyebilirsiniz:
Önbellek sınıfının bir örneğini oluşturun; yani yeni bir MemoryCache nesnesi örneği oluşturursunuz.
Önbelleğin metin dosyasındaki değişiklikleri izlemek için bir HostFileChangeMonitor nesnesi kullandığını belirtin.
Metin dosyasını okuyun ve içeriğini önbellek girdisi olarak önbelleğe alın.
Önbelleğe alınan metin dosyasının içeriğini görüntüleyin.
Önbellek nesnesini oluşturmak için
MainWindow.xaml.cs veya MainWindow.Xaml.vb dosyasında olay işleyicisi oluşturmak için yeni eklediğiniz düğmeye çift tıklayın.
Dosyanın en üstüne (sınıf bildiriminden önce), aşağıdaki
Imports(Visual Basic) veyausing(C#) deyimlerini ekleyin:using System.Runtime.Caching; using System.IO;Imports System.Runtime.Caching Imports System.IOOlay işleyicisinde, önbellek nesnesinin örneğini başlatmak için aşağıdaki kodu ekleyin:
ObjectCache cache = MemoryCache.Default;Dim cache As ObjectCache = MemoryCache.DefaultObjectCache sınıfı, bellek içi nesne önbelleği sağlayan yerleşik bir sınıftır.
filecontentsadlı önbellek girdisinin içeriğini okumak için aşağıdaki kodu ekleyin:Dim fileContents As String = TryCast(cache("filecontents"), String)string fileContents = cache["filecontents"] as string;filecontentsadlı önbellek girişinin mevcut olup olmadığını denetlemek için aşağıdaki kodu ekleyin:If fileContents Is Nothing Then End Ifif (fileContents == null) { }Belirtilen önbellek girdisi yoksa, metin dosyasını okumanız ve önbelleğe önbellek girdisi olarak eklemeniz gerekir.
if/thenbloğuna aşağıdaki kodu ekleyerek önbellek girişinin süresinin 10 saniye sonra dolacağını belirten yeni bir CacheItemPolicy nesnesi oluşturun.Dim policy As New CacheItemPolicy() policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0)CacheItemPolicy policy = new CacheItemPolicy(); policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0);Çıkarma veya süre sonu bilgisi sağlanmazsa, varsayılan değer InfiniteAbsoluteExpirationolur. Bu, önbellek girdilerinin hiçbir zaman yalnızca mutlak bir zamana bağlı olarak sona ermediği anlamına gelir. Bunun yerine, önbellek girdilerinin süresi yalnızca bellek baskısı olduğunda dolar. En iyi yöntem olarak, her zaman açıkça mutlak veya kayan süre sonu sağlamanız gerekir.
if/thenbloğunun içine ve önceki adımda eklediğiniz kodu izleyerek, izlemek istediğiniz dosya yolları için bir koleksiyon oluşturmak ve metin dosyasının yolunu koleksiyona eklemek için aşağıdaki kodu ekleyin:Dim filePaths As New List(Of String)() filePaths.Add("c:\cache\cacheText.txt")List<string> filePaths = new List<string>(); filePaths.Add("c:\\cache\\cacheText.txt");Uyarı
Kullanmak istediğiniz metin dosyası
c:\cache\cacheText.txtdeğilse, kullanmak istediğiniz metin dosyasının yolunu belirtin.Önceki adımda eklediğiniz kodun ardından, önbellek girdisinin değişiklik izleyicileri koleksiyonuna yeni bir HostFileChangeMonitor nesnesi eklemek için aşağıdaki kodu ekleyin:
policy.ChangeMonitors.Add(New HostFileChangeMonitor(filePaths))policy.ChangeMonitors.Add(new HostFileChangeMonitor(filePaths));HostFileChangeMonitor nesnesi metin dosyasının yolunu izler ve değişiklik olursa önbelleğe bildirir. Bu örnekte, dosyanın içeriği değişirse önbellek girdisinin süresi dolar.
Önceki adımda eklediğiniz kodun ardından, metin dosyasının içeriğini okumak için aşağıdaki kodu ekleyin:
fileContents = File.ReadAllText("c:\cache\cacheText.txt") & vbCrLf & DateTime.Now.ToString()fileContents = File.ReadAllText("c:\\cache\\cacheText.txt") + "\n" + DateTime.Now;Önbellek girişinin süresinin ne zaman dolacağını görebilmeniz için tarih ve saat zaman damgası eklenir.
Önceki adımda eklediğiniz kodun ardından, dosyanın içeriğini önbellek nesnesine CacheItem örneği olarak eklemek için aşağıdaki kodu ekleyin:
cache.Set("filecontents", fileContents, policy)cache.Set("filecontents", fileContents, policy);Daha önce oluşturduğunuz CacheItemPolicy nesnesini parametre olarak geçirerek önbellek girdisinin nasıl çıkarılacağı hakkında bilgi belirtirsiniz.
if/thenbloğundan sonra, önbelleğe alınan dosya içeriğini bir ileti kutusunda görüntülemek için aşağıdaki kodu ekleyin:MessageBox.Show(fileContents)MessageBox.Show(fileContents);Derleme menüsünde, projenizi oluşturmak için WPFCaching Oluştur'e tıklayın.
WPF Uygulamasında Önbelleğe Alma Testi
Artık uygulamayı test edebilirsiniz.
WPF uygulamasında önbelleğe almayı test etmek için
Uygulamayı çalıştırmak için CTRL+F5 tuşlarına basın.
MainWindowpenceresi görüntülenir.öğesine tıklayın, önbelleği alın.
Metin dosyasındaki önbelleğe alınan içerik bir ileti kutusunda görüntülenir. Dosyadaki zaman damgasına dikkat edin.
İleti kutusunu kapatın ve sonra Önbelleği Al'e tekrar tıklayın.
Zaman damgası değişmez. Bu, önbelleğe alınan içeriğin görüntülendiğini gösterir.
10 saniye veya daha fazla bekleyin ve ardından Önbelleği Al seçeneğine tekrar tıklayın.
Bu kez yeni bir zaman damgası görüntülenir. Bu, politikanın önbellek girdisinin süresinin dolmasına izin verdiğini ve yeni önbelleğe alınmış içeriğin görüntülendiğini gösterir.
Bir metin düzenleyicisinde, oluşturduğunuz metin dosyasını açın. Henüz herhangi bir değişiklik yapma.
İleti kutusunu kapatın ve sonra Önbelleği Al'e tekrar tıklayın.
Zaman damgasına yeniden dikkat edin.
Metin dosyasında bir değişiklik yapın ve dosyayı kaydedin.
İleti kutusunu kapatın ve sonra Önbelleği Al'e tekrar tıklayın.
Bu ileti kutusu, metin dosyasındaki güncelleştirilmiş içeriği ve yeni bir zaman damgasını içerir. Bu, mutlak zaman aşımı süresi dolmamış olsa bile, dosyayı değiştirdiğinizde konak dosyası değişiklik izleyicisinin önbellek girdisini hemen çıkardığını gösterir.
Uyarı
Çıkarma süresini 20 saniyeye veya daha fazla artırarak dosyada değişiklik yapmanıza daha fazla zaman tanıyabilirsiniz.
Kod Örneği
Bu kılavuzu tamamladıktan sonra, oluşturduğunuz projenin kodu aşağıdaki örneğe benzer.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Runtime.Caching;
using System.IO;
namespace WPFCaching
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
ObjectCache cache = MemoryCache.Default;
string fileContents = cache["filecontents"] as string;
if (fileContents == null)
{
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration =
DateTimeOffset.Now.AddSeconds(10.0);
List<string> filePaths = new List<string>();
filePaths.Add("c:\\cache\\cacheText.txt");
policy.ChangeMonitors.Add(new
HostFileChangeMonitor(filePaths));
// Fetch the file contents.
fileContents = File.ReadAllText("c:\\cache\\cacheText.txt") + "\n" + DateTime.Now.ToString();
cache.Set("filecontents", fileContents, policy);
}
MessageBox.Show(fileContents);
}
}
}
Imports System.Runtime.Caching
Imports System.IO
Class MainWindow
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim cache As ObjectCache = MemoryCache.Default
Dim fileContents As String = TryCast(cache("filecontents"), _
String)
If fileContents Is Nothing Then
Dim policy As New CacheItemPolicy()
policy.AbsoluteExpiration = _
DateTimeOffset.Now.AddSeconds(10.0)
Dim filePaths As New List(Of String)()
filePaths.Add("c:\cache\cacheText.txt")
policy.ChangeMonitors.Add(New _
HostFileChangeMonitor(filePaths))
' Fetch the file contents.
fileContents = File.ReadAllText("c:\cache\cacheText.txt") & vbCrLf & DateTime.Now.ToString()
cache.Set("filecontents", fileContents, policy)
End If
MessageBox.Show(fileContents)
End Sub
End Class
Ayrıca bakınız
- MemoryCache
- ObjectCache
- System.Runtime.Caching
- .NET Framework Uygulamalarında Önbelleğe Alma
.NET Desktop feedback