Memodernisasi aplikasi Formulir Web ASP.NET di AWS - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memodernisasi aplikasi Formulir Web ASP.NET di AWS

Vijai Anand Ramalingam dan Sreelaxmi Pai, Amazon Web Services

Ringkasan

Pola ini menjelaskan langkah-langkah untuk memodernisasi aplikasi ASP.NET Web Forms lama dan monolit dengan mem-porting ke ASP.NET Core di AWS.

Porting aplikasi ASP.NET Web Forms ke ASP.NET Core membantu Anda memanfaatkan kinerja, penghematan biaya, dan ekosistem Linux yang kuat. Namun, ini bisa menjadi upaya manual yang signifikan. Dalam pola ini, aplikasi lama dimodernisasi secara bertahap dengan menggunakan pendekatan bertahap, dan kemudian dikemas di AWS Cloud.

Pertimbangkan aplikasi monolit warisan untuk keranjang belanja. Mari kita asumsikan bahwa itu dibuat sebagai aplikasi ASP.NET Web Forms dan terdiri dari halaman.aspx dengan file code-behind (). aspx.cs Proses modernisasi terdiri dari langkah-langkah berikut:

  1. Pecahkan monolit menjadi layanan mikro dengan menggunakan pola dekomposisi yang sesuai. Untuk informasi selengkapnya, lihat panduan Menguraikan monolit menjadi layanan mikro di situs web AWS Prescriptive Guidance.

  2. Port aplikasi ASP.NET Web Forms (.NET Framework) lama Anda ke ASP.NET Core di.NET 5 atau yang lebih baru. Dalam pola ini, Anda menggunakan Porting Assistant untuk.NET untuk memindai aplikasi ASP.NET Web Forms Anda dan mengidentifikasi ketidakcocokan dengan ASP.NET Core. Ini mengurangi upaya porting manual.

  3. Kembangkan kembali layer UI Formulir Web dengan menggunakan React. Pola ini tidak mencakup pembangunan kembali UI. Untuk petunjuk, lihat Membuat Aplikasi React Baru di dokumentasi React.

  4. Kembangkan kembali file kode di belakang Formulir Web (antarmuka bisnis) sebagai API web ASP.NET Core. Pola ini menggunakan NDepend laporan untuk membantu mengidentifikasi file dan dependensi yang diperlukan.

  5. Tingkatkan shared/common proyek, seperti Logika Bisnis dan Akses Data, dalam aplikasi lama Anda ke .NET 5 atau yang lebih baru dengan menggunakan Porting Assistant untuk.NET. 

  6. Tambahkan layanan AWS untuk melengkapi aplikasi Anda. Misalnya, Anda dapat menggunakan Amazon CloudWatch Logs untuk memantau, menyimpan, dan mengakses log aplikasi Anda, dan AWS Systems Manager untuk menyimpan setelan aplikasi Anda.

  7. Kontainerisasi aplikasi ASP.NET Core yang dimodernisasi. Pola ini membuat file Docker yang menargetkan Linux di Visual Studio dan menggunakan Docker Desktop untuk mengujinya secara lokal. Langkah ini mengasumsikan bahwa aplikasi lama Anda sudah berjalan di instans Windows Amazon Elastic Compute Cloud (Amazon) lokal atau Amazon EC2. Untuk informasi selengkapnya, lihat pola Menjalankan container ASP.NET Core API Docker pada instance Amazon EC2 Linux.

  8. Terapkan aplikasi inti ASP.NET yang dimodernisasi ke Amazon Elastic Container Service (Amazon ECS). Pola ini tidak mencakup langkah penerapan. Untuk petunjuk, lihat Amazon ECS Workshop.

catatan

Pola ini tidak mencakup pengembangan UI, modernisasi database, atau langkah penerapan kontainer.

Prasyarat dan batasan

Prasyarat

Arsitektur

Memodernisasi aplikasi keranjang belanja

Diagram berikut menggambarkan proses modernisasi untuk aplikasi keranjang belanja ASP.NET warisan.

Memodernisasi aplikasi keranjang belanja lama

Arsitektur target

Diagram berikut menggambarkan arsitektur aplikasi keranjang belanja modern di AWS. Web ASP.NET Core APIs dikerahkan ke cluster Amazon ECS. Layanan pencatatan dan konfigurasi disediakan oleh Amazon CloudWatch Logs dan AWS Systems Manager.

Arsitektur target untuk aplikasi Formulir Web ASP.NET di AWS

Alat

Layanan AWS

  • Amazon ECS — Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang sangat skalabel dan cepat untuk menjalankan, menghentikan, dan mengelola kontainer di klaster. Anda dapat menjalankan tugas dan layanan Anda pada infrastruktur tanpa server yang dikelola oleh AWS Fargate. Atau, untuk kontrol lebih besar atas infrastruktur Anda, Anda dapat menjalankan tugas dan layanan Anda pada sekelompok EC2 instance yang Anda kelola.

  • Amazon CloudWatch Logs — Amazon CloudWatch Logs memusatkan log dari semua sistem, aplikasi, dan layanan AWS yang Anda gunakan. Anda dapat melihat dan memantau log, mencari kode atau pola kesalahan tertentu, memfilternya berdasarkan bidang tertentu, atau mengarsipkannya dengan aman untuk analisis masa depan.

  • AWS Systems Manager ─ AWS Systems Manager adalah layanan AWS yang dapat Anda gunakan untuk melihat dan mengontrol infrastruktur di AWS. Menggunakan konsol Systems Manager, Anda dapat melihat data operasional dari beberapa layanan AWS dan mengotomatiskan tugas operasional di seluruh sumber daya AWS Anda. Systems Manager membantu Anda menjaga keamanan dan kepatuhan dengan memindai instans dan pelaporan terkelola Anda (atau mengambil tindakan korektif) pada setiap pelanggaran kebijakan yang terdeteksi.

Alat

  • Visual Studio atau Visual Studio Code — Alat untuk membangun aplikasi.NET, web APIs, dan program lainnya.

  • AWS Toolkit for Visual Studio — Ekstensi untuk Visual Studio yang membantu mengembangkan, men-debug, dan menyebarkan aplikasi.NET yang menggunakan layanan AWS.

  • Docker Desktop — Alat yang menyederhanakan pembuatan dan penerapan aplikasi kontainer.

  • NDepend— Analyzer yang memantau kode.NET untuk dependensi, masalah kualitas, dan perubahan kode.

  • Porting Assistant for .NET — Alat analisis yang memindai kode.NET untuk mengidentifikasi ketidakcocokan dengan.NET Core dan untuk memperkirakan upaya migrasi.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Tingkatkan aplikasi lawasan.NET Framework Anda ke .NET 5.

Anda dapat menggunakan Porting Assistant untuk.NET untuk mengonversi aplikasi ASP.NET Web Forms lama Anda ke .NET 5 atau yang lebih baru. Ikuti petunjuk di Porting Assistant untuk dokumentasi .NET.

Pengembang aplikasi

Hasilkan NDepend laporan.

Saat Anda memodernisasi aplikasi Formulir Web ASP.NET Anda dengan menguraikannya menjadi layanan mikro, Anda mungkin tidak memerlukan semua file.cs dari aplikasi lama. Anda dapat menggunakan NDepend untuk membuat laporan untuk file code-behind (.cs) apa pun, untuk mendapatkan semua penelepon dan pemanggil. Laporan ini membantu Anda mengidentifikasi dan hanya menggunakan file yang diperlukan dalam layanan mikro Anda.

Setelah Anda menginstal NDepend (lihat bagian Prasyarat), buka solusi (file.sln) untuk aplikasi lama Anda di Visual Studio dan ikuti langkah-langkah berikut:

  1. Bangun aplikasi lama di Visual Studio.

  2. Pada bilah menu Visual Studio, pilih NDepend, Lampirkan NDepend proyek baru ke solusi VS saat ini.  

  3. Pilih Analisis rakitan .NET

  4. Ketika analisis selesai, navigasikan ke proyek di Solution Explorer. Klik kanan file di belakang kode apa pun (misalnya,listproducts.aspx.cs) yang ingin Anda buat laporannya, lalu pilih Tampilkan pada Grafik Ketergantungan. 

  5. Di bilah navigasi, pilih Penelepon dan pemanggil, lalu pilih Edit kueri kode. 

  6. Di panel Query and Rules Edit, pilih panah unduh, lalu pilih Ekspor ke Excel.

Proses ini menghasilkan laporan untuk file di belakang kode yang mencantumkan semua penelepon dan pemanggil. Untuk informasi selengkapnya tentang grafik ketergantungan, lihat NDepend dokumentasi.

Pengembang aplikasi

Buat solusi.NET 5 baru.

Untuk membuat struktur.NET 5 (atau yang lebih baru) baru untuk web ASP.NET Core Anda yang dimodernisasi: APIs

  1. Buka Visual Studio.

  2. Buat solusi kosong baru.

  3. Buat proyek baru yang menargetkan .NET 5 (atau yang lebih baru), berdasarkan aplikasi lama Anda. Untuk contoh proyek lama dan baru untuk aplikasi keranjang belanja, lihat bagian Informasi tambahan.

  4. Gunakan NDepend laporan dari langkah sebelumnya untuk mengidentifikasi semua file yang diperlukan. Salin file-file ini dari aplikasi yang Anda tingkatkan sebelumnya dan tambahkan ke solusi baru.

  5. Bangun solusinya dan perbaiki semua masalah.

Untuk informasi selengkapnya tentang membuat proyek dan solusi, lihat dokumentasi Visual Studio.

catatan

Saat Anda membangun solusi dan memverifikasi fungsionalitas, Anda mungkin mengidentifikasi beberapa file tambahan yang akan ditambahkan ke solusi, selain file yang NDepend diidentifikasi.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Implementasikan web APIs dengan ASP.NET Core.

Mari kita asumsikan bahwa salah satu layanan mikro yang Anda identifikasi dalam aplikasi keranjang belanja monolit lama Anda adalah Produk. Anda membuat proyek API web ASP.NET Core baru untuk Produk di epik sebelumnya. Pada langkah ini, Anda mengidentifikasi dan memodernisasi semua formulir web (halaman.aspx) yang terkait dengan Produk. Mari kita asumsikan bahwa Produk terdiri dari empat bentuk web, seperti yang diilustrasikan sebelumnya di bagian Arsitektur:

  • Daftar Produk

  • Lihat Produk

  • Tambah/Edit Produk

  • Hapus Produk

Anda harus menganalisis setiap formulir web, mengidentifikasi semua permintaan yang dikirim ke database untuk melakukan beberapa logika, dan mendapatkan tanggapan. Anda dapat mengimplementasikan setiap permintaan sebagai titik akhir API web. Mengingat bentuk webnya, Produk dapat memiliki titik akhir yang mungkin berikut:

  • /api/products

  • /api/products/{id}

  • /api/products/add

  • /api/products/update/{id}

  • /api/products/delete/{id}

Seperti disebutkan sebelumnya, Anda juga dapat menggunakan kembali semua proyek lain yang Anda upgrade ke .NET 5, termasuk Logika Bisnis, Akses Data, dan shared/common proyek.

Pengembang aplikasi

Konfigurasikan CloudWatch Log Amazon.

Anda dapat menggunakan Amazon CloudWatch Logs untuk memantau, menyimpan, dan mengakses log aplikasi Anda. Anda dapat mencatat data ke Amazon CloudWatch Logs menggunakan AWS SDK. Anda juga dapat mengintegrasikan aplikasi.NET dengan CloudWatch Log dengan menggunakan framework logging .NET populer seperti NLog, Log4Net, dan ASP.NET Core logging framework.

Untuk informasi selengkapnya tentang langkah ini, lihat posting blog Amazon CloudWatch Logs dan .NET Logging Frameworks.

Pengembang aplikasi

Konfigurasikan AWS Systems Manager Parameter Store.

Anda dapat menggunakan AWS Systems Manager Parameter Store untuk menyimpan setelan aplikasi seperti string koneksi secara terpisah dari kode aplikasi Anda. NuGet Paket Amazon.Extensions.Configuration. SystemsManagermenyederhanakan cara aplikasi Anda memuat pengaturan ini dari AWS Systems Manager Parameter Store ke dalam sistem konfigurasi.NET Core. 

Untuk informasi selengkapnya tentang langkah ini, lihat posting blog penyedia konfigurasi.NET Core untuk AWS Systems Manager.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Gunakan cookie bersama untuk otentikasi.

Memodernisasi aplikasi monolit warisan adalah proses berulang dan membutuhkan monolit dan versi modernnya untuk hidup berdampingan. Anda dapat menggunakan cookie bersama untuk mencapai otentikasi tanpa batas antara kedua versi. Aplikasi ASP.NET lama terus memvalidasi kredensi pengguna dan mengeluarkan cookie sementara aplikasi ASP.NET Core yang dimodernisasi memvalidasi cookie. 

Untuk instruksi dan kode sampel, lihat GitHub proyek sampel.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Buat gambar Docker dengan menggunakan Visual Studio.

Pada langkah ini, Anda membuat file Docker dengan menggunakan Visual Studio for .NET Core web API.

  1. Buka Visual Studio. 

  2. Di Solution Explorer, dari menu konteks (klik kanan) proyek Anda, pilih Add, Docker Support.

  3. Pilih Linux sebagai sistem operasi target.

Visual Studio membuat file Docker untuk proyek Anda. Untuk contoh file Docker, lihat Visual Studio Container Tools for Docker di situs web Microsoft.

Pengembang aplikasi

Bangun dan jalankan wadah dengan menggunakan Docker Desktop.

Sekarang Anda dapat membangun, membuat dan menjalankan wadah di Docker Desktop.

  1. Buka jendela Prompt Perintah. Arahkan ke folder solusi tempat file Docker berada. Jalankan perintah berikut untuk membuat image Docker:

    docker build -t aspnetcorewebapiimage -f Dockerfile .
  2. Jalankan perintah berikut untuk melihat semua gambar Docker:

    docker images
  3. Jalankan perintah berikut untuk membuat dan menjalankan wadah:

    docker run -d -p 8080:80 --name aspnetcorewebapicontainer aspnetcorewebapiimage
  4. Buka Docker Desktop, lalu pilih Containers/Apps. Anda dapat melihat wadah baru bernama aspnetcorewebapicontainer  running.

Pengembang aplikasi

Sumber daya terkait

Informasi tambahan

Tabel berikut memberikan contoh proyek sampel untuk aplikasi keranjang belanja lama dan proyek yang setara dalam aplikasi ASP.NET Core Anda yang dimodernisasi.

Solusi warisan:

Nama proyek

Template proyek

Kerangka target

Antarmuka Bisnis

Perpustakaan Kelas

.NET Framework

BusinessLogic

Perpustakaan Kelas

.NET Framework

WebApplication

Aplikasi Web Kerangka ASP.NET

.NET Framework

UnitTests

NUnit Proyek Uji

.NET Framework

Dibagikan -> Umum

Perpustakaan Kelas

.NET Framework

Bersama -> Kerangka

Perpustakaan Kelas

.NET Framework

Solusi baru:

Nama proyek

Template proyek

Kerangka target

BusinessLogic

Perpustakaan Kelas

.NET 5.0

<WebAPI>

API Web Inti ASP.NET

.NET 5.0

<WebAPI>. UnitTests

NUnit 3 Proyek Uji

.NET 5.0

Dibagikan -> Umum

Perpustakaan Kelas

.NET 5.0

Bersama -> Kerangka

Perpustakaan Kelas

.NET 5.0