Bagikan melalui


Panduan: Penembolokan Data Aplikasi dalam Aplikasi WPF

Penembolokan memungkinkan Anda menyimpan data dalam memori untuk akses cepat. Ketika data diakses lagi, aplikasi bisa mendapatkan data dari cache daripada mengambilnya dari sumber asli. Ini dapat meningkatkan performa dan skalabilitas. Selain itu, penembolokan membuat data tersedia saat sumber data untuk sementara tidak tersedia.

.NET Framework menyediakan kelas yang memungkinkan Anda menggunakan penembolokan di aplikasi .NET Framework. Kelas-kelas ini terletak di System.Runtime.Caching namespace layanan.

Catatan

Namespace System.Runtime.Caching layanan baru di .NET Framework 4. Namespace ini membuat penembolokan tersedia untuk semua aplikasi .NET Framework. Dalam versi .NET Framework sebelumnya, penembolokan hanya tersedia di namespace layanan System.Web dan karenanya memerlukan dependensi pada kelas ASP.NET.

Panduan ini menunjukkan kepada Anda cara menggunakan fungsionalitas penembolokan yang tersedia di .NET Framework sebagai bagian dari 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 pengeluaran 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.txt

    Namun, 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

  1. Mulai Visual Studio.

  2. Di menu File , klik Baru, lalu klik Proyek Baru.

    Kotak dialog Proyek Baru ditampilkan.

  3. Di bawah Templat terinstal, pilih bahasa pemrograman yang ingin Anda gunakan (Visual Basic atau Visual C#).

  4. Dalam kotak dialog Proyek Baru, pilih Aplikasi WPF.

    Catatan

    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.

  5. Dalam kotak teks Nama , masukkan nama untuk proyek Anda. Misalnya, Anda dapat memasukkan WPFCaching.

  6. Pilih kotak centang Buat direktori untuk solusi .

  7. Klik OK.

    Perancang WPF terbuka dalam tampilan Desain dan menampilkan file MainWindow.xaml. Visual Studio membuat folder Proyek Saya, file Application.xaml, dan file MainWindow.xaml.

Menargetkan .NET Framework dan Menambahkan Referensi ke Rakitan Penembolokan

Secara default, aplikasi WPF menargetkan Profil Klien .NET Framework 4. Untuk menggunakan System.Runtime.Caching namespace layanan 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 System.Runtime.Caching namespace.

Catatan

Prosedur untuk mengubah target .NET Framework berbeda dalam proyek Visual Basic dan dalam proyek Visual C#.

Untuk mengubah target .NET Framework di Visual Basic

  1. Di Penjelajah Solusi, klik kanan nama proyek, lalu klik Properti.

    Jendela properti untuk aplikasi ditampilkan.

  2. Klik tab Kompilasi.

  3. Di bagian bawah jendela, klik Opsi Kompilasi Tingkat Lanjut....

    Kotak dialog Pengaturan Pengkompilasi Tingkat Lanjut ditampilkan.

  4. Di daftar Kerangka kerja target (semua konfigurasi), pilih .NET Framework 4. (Jangan pilih Profil Klien .NET Framework 4.)

  5. Klik OK.

    Kotak dialog Perubahan Kerangka Kerja Target akan ditampilkan.

  6. Dalam kotak dialog Perubahan Kerangka Kerja Target, klik Ya.

    Proyek ditutup dan kemudian dibuka kembali.

  7. Tambahkan referensi ke rakitan penembolokan dengan mengikuti langkah-langkah berikut:

    1. Di Penjelajah Solusi, klik kanan nama proyek lalu klik Tambahkan Referensi.

    2. Pilih tab .NET , pilih System.Runtime.Caching, lalu klik OK.

Untuk mengubah target .NET Framework dalam proyek Visual C#

  1. Di Penjelajah Solusi, klik kanan nama proyek lalu klik Properti.

    Jendela properti untuk aplikasi ditampilkan.

  2. Klik tab Aplikasi.

  3. Di daftar Kerangka kerja target, pilih .NET Framework 4. (Jangan pilih Profil Klien .NET Framework 4.)

  4. Tambahkan referensi ke rakitan penembolokan dengan mengikuti langkah-langkah berikut:

    1. Klik kanan folder Referensi lalu klik Tambahkan Referensi.

    2. Pilih tab .NET , pilih System.Runtime.Caching, lalu klik OK.

Menambahkan Tombol ke Jendela WPF

Selanjutnya, Anda akan menambahkan kontrol tombol dan membuat penanganan aktivitas untuk acara tombol Click . Nantinya Anda akan menambahkan kode ke sehingga ketika Anda mengklik tombol, konten file teks di-cache dan ditampilkan.

Untuk menambahkan kontrol tombol

  1. Di Penjelajah Solusi, klik dua kali file MainWindow.xaml untuk membukanya.

  2. Dari Kotak Alat, di bawah Kontrol WPF Umum, seret Button kontrol ke MainWindow jendela.

  3. Di jendela Properti , atur Content properti kontrol ke ButtonDapatkan Cache.

Menginisialisasi Cache dan Penembolokan Entri

Selanjutnya, Anda akan menambahkan kode untuk melakukan tugas berikut:

  • Buat instans kelas cache—yaitu, Anda akan membuat instans objek baru MemoryCache .

  • Tentukan bahwa cache menggunakan HostFileChangeMonitor objek 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

  1. Klik dua kali tombol yang baru saja Anda tambahkan untuk membuat penanganan aktivitas di file MainWindow.xaml.cs atau MainWindow.Xaml.vb.

  2. Di bagian atas file (sebelum deklarasi kelas), tambahkan pernyataan (Visual Basic) atau using (C#) berikut Imports :

    using System.Runtime.Caching;
    using System.IO;
    
    Imports System.Runtime.Caching
    Imports System.IO
    
  3. Di penanganan aktivitas, tambahkan kode berikut untuk membuat instans objek cache:

    ObjectCache cache = MemoryCache.Default;
    
    Dim cache As ObjectCache = MemoryCache.Default
    

    Kelas ObjectCache adalah kelas bawaan yang menyediakan cache objek dalam memori.

  4. Tambahkan kode berikut untuk membaca konten entri cache bernama filecontents:

    Dim fileContents As String = TryCast(cache("filecontents"), String)
    
    string fileContents = cache["filecontents"] as string;
    
  5. Tambahkan kode berikut untuk memeriksa apakah entri cache bernama filecontents ada:

    If fileContents Is Nothing Then
    
    End If
    
    if (fileContents == null)
    {
    
    }
    

    Jika entri cache yang ditentukan tidak ada, Anda harus membaca file teks dan menambahkannya sebagai entri cache ke cache.

  6. if/then Di blok, tambahkan kode berikut untuk membuat objek baru CacheItemPolicy 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 memberikan kedaluwarsa absolut atau geser.

  7. if/then Di dalam blok dan 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");
    

    Catatan

    Jika file teks yang ingin Anda gunakan bukan c:\cache\cacheText.txt, tentukan jalur tempat file teks yang ingin Anda gunakan.

  8. Mengikuti kode yang Anda tambahkan di langkah sebelumnya, tambahkan kode berikut untuk menambahkan objek baru HostFileChangeMonitor 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.

  9. 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.

  10. Mengikuti kode yang Anda tambahkan di langkah sebelumnya, tambahkan kode berikut untuk menyisipkan konten file ke dalam objek cache sebagai CacheItem instans:

    cache.Set("filecontents", fileContents, policy)
    
    cache.Set("filecontents", fileContents, policy);
    

    Anda menentukan informasi tentang bagaimana entri cache harus dikeluarkan dengan meneruskan CacheItemPolicy objek yang Anda buat sebelumnya sebagai parameter.

  11. if/then Setelah blok, tambahkan kode berikut untuk menampilkan konten file yang di-cache dalam kotak pesan:

    MessageBox.Show(fileContents)
    
    MessageBox.Show(fileContents);
    
  12. Di menu Build , klik Bangun WPFCaching untuk membangun proyek Anda.

Menguji Penembolokan di Aplikasi WPF

Anda sekarang dapat menguji aplikasi.

Untuk menguji penembolokan di aplikasi WPF

  1. Klik CTRL + F5 untuk menjalankan aplikasi.

    Jendela MainWindow ditampilkan.

  2. Klik Dapatkan Cache.

    Konten yang di-cache dari file teks ditampilkan dalam kotak pesan. Perhatikan tanda waktu pada file.

  3. Tutup kotak pesan lalu klik Dapatkan Cache lagi.

    Tanda waktu tidak berubah. Ini menunjukkan konten yang di-cache ditampilkan.

  4. 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.

  5. Di editor teks, buka file teks yang Anda buat. Jangan membuat perubahan apa pun.

  6. Tutup kotak pesan lalu klik Dapatkan Cache lagi.

    Perhatikan tanda waktu lagi.

  7. Buat perubahan pada file teks lalu simpan file.

  8. 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.

    Catatan

    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

Baca juga