Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Caching memungkinkan Anda menyimpan data dalam memori untuk akses cepat. Ketika data diakses lagi, aplikasi bisa mendapatkan data dari cache alih-alih mengambilnya dari sumber asli. Hal ini dapat meningkatkan performa dan skalabilitas. Selain itu, penyimpanan sementara membuat data tersedia saat sumber data sementara tidak tersedia.
.NET Framework menyediakan kelas yang memungkinkan Anda menggunakan caching di aplikasi .NET Framework. Kelas-kelas ini terletak di namespace System.Runtime.Caching.
Nota
Namespace System.Runtime.Caching baru di .NET Framework 4. Namespace ini membuat caching tersedia untuk semua aplikasi .NET Framework. Dalam versi .NET Framework sebelumnya, cache hanya tersedia di ruang nama System.Web dan karenanya memerlukan ketergantungan pada kelas ASP.NET.
Panduan ini menunjukkan cara menggunakan fungsi cache yang tersedia di .NET Framework dalam aplikasi Windows Presentation Foundation (WPF). Dalam panduan, Anda menyimpan cache konten file teks.
Tugas yang diilustrasikan dalam panduan ini meliputi yang berikut ini:
Membuat proyek aplikasi WPF.
Menambahkan referensi ke .NET Framework 4.
Menginisialisasi cache.
Menambahkan entri cache yang berisi konten file teks.
Memberikan kebijakan pemindahan untuk entri cache.
Memantau jalur file cache dan memberi tahu instans cache tentang perubahan pada item yang dipantau.
Prasyarat
Untuk menyelesaikan panduan ini, Anda akan memerlukan:
Visual Studio 2010.
File teks yang berisi sejumlah kecil teks. (Anda akan menampilkan konten file teks dalam kotak pesan.) Kode yang diilustrasikan dalam panduan mengasumsikan bahwa Anda bekerja dengan file berikut:
c:\cache\cacheText.txtNamun, Anda dapat menggunakan file teks apa pun dan membuat perubahan kecil pada kode dalam panduan ini.
Membuat Proyek Aplikasi WPF
Anda akan mulai dengan membuat proyek aplikasi WPF.
Untuk membuat aplikasi WPF
Mulai Visual Studio.
Pada menu File , klik Baru , lalu klik Proyek Baru .
Kotak dialog Proyek Baru ditampilkan.
Di bawah templat Terinstal, pilih bahasa pemrograman yang ingin Anda gunakan (Visual Basic atau Visual C#).
Dalam kotak dialog Proyek Baru, pilih Aplikasi WPF.
Nota
Jika Anda tidak melihat templat Aplikasi WPF
, pastikan Anda menargetkan versi .NET Framework yang mendukung WPF. Dalam kotak dialog Proyek Baru, pilih .NET Framework 4 dari daftar. Dalam kotak teks Nama
, masukkan nama untuk proyek Anda. Misalnya, Anda dapat memasukkan WPFCaching. Pilih kotak centang Buat direktori untuk solusi.
Klik OK.
Perancang WPF terbuka dalam tampilan Desain dan menampilkan file MainWindow.xaml. Visual Studio membuat folder My Project, file Application.xaml, dan file MainWindow.xaml.
Menargetkan .NET Framework dan Menambahkan Referensi ke Rakitan Caching
Secara default, aplikasi WPF menargetkan Profil Klien .NET Framework 4. Untuk menggunakan namespace System.Runtime.Caching dalam aplikasi WPF, aplikasi harus menargetkan .NET Framework 4 (bukan Profil Klien .NET Framework 4) dan harus menyertakan referensi ke namespace.
Oleh karena itu, langkah selanjutnya adalah mengubah target .NET Framework dan menambahkan referensi ke namespace System.Runtime.Caching.
Nota
Prosedur untuk mengubah target .NET Framework berbeda dalam proyek Visual Basic dan dalam proyek Visual C#.
Untuk mengubah target .NET Framework di Visual Basic
Di Solutions Explorer, klik kanan nama proyek, lalu klik Properties.
Jendela properti untuk aplikasi ditampilkan.
Klik tab Kompilasi.
Di bagian bawah jendela, klik Opsi Kompilasi Tingkat Lanjut....
Kotak dialog Pengaturan Pengkompilasi Tingkat Lanjut ditampilkan.
Dalam daftar kerangka kerja target (semua konfigurasi), pilih .NET Framework 4. (Jangan pilih Profil Klien .NET Framework 4.)
Klik OK.
Kotak dialog Perubahan Kerangka Kerja Target ditampilkan.
Dalam kotak dialog Perubahan Kerangka Kerja Target
, klik Ya .Proyek ditutup dan kemudian dibuka kembali.
Tambahkan referensi ke assembly cache dengan mengikuti langkah-langkah berikut:
Di Penjelajah Solusi, klik kanan nama proyek lalu klik Tambahkan Referensi.
Pilih tab .NET
, pilih , lalu klik OK .
Untuk mengubah target .NET Framework dalam proyek Visual C#
DiPenjelajah Solusi
, klik kanan nama proyek lalu klik properti . Jendela properti untuk aplikasi ditampilkan.
Klik tab Aplikasi.
Dalam daftar kerangka kerja Target
, pilih .NET Framework 4. (Jangan pilih Profil Klien .NET Framework 4.) Tambahkan referensi ke assembly cache dengan mengikuti langkah-langkah berikut:
Klik kanan folder References lalu klik Tambahkan Referensi.
Pilih tab .NET
, pilih , lalu klik OK .
Menambahkan Tombol ke Jendela WPF
Selanjutnya, Anda akan menambahkan kontrol tombol dan membuat penanganan aktivitas untuk peristiwa Click tombol. Nantinya Anda akan menambahkan kode ke sehingga ketika Anda mengklik tombol, konten file teks di-cache dan ditampilkan.
Untuk menambahkan kontrol tombol
Di Penjelajah Solusi, klik dua kali file MainWindow.xaml untuk membukanya.
DariKotak Alat
, di bawahKontrol WPF Umum , seret kontrol ke jendela . Di jendela Properti, atur properti
ContentkontrolButtonke Ambil Cache.
Menginisialisasi Cache dan Meng-cache Entri
Selanjutnya, Anda akan menambahkan kode untuk melakukan tugas berikut:
Buat instans kelas cache—yaitu, Anda akan membuat instans objek MemoryCache baru.
Tentukan bahwa cache menggunakan objek HostFileChangeMonitor untuk memantau perubahan dalam file teks.
Baca file teks dan cache kontennya sebagai entri cache.
Tampilkan isi file teks yang di-cache.
Untuk membuat objek cache
Klik dua kali tombol yang baru saja Anda tambahkan untuk membuat penanganan aktivitas di file MainWindow.xaml.cs atau MainWindow.Xaml.vb.
Di bagian atas file (sebelum deklarasi kelas), tambahkan pernyataan
Imports(Visual Basic) atauusing(C#) berikut:using System.Runtime.Caching; using System.IO;Imports System.Runtime.Caching Imports System.IODi penanganan aktivitas, tambahkan kode berikut untuk membuat instans objek cache:
ObjectCache cache = MemoryCache.Default;Dim cache As ObjectCache = MemoryCache.DefaultKelas ObjectCache adalah kelas bawaan yang menyediakan cache objek dalam memori.
Tambahkan kode berikut untuk membaca konten entri cache bernama
filecontents:Dim fileContents As String = TryCast(cache("filecontents"), String)string fileContents = cache["filecontents"] as string;Tambahkan kode berikut untuk memeriksa apakah entri cache bernama
filecontentsada:If fileContents Is Nothing Then End Ifif (fileContents == null) { }Jika entri cache yang ditentukan tidak ada, Anda harus membaca file teks dan menambahkannya sebagai entri cache ke cache.
Di blok
if/then, tambahkan kode berikut untuk membuat objek CacheItemPolicy baru yang menentukan bahwa entri cache kedaluwarsa setelah 10 detik.Dim policy As New CacheItemPolicy() policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0)CacheItemPolicy policy = new CacheItemPolicy(); policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0);Jika tidak ada informasi pengeluaran atau kedaluwarsa yang disediakan, defaultnya adalah InfiniteAbsoluteExpiration, yang berarti entri cache tidak pernah kedaluwarsa hanya berdasarkan waktu absolut. Sebaliknya, entri cache hanya kedaluwarsa ketika ada tekanan memori. Sebagai praktik terbaik, Anda harus selalu secara eksplisit menetapkan kedaluwarsa absolut atau kedaluwarsa bergeser.
Di dalam blok
if/thendan mengikuti kode yang Anda tambahkan di langkah sebelumnya, tambahkan kode berikut untuk membuat koleksi untuk jalur file yang ingin Anda pantau, dan untuk menambahkan jalur file teks ke koleksi: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");Nota
Jika file teks yang ingin Anda gunakan tidak
c:\cache\cacheText.txt, tentukan jalur tempat file teks yang ingin Anda gunakan.Mengikuti kode yang Anda tambahkan di langkah sebelumnya, tambahkan kode berikut untuk menambahkan objek HostFileChangeMonitor baru ke kumpulan monitor perubahan untuk entri cache:
policy.ChangeMonitors.Add(New HostFileChangeMonitor(filePaths))policy.ChangeMonitors.Add(new HostFileChangeMonitor(filePaths));Objek HostFileChangeMonitor memantau jalur file teks dan memberi tahu cache jika perubahan terjadi. Dalam contoh ini, entri cache akan kedaluwarsa jika konten file berubah.
Mengikuti kode yang Anda tambahkan di langkah sebelumnya, tambahkan kode berikut untuk membaca konten file teks:
fileContents = File.ReadAllText("c:\cache\cacheText.txt") & vbCrLf & DateTime.Now.ToString()fileContents = File.ReadAllText("c:\\cache\\cacheText.txt") + "\n" + DateTime.Now;Tanda waktu dan tanggal ditambahkan sehingga Anda akan dapat melihat kapan entri cache kedaluwarsa.
Mengikuti kode yang Anda tambahkan di langkah sebelumnya, tambahkan kode berikut untuk menyisipkan konten file ke dalam objek cache sebagai instans CacheItem:
cache.Set("filecontents", fileContents, policy)cache.Set("filecontents", fileContents, policy);Anda menentukan informasi tentang bagaimana entri cache harus dikeluarkan dengan meneruskan objek CacheItemPolicy yang Anda buat sebelumnya sebagai parameter.
Setelah blok
if/then, tambahkan kode berikut untuk menampilkan konten file yang di-cache dalam kotak pesan:MessageBox.Show(fileContents)MessageBox.Show(fileContents);Di menu Build, klik Build WPFCaching untuk membuat proyek Anda.
Menguji Cache di Aplikasi WPF
Anda sekarang dapat menguji aplikasi.
Untuk menguji caching di aplikasi WPF
Tekan CTRL+F5 untuk menjalankan aplikasi.
Jendela
MainWindowtersebut ditampilkan.Klik Dapatkan Cache.
Konten yang di-cache dari file teks ditampilkan dalam kotak pesan. Perhatikan tanda waktu pada file.
Tutup kotak pesan lalu klik Dapatkan Cache lagi.
Tanda waktu tidak berubah. Ini menunjukkan konten yang di-cache ditampilkan.
Tunggu 10 detik atau lebih lalu klik Dapatkan Cache lagi.
Kali ini tanda waktu baru ditampilkan. Ini menunjukkan bahwa kebijakan membiarkan entri cache kedaluwarsa dan konten cache baru ditampilkan.
Di editor teks, buka file teks yang Anda buat. Jangan membuat perubahan apa pun.
Tutup kotak pesan lalu klik Dapatkan Cache lagi.
Perhatikan tanda waktu lagi.
Buat perubahan pada file teks lalu simpan file.
Tutup kotak pesan lalu klik Dapatkan Cache lagi.
Kotak pesan ini berisi konten yang diperbarui dari file teks dan tanda waktu baru. Ini menunjukkan bahwa monitor perubahan file host segera mengeluarkan entri cache ketika Anda mengubah file, meskipun periode batas waktu absolut belum kedaluwarsa.
Nota
Anda dapat meningkatkan waktu pengeluaran menjadi 20 detik atau lebih untuk memungkinkan lebih banyak waktu bagi Anda untuk membuat perubahan dalam file.
Contoh Kode
Setelah Anda menyelesaikan panduan ini, kode untuk proyek yang Anda buat akan menyerupai contoh berikut.
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
Lihat juga
.NET Desktop feedback