Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Modernizza le applicazioni ASP.NET Web Forms su AWS
Creato da Vijai Anand Ramalingam (AWS) e Sreelaxmi Pai (AWS)
Riepilogo
Questo modello descrive i passaggi per modernizzare un'applicazione ASP.NET Web Forms legacy e monolitica portandola su ASP.NET Core su AWS.
Il trasferimento delle applicazioni ASP.NET Web Forms su ASP.NET Core consente di sfruttare le prestazioni, i risparmi sui costi e il robusto ecosistema di Linux. Tuttavia, può essere un notevole sforzo manuale. In questo modello, l'applicazione legacy viene modernizzata in modo incrementale utilizzando un approccio graduale e quindi containerizzata nel cloud AWS.
Prendi in considerazione un'applicazione monolitica legacy per un carrello della spesa. Supponiamo che sia stata creata come applicazione ASP.NET Web Forms e sia costituita da pagine.aspx con un file code-behind (). aspx.cs
Il processo di modernizzazione consiste nei seguenti passaggi:
Suddividi il monolite in microservizi utilizzando i modelli di scomposizione appropriati. Per ulteriori informazioni, consulta la guida Decomposizione dei monoliti in microservizi sul sito Web AWS Prescriptive Guidance.
Esegui il port della tua applicazione ASP.NET Web Forms (.NET Framework) legacy su ASP.NET Core in .NET 5 o versione successiva. In questo modello, si utilizza Porting Assistant for .NET per eseguire la scansione dell'applicazione ASP.NET Web Forms e identificare le incompatibilità con ASP.NET Core. Ciò riduce lo sforzo di portabilità manuale.
Risviluppa il livello dell'interfaccia utente di Web Forms utilizzando React. Questo modello non copre la riqualificazione dell'interfaccia utente. Per istruzioni, consulta Creare una nuova app React
nella documentazione di React. Risviluppa il file code-behind di Web Forms (interfaccia aziendale) come API web ASP.NET Core. Questo modello utilizza i NDepend report per aiutare a identificare i file e le dipendenze necessari.
Aggiorna progetti condivisi/comuni, come Business Logic e Data Access, nell'applicazione precedente a .NET 5 o versione successiva utilizzando Porting Assistant for .NET.
Aggiungi i servizi AWS per completare la tua applicazione. Ad esempio, puoi utilizzare Amazon CloudWatch Logs per monitorare, archiviare e accedere ai log delle tue applicazioni e AWS Systems Manager
per archiviare le impostazioni delle applicazioni. Containerizza l'applicazione ASP.NET Core modernizzata. Questo modello crea un file Docker destinato a Linux in Visual Studio e utilizza Docker Desktop per testarlo localmente. Questo passaggio presuppone che l'applicazione legacy sia già in esecuzione su un'istanza Windows locale o Amazon Elastic Compute Cloud (Amazon EC2). Per ulteriori informazioni, consulta lo schema Esegui un contenitore Docker dell'API Web ASP.NET Core su un'istanza Amazon EC2 Linux.
Distribuisci l'applicazione core ASP.NET modernizzata su Amazon Elastic Container Service (Amazon ECS). Questo modello non copre la fase di implementazione. Per istruzioni, consulta Amazon ECS Workshop.
Nota
Questo modello non copre lo sviluppo dell'interfaccia utente, la modernizzazione del database o le fasi di implementazione dei container.
Prerequisiti e limitazioni
Prerequisiti
Visual Studio
o Visual Studio Code , scaricato e installato. Accesso a un account AWS utilizzando la Console di gestione AWS e l'AWS Command Line Interface (AWS CLI) versione 2. (Consulta le istruzioni per configurare l'interfaccia a riga di comando di AWS).
AWS Toolkit for Visual Studio (consulta le istruzioni di configurazione).
Docker Desktop, scaricato e installato
. .NET SDK, scaricato e installato
. NDepend strumento, scaricato
e installato. Per installare l' NDepend estensione per Visual Studio, esegui NDepend.VisualStudioExtension.Installer
(vedi istruzioni). Puoi selezionare Visual Studio 2019 o 2022, a seconda delle tue esigenze. Porting Assistant for .NET, scaricato
e installato.
Architettura
Modernizzazione dell'applicazione del carrello degli acquisti
Il diagramma seguente illustra il processo di modernizzazione di un'applicazione esistente per il carrello degli acquisti ASP.NET.

Architettura Target
Il diagramma seguente illustra l'architettura dell'applicazione modernizzata per il carrello degli acquisti su AWS. APIs I Web ASP.NET Core vengono distribuiti in un cluster Amazon ECS. I servizi di registrazione e configurazione sono forniti da Amazon CloudWatch Logs e AWS Systems Manager.

Strumenti
Servizi AWS
Amazon ECS — Amazon Elastic Container Service (Amazon ECS) è un servizio di gestione dei container veloce e altamente scalabile per l'esecuzione, l'arresto e la gestione dei container su un cluster. Puoi eseguire le tue attività e i tuoi servizi su un'infrastruttura serverless gestita da AWS Fargate. In alternativa, per un maggiore controllo sulla tua infrastruttura, puoi eseguire le tue attività e i tuoi servizi su un cluster di EC2 istanze da te gestito.
Amazon CloudWatch Logs: Amazon CloudWatch Logs centralizza i log di tutti i sistemi, le applicazioni e i servizi AWS che utilizzi. Puoi visualizzare e monitorare i log, cercarli per codici o modelli di errore specifici, filtrarli in base a campi specifici o archiviarli in modo sicuro per analisi future.
AWS Systems Manager ─ AWS Systems Manager è un servizio AWS che puoi usare per visualizzare e controllare la tua infrastruttura su AWS. Utilizzando la console Systems Manager, puoi visualizzare i dati operativi da più servizi AWS e automatizzare le attività operative tra le tue risorse AWS. Systems Manager ti aiuta a mantenere la sicurezza e la conformità scansionando le istanze gestite e segnalando (o adottando azioni correttive) su eventuali violazioni delle policy rilevate.
Strumenti
Visual Studio
o Visual Studio Code : strumenti per la creazione di applicazioni.NET APIs, Web e altri programmi. AWS Toolkit for Visual Studio: un'estensione per Visual Studio che aiuta a sviluppare, eseguire il debug e distribuire applicazioni.NET che utilizzano i servizi AWS.
Docker Desktop
: uno strumento che semplifica la creazione e la distribuzione di applicazioni containerizzate. NDepend
— Un analizzatore che monitora il codice.NET per individuare dipendenze, problemi di qualità e modifiche al codice. Porting Assistant for .NET
: strumento di analisi che analizza il codice.NET per identificare le incompatibilità con .NET Core e stimare lo sforzo di migrazione.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Aggiorna la tua applicazione.NET Framework legacy a.NET 5. | È possibile utilizzare Porting Assistant for .NET per convertire l'applicazione ASP.NET Web Forms legacy in .NET 5 o versione successiva. Segui le istruzioni contenute nella documentazione di Porting Assistant for .NET. | Sviluppatore di app |
Genera NDepend report. | Quando modernizzi l'applicazione ASP.NET Web Forms scomponendola in microservizi, potresti non aver bisogno di tutti i file.cs dell'applicazione precedente. È possibile utilizzarlo NDepend per generare un report per qualsiasi file code-behind (.cs), per ottenere tutti i chiamanti e i chiamanti. Questo rapporto consente di identificare e utilizzare solo i file richiesti nei microservizi. Dopo l'installazione NDepend (vedi la sezione Prerequisiti), apri la soluzione (file.sln) per l'applicazione precedente in Visual Studio e segui questi passaggi:
Questo processo genera un report per il file code-behind che elenca tutti i chiamanti e i chiamanti. Per ulteriori informazioni sul grafico delle dipendenze, consulta la documentazione. NDepend | Sviluppatore di app |
Crea una nuova soluzione.NET 5. | Per creare una nuova struttura.NET 5 (o versione successiva) per il tuo sito Web ASP.NET Core modernizzato: APIs
Per ulteriori informazioni sulla creazione di progetti e soluzioni, consulta la documentazione di Visual Studio NotaMan mano che si crea la soluzione e si verifica la funzionalità, è possibile identificare diversi file aggiuntivi da aggiungere alla soluzione, oltre ai file NDepend identificati. | Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementa APIs il web con ASP.NET Core. | Supponiamo che uno dei microservizi che hai identificato nella tua precedente applicazione per il carrello degli acquisti Monolith sia Products. Hai creato un nuovo progetto di API web ASP.NET Core per Products nell'epopea precedente. In questo passaggio, identifichi e modernizzi tutti i moduli Web (pagine.aspx) correlati ai prodotti. Supponiamo che Products sia composto da quattro moduli Web, come illustrato in precedenza nella sezione Architettura:
È necessario analizzare ogni modulo Web, identificare tutte le richieste inviate al database per eseguire una logica e ottenere risposte. È possibile implementare ogni richiesta come endpoint dell'API Web. Dati i suoi moduli web, Products può avere i seguenti endpoint possibili:
Come accennato in precedenza, puoi anche riutilizzare tutti gli altri progetti che hai aggiornato a.NET 5, inclusi Business Logic, Data Access e progetti condivisi/comuni. | Sviluppatore di app |
Configura Amazon CloudWatch Logs. | Puoi usare Amazon CloudWatch Logs per monitorare, archiviare e accedere ai log della tua applicazione. Puoi accedere ai dati in Amazon CloudWatch Logs utilizzando un SDK AWS. Puoi anche integrare applicazioni.NET con CloudWatch Logs utilizzando i più diffusi framework di logging.NET come NLog Per ulteriori informazioni su questo passaggio, consulta il post di blog Amazon CloudWatch Logs e.NET Logging | Sviluppatore di app |
Configura AWS Systems Manager Parameter Store. | Puoi utilizzare AWS Systems Manager Parameter Store per archiviare le impostazioni dell'applicazione, come le stringhe di connessione, separatamente dal codice dell'applicazione. Il NuGet pacchetto Amazon.Extensions.Configuration. SystemsManager Per ulteriori informazioni su questo passaggio, consulta il post del blog .NET Core configuration provider for AWS Systems Manager | Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Utilizza un cookie condiviso per l'autenticazione. | La modernizzazione di un'applicazione monolitica legacy è un processo iterativo e richiede la coesistenza del monolito e della sua versione modernizzata. È possibile utilizzare un cookie condiviso per ottenere un'autenticazione senza interruzioni tra le due versioni. L'applicazione ASP.NET legacy continua a convalidare le credenziali dell'utente ed emette il cookie, mentre l'applicazione ASP.NET Core modernizzata convalida il cookie. Per istruzioni e codice di esempio, consulta il progetto di esempio. GitHub | Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un'immagine Docker usando Visual Studio. | In questo passaggio, crei un file Docker utilizzando l'API web di Visual Studio for .NET Core.
Visual Studio crea un file Docker per il tuo progetto. Per un file Docker di esempio, vedi Visual Studio Container Tools for Docker sul sito | Sviluppatore di app |
Crea ed esegui il contenitore utilizzando Docker Desktop. | Ora puoi creare, creare ed eseguire il contenitore in Docker Desktop.
| Sviluppatore di app |
Risorse correlate
Esegui un contenitore Docker dell'API Web ASP.NET Core su un'istanza Amazon EC2 Linux (AWS Prescriptive Guidance)
Esegui implementazioni ECS blu/green utilizzando AWS (documentazione CodeDeploy CloudFormation AWS) CloudFormation
Guida introduttiva a
(documentazione) NDepend NDepend
Informazioni aggiuntive
Le tabelle seguenti forniscono esempi di progetti di esempio per un'applicazione legacy per il carrello degli acquisti e i progetti equivalenti nell'applicazione ASP.NET Core modernizzata.
Soluzione legacy:
Nome progetto | Modello di progetto | Framework Target |
---|---|---|
Interfaccia aziendale | Libreria di classi | .NET Framework |
BusinessLogic | Libreria di classi | .NET Framework |
WebApplication | Applicazione Web ASP.NET Framework | .NET Framework |
UnitTests | NUnit Progetto di test | .NET Framework |
Condiviso -> Comune | Libreria di classi | .NET Framework |
Condiviso -> Framework | Libreria di classi | .NET Framework |
Nuova soluzione:
Nome progetto | Modello di progetto | Framework Target |
---|---|---|
BusinessLogic | Libreria di classi | .NET 5.0 |
<WebAPI> | API Web ASP.NET Core | .NET 5.0 |
<WebAPI>. UnitTests | NUnit Progetto 3 Test | .NET 5.0 |
Condiviso -> Comune | Libreria di classi | .NET 5.0 |
Condiviso -> Framework | Libreria di classi | .NET 5.0 |