Bagikan melalui


Rakitan Penyalinan Bayangan

Catatan

Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.

Penyalinan bayangan memungkinkan rakitan yang digunakan dalam domain aplikasi untuk diperbarui tanpa membongkar domain aplikasi. Cara ini sangat berguna untuk aplikasi yang harus tersedia terus menerus, seperti situs ASP.NET.

Penting

Penyalinan bayangan tidak didukung di aplikasi Windows 8.x Store.

Runtime bahasa umum mengunci file rakitan saat rakitan dimuat, sehingga file tidak dapat diperbarui hingga rakitan dibongkar. Satu-satunya cara untuk membongkar rakitan dari domain aplikasi adalah dengan membongkar domain aplikasi, jadi dalam keadaan normal, rakitan tidak dapat diperbarui pada disk sampai semua domain aplikasi yang menggunakannya telah dibongkar.

Ketika domain aplikasi dikonfigurasi untuk file salinan bayangan, rakitan dari jalur aplikasi disalin ke lokasi lain dan dimuat dari lokasi itu. Salinan dikunci, tetapi file rakitan asli tidak terkunci dan dapat diperbarui.

Penting

Satu-satunya rakitan yang dapat disalin bayangan adalah rakitan yang disimpan di direktori aplikasi atau subdirektorinya, yang ditentukan oleh properti ApplicationBase dan PrivateBinPath saat domain aplikasi dikonfigurasi. Rakitan yang disimpan dalam cache rakitan global tidak disalin bayangan.

Artikel ini berisi bagian berikut:

  • Mengaktifkan dan Menggunakan Penyalinan Bayangan menjelaskan penggunaan dasar dan opsi yang tersedia untuk penyalinan bayangan.

  • Performa Startup menjelaskan perubahan yang dibuat pada penyalinan bayangan di .NET Framework 4 untuk meningkatkan performa startup, dan cara mengembalikan ke perilaku versi sebelumnya.

  • Metode Usang menjelaskan perubahan yang dibuat pada properti dan metode yang mengontrol penyalinan bayangan di .NET Framework 2.0.

Mengaktifkan dan Menggunakan Penyalinan Bayangan

Anda dapat menggunakan properti kelas AppDomainSetup sebagai berikut untuk mengonfigurasi domain aplikasi untuk penyalinan bayangan:

  • Aktifkan penyalinan bayangan dengan mengatur properti ShadowCopyFiles menjadi nilai string "true".

    Secara default, pengaturan ini menyebabkan semua rakitan di jalur aplikasi disalin ke cache unduhan sebelum dimuat. Cache ini adalah cache yang sama yang dikelola oleh runtime bahasa umum untuk menyimpan file yang diunduh dari komputer lain, dan runtime bahasa umum secara otomatis menghapus file saat tidak lagi diperlukan.

  • Secara opsional, tetapkan lokasi kustom untuk file yang disalin bayangan menggunakan properti CachePath dan properti ApplicationName.

    Jalur dasar untuk lokasi dibentuk dengan menggabungkan properti ApplicationName ke properti CachePath sebagai subdirektori. Rakitan disalin bayangan ke subdirektori jalur ini, bukan ke jalur dasar itu sendiri.

    Catatan

    Jika properti ApplicationName tidak diatur, properti CachePath akan diabaikan dan cache unduhan digunakan. Tidak ada pengecualian yang ditampilkan.

    Jika Anda menentukan lokasi kustom, Anda bertanggung jawab untuk membersihkan direktori dan file yang disalin saat tidak lagi diperlukan. Direktori dan file tidak dihapus secara otomatis.

    Ada beberapa alasan mengapa Anda mungkin ingin mengatur lokasi kustom untuk file yang disalin bayangan. Anda mungkin ingin mengatur lokasi kustom untuk file yang disalin bayangan jika aplikasi Anda menghasilkan banyak salinan. Cache unduhan dibatasi oleh ukuran, bukan oleh masa pakai, jadi ada kemungkinan runtime bahasa umum akan mencoba menghapus file yang masih digunakan. Alasan lain untuk mengatur lokasi kustom adalah ketika pengguna yang menjalankan aplikasi Anda tidak memiliki akses tulis ke lokasi direktori yang digunakan runtime bahasa umum untuk cache unduhan.

  • Secara opsional, batasi rakitan yang disalin bayangan dengan menggunakan properti ShadowCopyDirectories.

    Saat Anda mengaktifkan penyalinan bayangan untuk domain aplikasi, defaultnya adalah menyalin semua rakitan di jalur aplikasi—yaitu, di direktori yang ditentukan oleh properti ApplicationBase dan PrivateBinPath. Anda dapat membatasi penyalinan ke direktori yang dipilih dengan membuat string yang hanya berisi direktori yang ingin Anda salin bayangannya, dan menetapkan string ke properti ShadowCopyDirectories. Pisahkan direktori dengan titik koma. Satu-satunya rakitan yang disalin bayangan adalah yang ada di direktori yang dipilih.

    Catatan

    Jika Anda tidak menetapkan string ke properti ShadowCopyDirectories, atau jika Anda mengatur properti ini ke null, semua rakitan dalam direktori yang ditentukan oleh properti ApplicationBase dan PrivateBinPath akan disalin bayangan.

    Penting

    Jalur direktori tidak boleh berisi titik koma, karena titik koma adalah karakter pemisah. Tidak ada karakter escape untuk titik koma.

Performa Startup

Saat domain aplikasi yang menggunakan penyalinan bayangan dimulai, ada penundaan saat rakitan di direktori aplikasi disalin ke direktori salinan bayangan, atau diverifikasi jika sudah berada di lokasi tersebut. Sebelum .NET Framework 4, semua rakitan disalin ke direktori sementara. Setiap perakitan dibuka untuk memverifikasi nama perakitan, dan nama kuat divalidasi. Setiap perakitan diperiksa untuk melihat apakah telah diperbarui lebih baru daripada salinan di direktori salinan bayangan. Jika sudah diperiksa, perakitan disalin ke direktori salinan bayangan. Dan akhirnya, salinan sementara dibuang.

Semenjak .NET Framework 4, perilaku startup default adalah secara langsung membandingkan tanggal dan waktu file setiap rakitan di direktori aplikasi dengan tanggal dan waktu file salinan di direktori salinan bayangan. Jika rakitan telah diperbarui, rakitan tersebut disalin dengan menggunakan prosedur yang sama seperti pada versi .NET Framework yang lebih lama; jika tidak, salinan di direktori salinan bayangan akan dimuat.

Peningkatan performa yang dihasilkan adalah yang terbesar untuk aplikasi ketika rakitan tidak sering berubah dan perubahan biasanya terjadi pada sebagian kecil rakitan. Jika sebagian besar rakitan dalam aplikasi sering berubah, perilaku default baru dapat menyebabkan regresi performa. Anda dapat memulihkan perilaku startup versi .NET Framework sebelumnya dengan menambahkan elemen <shadowCopyVerifyByTimestamp> ke file konfigurasi, dengan enabled="false".

Metode Usang

Kelas AppDomain ini memiliki beberapa metode, seperti SetShadowCopyFiles dan ClearShadowCopyPath, yang dapat digunakan untuk mengontrol penyalinan bayangan pada domain aplikasi, tetapi ini telah ditandai usang dalam .NET Framework versi 2.0. Cara yang disarankan untuk mengonfigurasi domain aplikasi untuk penyalinan bayangan adalah dengan menggunakan properti kelas AppDomainSetup.

Lihat juga