

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
<a name="modernize-asp-net-web-forms-applications-on-aws"></a>

*Vijai Anand Ramalingam dan Sreelaxmi Pai, Amazon Web Services*

## Ringkasan
<a name="modernize-asp-net-web-forms-applications-on-aws-summary"></a>

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](https://docs.aws.amazon.com/prescriptive-guidance/latest/modernization-decomposing-monoliths/) di situs web AWS Prescriptive Guidance.

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

1. Kembangkan kembali layer UI Formulir Web dengan menggunakan React. Pola ini tidak mencakup pembangunan kembali UI. Untuk petunjuk, lihat [Membuat Aplikasi React Baru](https://reactjs.org/docs/create-a-new-react-app.html) di dokumentasi React.

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

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

1. Tambahkan layanan AWS untuk melengkapi aplikasi Anda. Misalnya, Anda dapat menggunakan [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) untuk memantau, menyimpan, dan mengakses log aplikasi Anda, dan [AWS Systems Manager](https://aws.amazon.com/systems-manager/) untuk menyimpan setelan aplikasi Anda.

1. 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](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html).

1. 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](https://ecsworkshop.com/).

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

## Prasyarat dan batasan
<a name="modernize-asp-net-web-forms-applications-on-aws-prereqs"></a>

**Prasyarat**
+ [Visual Studio](https://visualstudio.microsoft.com/downloads/) atau [Visual Studio Code](https://code.visualstudio.com/download), diunduh dan diinstal.
+ Akses ke akun AWS menggunakan AWS Management Console dan AWS Command Line Interface (AWS CLI) versi 2. (Lihat [petunjuk untuk mengonfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).)
+ AWS Toolkit for Visual Studio ([lihat petunjuk penyiapan](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html)).
+ Docker Desktop, [diunduh](https://www.docker.com/products/docker-desktop) dan diinstal.
+ .NET SDK, [diunduh](https://download.visualstudio.microsoft.com/download/pr/4263dc3b-dc67-4f11-8d46-cc0ae86a232e/66782bbd04c53651f730b2e30a873f18/dotnet-sdk-5.0.203-win-x64.exe) dan diinstal.
+ NDepend alat, [diunduh](https://www.ndepend.com/download) dan diinstal. Untuk menginstal NDepend ekstensi untuk Visual Studio, jalankan `NDepend.VisualStudioExtension.Installer` ([lihat instruksi](https://www.ndepend.com/docs/getting-started-with-ndepend#Part1)). Anda dapat memilih Visual Studio 2019 atau 2022, tergantung pada kebutuhan Anda. 
+ Porting Assistant untuk.NET, [diunduh](https://aws.amazon.com/porting-assistant-dotnet/) dan diinstal.

## Arsitektur
<a name="modernize-asp-net-web-forms-applications-on-aws-architecture"></a>

**Memodernisasi aplikasi keranjang belanja**

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

![\[Memodernisasi aplikasi keranjang belanja lama\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/36cda8e6-f2cb-4f1a-b37f-fa3045cc5ba1/images/4367e259-9bb3-4eb6-a54d-1c1e2dece7d4.png)


**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\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/36cda8e6-f2cb-4f1a-b37f-fa3045cc5ba1/images/ed6d65ec-0dc9-43ab-ac07-1f172e089399.png)


## Alat
<a name="modernize-asp-net-web-forms-applications-on-aws-tools"></a>

**Layanan AWS**
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) — 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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) — 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) ─ 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](https://visualstudio.microsoft.com/) atau [Visual Studio Code](https://code.visualstudio.com/) — Alat untuk membangun aplikasi.NET, web APIs, dan program lainnya.
+ [AWS Toolkit for Visual](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html) Studio — Ekstensi untuk Visual Studio yang membantu mengembangkan, men-debug, dan menyebarkan aplikasi.NET yang menggunakan layanan AWS.
+ [Docker Desktop](https://www.docker.com/products/docker-desktop) — Alat yang menyederhanakan pembuatan dan penerapan aplikasi kontainer.
+ [NDepend](https://www.ndepend.com/features/)— Analyzer yang memantau kode.NET untuk dependensi, masalah kualitas, dan perubahan kode.
+ [Porting Assistant for .NET](https://aws.amazon.com/porting-assistant-dotnet/) — Alat analisis yang memindai kode.NET untuk mengidentifikasi ketidakcocokan dengan.NET Core dan untuk memperkirakan upaya migrasi.

## Epik
<a name="modernize-asp-net-web-forms-applications-on-aws-epics"></a>

### Port aplikasi lama Anda ke .NET 5 atau versi yang lebih baru
<a name="port-your-legacy-application-to-net-5-or-later-version"></a>


| Tugas | Deskripsi | Keterampilan 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](https://docs.aws.amazon.com/portingassistant/latest/userguide/porting-assistant-getting-started.html). | 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](#modernize-asp-net-web-forms-applications-on-aws-prereqs)), buka solusi (file.sln) untuk aplikasi lama Anda di Visual Studio dan ikuti langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)Proses ini menghasilkan laporan untuk file di belakang kode yang mencantumkan semua penelepon dan pemanggil. Untuk informasi selengkapnya tentang grafik ketergantungan, lihat [NDepend dokumentasi](https://www.ndepend.com/docs/visual-studio-dependency-graph). | 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[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)Untuk informasi selengkapnya tentang membuat proyek dan solusi, lihat [dokumentasi Visual Studio](https://docs.microsoft.com/en-us/visualstudio/ide/creating-solutions-and-projects).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 | 

### Perbarui kode aplikasi Anda
<a name="update-your-application-code"></a>


| Tugas | Deskripsi | Keterampilan 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](#modernize-asp-net-web-forms-applications-on-aws-architecture):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 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](https://www.nuget.org/packages/AWS.Logger.NLog/), [Log4Net, dan [ASP.NET](https://www.nuget.org/packages/AWS.Logger.AspNetCore/)](https://www.nuget.org/packages/AWS.Logger.Log4net/) Core logging framework.Untuk informasi selengkapnya tentang langkah ini, lihat posting blog [Amazon CloudWatch Logs dan .NET Logging Frameworks](https://aws.amazon.com/blogs/developer/amazon-cloudwatch-logs-and-net-logging-frameworks/). | Pengembang aplikasi | 
| Konfigurasikan AWS Systems Manager Parameter Store. | Anda dapat menggunakan [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) untuk menyimpan setelan aplikasi seperti string koneksi secara terpisah dari kode aplikasi Anda. NuGet Paket [Amazon.Extensions.Configuration. SystemsManager](https://www.nuget.org/packages/Amazon.Extensions.Configuration.SystemsManager/)menyederhanakan 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](https://aws.amazon.com/blogs/developer/net-core-configuration-provider-for-aws-systems-manager/). | Pengembang aplikasi | 

### Tambahkan otentikasi dan otorisasi
<a name="add-authentication-and-authorization"></a>


| Tugas | Deskripsi | Keterampilan 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](https://github.com/aws-samples/dotnet-share-auth-cookie-between-monolith-and-modernized-apps). | Pengembang aplikasi | 

### Bangun dan jalankan kontainer secara lokal
<a name="build-and-run-the-container-locally"></a>


| Tugas | Deskripsi | Keterampilan 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.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)Visual Studio membuat file Docker untuk proyek Anda. Untuk contoh file Docker, lihat [Visual Studio Container Tools for Docker](https://docs.microsoft.com/en-us/visualstudio/containers/overview) 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.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html) | Pengembang aplikasi | 

## Sumber daya terkait
<a name="modernize-asp-net-web-forms-applications-on-aws-resources"></a>
+ [Jalankan wadah API Docker web ASP.NET Core di instans Amazon EC2 Linux](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) (AWS Prescriptive Guidance)
+ [Lokakarya Amazon ECS](https://ecsworkshop.com/)
+ [Lakukan blue/green penerapan ECS dengan menggunakan CodeDeploy AWS (dokumentasi CloudFormation AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)) CloudFormation 
+ [Memulai dengan NDepend](https://www.ndepend.com/docs/getting-started-with-ndepend) (NDepend dokumentasi)
+ [Asisten Porting untuk .NET](https://aws.amazon.com/porting-assistant-dotnet/)

## Informasi tambahan
<a name="modernize-asp-net-web-forms-applications-on-aws-additional"></a>

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  | 