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.
Important
Sebelum memulai: Artikel ini mengasumsikan Anda telah membaca ringkasan migrasi inti ASP.NET. Jika Anda belum membacanya, silakan mulai di sana untuk memahami konsep, pendekatan, dan manfaat migrasi inkremental.
Untuk migrasi besar, sebaiknya siapkan aplikasi ASP.NET Core yang berproksi ke aplikasi .NET Framework asli. Aplikasi proksi baru yang diaktifkan ditampilkan dalam gambar berikut:
Artikel ini menyediakan langkah-langkah praktis untuk melanjutkan migrasi bertahap setelah Anda memahami pendekatan.
Prerequisites
Sebelum memulai migrasi inkremental, pastikan Anda memiliki:
- Baca gambaran umum: ASP.NET inkremental ke migrasi inti ASP.NET
- Aplikasi ASP.NET Framework yang berfungsi yang ingin Anda migrasikan
- Visual Studio 2022 dengan pembaruan terbaru
- .NET 8 atau SDK yang lebih baru terinstal
- Memahami dependensi aplikasi dan pustaka pihak ketiga Anda
Gambaran Umum Langkah Migrasi
Proses migrasi inkremental mengikuti langkah-langkah utama berikut:
- Menyiapkan ASP.NET Core Project
- Remediasi Utang Teknis
- Mengidentifikasi dan mengatasi permasalahan lintas-sektor
- Meningkatkan pustaka pendukung
Menyiapkan ASP.NET Core Project
Langkah pertama adalah membuat aplikasi ASP.NET Core baru yang akan berfungsi sebagai proksi Anda.
Apa yang akan Anda lakukan:
- Buat proyek ASP.NET Core baru bersama aplikasi kerangka kerja ASP.NET yang sudah ada
- Konfigurasikan permintaan untuk proksi ke aplikasi asli Anda menggunakan YARP (Yet Another Reverse Proxy)
- Menyiapkan infrastruktur dasar untuk migrasi bertahap
Instruksi terperinci:
- Lihat Penyiapan aplikasi jarak jauh untuk memahami cara menyiapkan aplikasi untuk migrasi bertahap.
- Lihat Pelajari cara meningkatkan dari ASP.NET MVC, API Web, dan Formulir Web ke ASP.NET Core untuk bantuan dalam menyiapkan proyek yang diperlukan untuk migrasi bertahap menggunakan alat Visual Studio.
Mengatasi Utang Teknis
Kapan harus melakukan langkah ini: Sebelum meningkatkan pustaka pendukung apa pun, atasi utang teknis yang dapat mempersulit proses migrasi.
Sebelum Anda mulai memperbarui pustaka pendukung, penting untuk membersihkan utang teknis yang dapat mengganggu proses migrasi. Langkah ini harus diselesaikan terlebih dahulu untuk memastikan pengalaman peningkatan yang lebih lancar.
Memperbarui Ketergantungan Paket
Tinjau dan perbarui paket NuGet Anda ke versi terbaru yang kompatibel:
-
Mengaudit paket yang ada: Gunakan Manajer Paket NuGet Visual Studio karena
dotnetCLI tidak berfungsi untuk aplikasi ASP.NET Framework - Memperbarui paket secara bertahap: Memperbarui paket satu per satu untuk menghindari masalah kompatibilitas
- Uji setelah setiap pembaruan: Pastikan aplikasi Anda masih berfungsi dengan benar setelah setiap pembaruan paket
- Perubahan yang merusak kompatibilitas: Beberapa pembaruan paket mungkin memperkenalkan perubahan yang perlu ditangani.
Modernisasikan Alat Pembangun
Perbarui alat build dan konfigurasi proyek Anda:
- Alat pembaruan: Pastikan Anda menggunakan versi MSBuild/Visual Studio terbaru
-
Bermigrasi ke PackageReference untuk dependensi: Pertimbangkan untuk bermigrasi dari
packages.configkePackageReferenceformat jika Anda belum berada dalam proyek aplikasi Web - Membersihkan referensi yang tidak digunakan: Menghapus referensi rakitan atau paket NuGet yang tidak digunakan
- Migrasikan ke file proyek bergaya SDK: Konversikan file proyek yang ada ke format gaya SDK modern. Ini penting untuk kompatibilitas dengan proyek .NET modern dan memberikan dukungan alat yang lebih baik
- Memperbarui skrip build: Meninjau dan memperbarui skrip build kustom atau konfigurasi CI/CD apa pun
Masalah Kualitas Kode Alamat
Perbaiki masalah kualitas kode yang diketahui yang dapat mempersulit migrasi:
- Memperbaiki peringatan kompilator: Atasi peringatan pengkompilasi apa pun, terutama yang terkait dengan API yang tidak digunakan lagi
- Menghapus kode mati: Membersihkan kelas, metode, dan elemen kode lainnya yang tidak digunakan
- Memperbarui penggunaan API yang tidak digunakan lagi: Ganti penggunaan API yang tidak digunakan lagi dengan setara modernnya jika memungkinkan
Pekerjaan persiapan ini akan membuat proses peningkatan pustaka jauh lebih lancar dan mengurangi kemungkinan mengalami masalah kompleks selama migrasi.
Mengidentifikasi dan mengatasi masalah lintas-fungsi
Kapan harus melakukan langkah ini: Saat menangani utang teknologi tetapi sebelum meningkatkan pustaka pendukung, identifikasi dan konfigurasikan aspek lintas fungsi yang memengaruhi seluruh aplikasi Anda.
Kekhawatiran lintas tingkat adalah aspek aplikasi Anda yang mencakup beberapa lapisan atau komponen, seperti autentikasi, pengelolaan sesi, pencatatan, dan penyimpan sementara. Ini perlu ditangani di awal proses migrasi karena memengaruhi bagaimana aplikasi ASP.NET Framework dan ASP.NET Core Anda berkomunikasi dan berbagi status selama migrasi inkremental.
Bagian berikut mencakup masalah lintas sektoral yang paling umum. Konfigurasikan hanya yang berlaku untuk aplikasi Anda:
Konfigurasi Dukungan untuk Sesi
Konfigurasikan ini jika: Aplikasi ASP.NET Framework Anda menggunakan status sesi.
Lihat dokumentasi migrasi sesi umum untuk panduan di sini.
Sesi adalah fitur ASP.NET yang umum digunakan yang berbagi nama dengan fitur di ASP.NET Core, tetapi API jauh berbeda. Saat memutakhirkan pustaka yang menggunakan status sesi, Anda harus mengonfigurasi dukungan sesi. Lihat dokumentasi tentang dukungan sesi jarak jauh untuk panduan terperinci tentang cara mengaktifkan berbagi status sesi antara aplikasi Anda.
Konfigurasi Autentikasi
Konfigurasikan ini jika: Aplikasi ASP.NET Framework Anda menggunakan autentikasi dan Anda ingin berbagi status autentikasi antara aplikasi lama dan baru.
Lihat dokumentasi migrasi autentikasi umum untuk panduan di sini.
Dimungkinkan untuk berbagi autentikasi antara aplikasi ASP.NET asli dan aplikasi ASP.NET Core baru dengan menggunakan fitur autentikasi jarak jauh adaptor System.Web. Fitur ini memungkinkan aplikasi ASP.NET Core untuk menungguhkan autentikasi ke aplikasi ASP.NET asli. Lihat dokumentasi tentang autentikasi jarak jauh untuk detail selengkapnya.
Kepedulian Lintas Fungsi Lainnya yang Perlu Dipertimbangkan
Bergantung pada aplikasi Anda, Anda mungkin juga perlu mengatasi:
- Pengelogan: Pastikan pengelogan yang konsisten di kedua aplikasi. Pertimbangkan untuk menggunakan penyedia pengelogan bersama atau memastikan log dikumpulkan dengan benar.
- Penggunaan Cache: Jika aplikasi Anda menggunakan cache (dalam memori, terdistribusi, atau penggunaan cache output), rencanakan bagaimana mempertahankan konsistensi cache antara aplikasi.
- Penanganan Kesalahan: Menetapkan penanganan dan pelaporan kesalahan yang konsisten di seluruh aplikasi ASP.NET Framework dan ASP.NET Core.
- Manajemen Konfigurasi: Rencanakan bagaimana pengaturan konfigurasi akan dibagikan atau dikelola di antara kedua aplikasi.
- Pemantauan Kesehatan: Menyiapkan pemantauan dan pemeriksaan kesehatan untuk kedua aplikasi selama proses migrasi.
- Injeksi Dependensi: Jika menggunakan kontainer DI di aplikasi ASP.NET Framework Anda, rencanakan migrasi ke kontainer DI bawaan ASP.NET Core.
Meningkatkan pustaka pendukung
Kapan harus melakukan langkah ini: Hanya ketika Anda perlu memigrasikan rute tertentu yang bergantung pada pustaka kelas yang berisi logika bisnis, Anda harus berbagi antara aplikasi lama dan baru.
Note
Pendekatan bertahap: Dengan proses migrasi bertahap, Anda tidak perlu memutakhirkan semua pustaka pendukung sekaligus. Anda hanya perlu memutakhirkan pustaka yang diperlukan untuk rute tertentu yang saat ini Anda migrasikan. Ini memungkinkan Anda untuk mengatasi migrasi dalam potongan-potongan yang lebih kecil dan lebih mudah dikelola.
Proses Peningkatan Pustaka
Important
Pustaka pendukung harus ditingkatkan dalam urutan pencarian mengutamakan kedalaman postorder. Ini berarti:
- Mulailah dengan dependensi daun: Mulailah dengan pustaka yang tidak memiliki dependensi pada pustaka lain dalam solusi Anda
- Bekerja ke atas melalui pohon dependensi: Hanya tingkatkan pustaka setelah semua dependensinya berhasil ditingkatkan
- Akhiri dengan aplikasi utama: Aplikasi ASP.NET Framework utama harus menjadi item terakhir yang akan dimodifikasi
Pemesanan ini sangat penting karena:
- Ini memastikan bahwa ketika Anda meningkatkan pustaka, semua dependensinya sudah kompatibel
- Ini mencegah masalah dependensi melingkar selama proses peningkatan
- Ini memungkinkan Anda untuk menguji setiap pustaka secara independen sebelum pindah ke dependennya
CATATAN: Anda hanya perlu mengikuti urutan ini untuk subset pustaka yang diperlukan oleh rute yang saat ini Anda migrasikan, bukan seluruh solusi Anda.
Proses peningkatan untuk setiap pustaka:
Jika Anda memiliki pustaka pendukung dalam solusi yang perlu Anda gunakan untuk rute yang Anda migrasikan, pustaka tersebut harus ditingkatkan ke .NET Standard 2.0, jika memungkinkan. Modernisasi aplikasi GitHub Copilot dapat membantu Anda dengan ini. Jika pustaka tidak dapat menargetkan .NET Standard, Anda dapat menargetkan .NET 8 atau versi yang lebih baru, baik pada proyek asli bersama target .NET Framework atau pada proyek baru yang berjalan seiring dengan proyek asli.
System.Web adapter dapat digunakan dalam pustaka ini untuk mengaktifkan dukungan penggunaan HttpContext di pustaka kelas. Untuk mengaktifkan HttpContext penggunaan di pustaka:
- Hapus referensi ke
System.Webdalam file proyek -
Microsoft.AspNetCore.SystemWebAdaptersMenambahkan paket - Aktifkan penargetan ganda dan tambahkan target .NET 8 atau lebih baru, atau konversikan proyek ke .NET Standard 2.0.
Langkah ini mungkin memerlukan sejumlah proyek untuk berubah tergantung pada struktur solusi Anda dan rute mana yang Anda migrasikan. Modernisasi aplikasi GitHub Copilot dapat membantu Anda mengidentifikasi mana yang perlu diubah dan mengotomatiskan sejumlah langkah dalam proses.
Langkah Selanjutnya
Setelah Anda menyelesaikan langkah-langkah penyetelan dan peningkatan pustaka di atas:
- Mulai dari yang kecil: Mulailah dengan memigrasikan titik akhir sederhana tanpa status terlebih dahulu
- Uji secara menyeluruh: Pastikan setiap komponen yang dimigrasikan berfungsi dengan benar di kedua lingkungan
- Memantau performa: Amati dampak performa apa pun dari penyiapan proksi
- Iterasi: Lanjutkan migrasi komponen secara bertahap hingga migrasi selesai
ASP.NET Core