Bagikan melalui


Pembaruan inkremental ASP.NET ke ASP.NET Core

Memperbarui aplikasi dari ASP.NET Framework ke ASP.NET Core tidak sepele untuk sebagian besar aplikasi produksi. Aplikasi ini sering menggabungkan teknologi baru saat tersedia dan sering terdiri dari banyak keputusan warisan. Artikel ini menyediakan panduan dan tautan ke alat untuk memperbarui aplikasi ASP.NET Framework ke ASP.NET Core dengan perubahan sesedikit mungkin.

Salah satu tantangan yang lebih besar adalah penggunaan HttpContext pervasif di seluruh basis kode. Tanpa pendekatan dan alat inkremental, penulisan ulang skala besar diperlukan untuk menghapus HttpContext dependensi. Adaptor dalam dotnet/systemweb-adapters menyediakan sekumpulan pembantu runtime untuk mengakses jenis yang digunakan dalam aplikasi ASP.NET Framework dengan cara yang berfungsi di ASP.NET Core dengan perubahan minimal.

Migrasi lengkap mungkin memerlukan upaya yang cukup besar tergantung pada ukuran aplikasi, dependensi, dan API non-portabel yang digunakan. Untuk terus menyebarkan aplikasi ke produksi sambil berupaya memperbarui, pola terbaiknya adalah mengikuti pola Strangler Fig. Pola Strangler Fig memungkinkan pengembangan berkelanjutan pada sistem lama dengan pendekatan inkremental untuk mengganti potongan fungsionalitas tertentu dengan layanan baru. Dokumen ini menjelaskan cara menerapkan pola Strangler Fig ke aplikasi ASP.NET yang diperbarui ke ASP.NET Core.

Jika Anda ingin melewati artikel gambaran umum ini dan memulai, lihat Memulai.

Migrasi aplikasi ke ASP.NET Core

Sebelum memulai migrasi, aplikasi menargetkan ASP.NET Framework dan berjalan di Windows dengan pustaka pendukungnya:

Before starting the migration

Migrasi dimulai dengan memperkenalkan aplikasi baru berdasarkan ASP.NET Core yang menjadi titik masuk. Permintaan masuk masuk ke aplikasi ASP.NET Core, yang menangani permintaan atau membuat proksi permintaan ke aplikasi .NET Framework melalui YARP. Pada awalnya, sebagian besar kode yang memberikan respons ada di aplikasi .NET Framework, tetapi aplikasi ASP.NET Core sekarang disiapkan untuk mulai memigrasikan rute:

start updating routes

Untuk memigrasikan logika bisnis yang bergantung pada HttpContext, pustaka perlu dibangun dengan Microsoft.AspNetCore.SystemWebAdapters. Membangun pustaka dengan SystemWebAdapters memungkinkan:

  • Pustaka yang akan dibangun terhadap .NET Framework, .NET Core, atau .NET Standard 2.0.
  • Memastikan bahwa pustaka menggunakan API yang tersedia di ASP.NET Framework dan ASP.NET Core.

Microsoft.AspNetCore.SystemWebAdapters

Setelah aplikasi ASP.NET Core menggunakan YARP disiapkan, Anda dapat mulai memperbarui rute dari ASP.NET Framework ke ASP.NET Core. Misalnya, metode tindakan pengontrol WebAPI atau MVC, handler, atau beberapa implementasi rute lainnya. Jika rute tersedia di aplikasi ASP.NET Core, rute tersebut cocok dan disajikan.

Selama proses migrasi, layanan dan infrastruktur tambahan diidentifikasi yang harus diperbarui untuk dijalankan pada .NET Core. Opsi yang tercantum dalam urutan pemeliharaan meliputi:

  1. Memindahkan kode ke pustaka bersama
  2. Menautkan kode dalam proyek baru
  3. Menduplikasi kode

Akhirnya, aplikasi ASP.NET Core menangani lebih banyak rute daripada aplikasi .NET Framework:

the ASP.NET Core app handles more of the routes

Setelah aplikasi ASP.NET Framework tidak lagi diperlukan dan dihapus:

  • Aplikasi ini berjalan pada tumpukan aplikasi ASP.NET Core, tetapi masih menggunakan adaptor.
  • Pekerjaan migrasi yang tersisa adalah menghapus penggunaan adaptor.

final pic

Asisten Peningkatan .NET ekstensi Visual Studio dapat membantu meningkatkan aplikasi web ASP.NET Framework ke ASP.NET Core. Untuk informasi selengkapnya, lihat posting blog Meningkatkan proyek .NET Anda dengan Visual Studio.

Adaptor System.Web

Namespace Microsoft.AspNetCore.SystemWebAdapters adalah kumpulan pembantu runtime yang memfasilitasi penggunaan kode yang ditulis System.Web saat pindah ke ASP.NET Core. Ada beberapa paket yang dapat digunakan untuk menggunakan fitur dari adaptor ini:

  • Microsoft.AspNetCore.SystemWebAdapters: Paket ini digunakan dalam pustaka pendukung dan menyediakan API System.Web yang mungkin telah Anda dependensikan, seperti HttpContext dan lainnya. Paket ini menargetkan .NET Standard 2.0, .NET 4.5+, dan .NET 6+.
  • Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices: Paket ini hanya menargetkan .NET Framework dan dimaksudkan untuk menyediakan layanan untuk aplikasi ASP.NET Framework yang mungkin perlu menyediakan migrasi bertahap. Ini umumnya tidak diharapkan untuk direferensikan dari pustaka, melainkan dari aplikasi itu sendiri.
  • Microsoft.AspNetCore.SystemWebAdapters.CoreServices: Paket ini hanya menargetkan .NET 6+ dan dimaksudkan untuk menyediakan layanan ke aplikasi ASP.NET Core untuk mengonfigurasi perilaku System.Web API serta memilih perilaku apa pun untuk migrasi bertahap. Ini umumnya tidak diharapkan untuk direferensikan dari pustaka, melainkan dari aplikasi itu sendiri.
  • Microsoft.AspNetCore.SystemWebAdapters.Abstractions: Paket ini adalah paket pendukung yang menyediakan abstraksi untuk layanan yang digunakan oleh aplikasi ASP.NET Core dan ASP.NET Framework seperti serialisasi status sesi.

Untuk contoh skenario di mana ini berguna, lihat artikel adaptor.

Untuk panduan sekeliling penggunaan, lihat artikel panduan penggunaan.

Sumber Daya Tambahan