As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Modernize aplicativos ASP.NET Web Forms na AWS
Criado por Vijai Anand Ramalingam (AWS) e Sreelaxmi Pai (AWS)
Resumo
Esse padrão descreve as etapas para modernizar um aplicativo antigo e monólito do ASP.NET Web Forms, portando-o para o ASP.NET Core na AWS.
A portabilidade de aplicativos ASP.NET Web Forms para o ASP.NET Core ajuda você a aproveitar o desempenho, a redução de custos e o ecossistema robusto do Linux. No entanto, pode ser um esforço manual significativo. Nesse padrão, o aplicativo herdado é modernizado de forma incremental usando uma abordagem em fases e, em seguida, conteinerizado na Nuvem AWS.
Considere um aplicativo monolítico antigo para um carrinho de compras. Vamos supor que ele foi criado como um aplicativo ASP.NET Web Forms e consiste em páginas.aspx com um arquivo code-behind (aspx.cs
). O processo de modernização consiste em três etapas:
Divida o monólito em microsserviços usando os padrões de decomposição apropriados. Para obter mais informações, consulte o guia Decomposição de monólitos em microsserviços no site de Recomendações da AWS.
Porte seu aplicativo antigo ASP.NET Web Forms (.NET Framework) para o ASP.NET Core no.NET 5 ou superior. Nesse padrão, você usa o Assistente de Portabilidade para .NET para verificar seu aplicativo ASP.NET Web Forms e identificar incompatibilidades com o ASP.NET Core. Isso reduz o esforço de portabilidade manual.
Redesenvolva a camada de interface do usuário do Web Forms usando o React. Esse padrão não abrange a remodelação da interface do usuário. Para obter instruções, consulte Criar um novo aplicativo React
na documentação do React. Redesenvolva o arquivo code-behind do Web Forms (interface comercial) como uma API web do ASP.NET Core. Esse padrão usa NDepend relatórios para ajudar a identificar os arquivos e dependências necessários.
Atualize projetos compartilhados/comuns, como Business Logic e Data Access, em seu aplicativo herdado para o.NET 5 ou superior usando o Assistente de Portabilidade para .NET.
Adicione serviços da AWS para complementar seu aplicativo. Por exemplo, você pode usar o Amazon CloudWatch Logs para monitorar, armazenar e acessar os registros do seu aplicativo, e o AWS Systems Manager
para armazenar as configurações do seu aplicativo. Coloque o aplicativo ASP.NET Core modernizado em contêiner. Esse padrão cria um arquivo Docker que tem como destino o Linux no Visual Studio e usa o Docker Desktop para testá-lo localmente. Essa etapa pressupõe que seu aplicativo legado já esteja sendo executado em uma instância local ou no Amazon Elastic Compute Cloud (Amazon EC2) Windows. Para obter mais informações, consulte o padrão Executar um contêiner Docker da API web ASP.NET Core em uma instância do Amazon EC2 Linux.
Implantar o aplicativo ASP.NET core modernizado no Amazon Elastic Container Service (Amazon ECS). Esse padrão não abrange a etapa de implantação. Para obter instruções, consulte o Workshop do Amazon ECS
.
nota
Esse padrão não abrange as etapas de desenvolvimento da interface do usuário, modernização do banco de dados ou implantação de contêineres.
Pré-requisitos e limitações
Pré-requisitos
Visual Studio
ou Visual Studio Code , baixado e instalado. Acesso a uma conta da AWS usando o Console de Gerenciamento da AWS e a AWS Command Line Interface (AWS CLI), versão 2. (Consulte Instruções para configurar a AWS CLI.)
AWS Toolkit for Visual Studio (consulte instruções de configuração).
Docker Desktop, baixado
e instalado. .NET SDK, baixado
e instalado. NDepend ferramenta, baixada
e instalada. Para instalar a NDepend extensão para o Visual Studio, execute NDepend.VisualStudioExtension.Installer
(consulte as instruções). Você pode selecionar o Visual Studio 2019 ou 2022, dependendo dos seus requisitos. Assistente de Portabilidade para .NET, baixado
e instalado.
Arquitetura
Modernizando o aplicativo do carrinho de compras
O diagrama a seguir ilustra o processo de modernização de um aplicativo antigo de carrinho de compras ASP.NET.

Arquitetura de destino
O diagrama a seguir ilustra a arquitetura do aplicativo de carrinho de compras modernizado na AWS. O ASP.NET Core web APIs é implantado em um cluster Amazon ECS. Os serviços de registro e configuração são fornecidos pela Amazon CloudWatch Logs e pelo AWS Systems Manager.

Ferramentas
Serviços da AWS
Amazon ECS: o Amazon Elastic Container Service (Amazon ECS) é um serviço de gerenciamento de contêineres altamente escalável e rápido para execução, interrupção e gerenciamento de contêineres em um cluster. Você pode executar tarefas e serviços em uma infraestrutura com tecnologia gerenciada pelo AWS Fargate. Como alternativa, para ter mais controle sobre sua infraestrutura, você pode executar suas tarefas e serviços em um cluster de EC2 instâncias que você gerencia.
Amazon CloudWatch Logs — O Amazon CloudWatch Logs centraliza os registros de todos os seus sistemas, aplicativos e serviços da AWS que você usa. Você pode visualizar e monitorar os logs, pesquisá-los em busca de códigos de erro ou padrões específicos, filtrá-los com base em campos específicos ou arquivá-los com segurança para análise futura.
AWS Systems Manager ─ O AWS Systems Manager é um serviço da AWS que você pode usar para visualizar e controlar sua infraestrutura na AWS. Usando o console do Systems Manager, você pode visualizar dados operacionais de vários serviços da AWS e automatizar tarefas operacionais nos recursos da AWS. O Systems Manager ajuda você a manter a segurança e a conformidade verificando suas instâncias gerenciadas e gerando relatórios (ou tomando medidas corretivas) sobre quaisquer violações de políticas detectadas.
Ferramentas
Visual Studio
ou Visual Studio Code — Ferramentas para criar aplicativos.NET APIs, web e outros programas. AWS Toolkit for Visual Studio: uma extensão do Visual Studio que ajuda a desenvolver, depurarem e implantarem aplicações .NET que usam os serviços da AWS.
Docker Desktop
: uma ferramenta que simplifica a criação e a implantação de aplicativos em contêineres. NDepend
— Um analisador que monitora o código.NET em busca de dependências, problemas de qualidade e alterações no código. Assistente de Portabilidade para .NET
: uma ferramenta de análise que escaneia o código .NET para identificar incompatibilidades com o.NET Core e estimar o esforço de migração.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Atualize seu aplicativo herdado do .NET Framework para o .NET 5. | Você pode usar o Assistente de Portabilidade para .NET para converter seu aplicativo herdado ASP.NET Web Forms em .NET 5 ou superior. Siga as instruções na documentação do Assistente de Portabilidade para .NET. | Desenvolvedor de aplicativos |
Gere NDepend relatórios. | Ao modernizar seu aplicativo ASP.NET Web Forms decompondo-o em microsserviços, talvez você não precise de todos os arquivos.cs do aplicativo herdado. Você pode usar NDepend para gerar um relatório para qualquer arquivo code-behind (.cs), para obter todos os chamadores e chamadores. Esse relatório ajuda você a identificar e usar somente os arquivos necessários em seus microsserviços. Depois de instalar NDepend (consulte a seção Pré-requisitos), abra a solução (arquivo.sln) para seu aplicativo legado no Visual Studio e siga estas etapas:
Esse processo gera um relatório para o arquivo code-behind que lista todos os chamadores e chamados. Para obter mais informações sobre o gráfico de dependências, consulte a NDepend documentação | Desenvolvedor de aplicativos |
Criar uma nova solução .NET 5. | Para criar uma nova estrutura do.NET 5 (ou posterior) para sua web ASP.NET Core modernizada: APIs
Para obter mais informações sobre como criar projetos e soluções, consulte a documentação do Visual Studio notaAo criar a solução e verificar a funcionalidade, você pode identificar vários arquivos adicionais a serem adicionados à solução, além dos arquivos NDepend identificados. | Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Implemente a web APIs com o ASP.NET Core. | Vamos supor que um dos microsserviços que você identificou em seu aplicativo antigo de carrinho de compras monolítico seja Produtos. Você criou um novo projeto de API web do ASP.NET Core para Produtos no épico anterior. Nesta etapa, você identifica e moderniza todos os formulários da web (páginas .aspx) relacionados aos Produtos. Vamos supor que os Produtos consistam em quatro formulários da web, conforme ilustrado anteriormente na seção Arquitetura:
Você deve analisar cada formulário da web, identificar todas as solicitações enviadas ao banco de dados para realizar alguma lógica e obter respostas. Você pode implementar cada solicitação como um endpoint de API da web. Com base em seus formulários na web, os Produtos podem ter os seguintes endpoints possíveis:
Conforme mencionado anteriormente, você também pode reutilizar todos os outros projetos que você atualizou para o .NET 5, incluindo Business Logic, Data Access e projetos compartilhados/comuns. | Desenvolvedor de aplicativos |
Configure o Amazon CloudWatch Logs. | Você pode usar o Amazon CloudWatch Logs para monitorar, armazenar e acessar os registros do seu aplicativo. Você pode registrar dados no Amazon CloudWatch Logs usando um SDK da AWS. Você também pode integrar aplicativos.NET com o CloudWatch Logs usando estruturas de registro do.NET populares NLog Para obter mais informações sobre essa etapa, consulte a postagem no blog Amazon CloudWatch Logs and .NET Logging Frameworks | Desenvolvedor de aplicativos |
Configure a AWS Systems Manager Parameter Store. | Você pode usar o AWS Systems Manager Parameter Store para armazenar configurações do aplicativo, como strings de conexão, separadamente do código do seu aplicativo. O NuGet pacote Amazon.Extensions.Configuration. SystemsManager Para obter mais informações sobre essa etapa, consulte a postagem no blog Provedor de configuração do .NET Core para o AWS Systems Manager | Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Use um cookie compartilhado para autenticação. | Modernizar um aplicativo monolítico herdado é um processo iterativo e exige que o monólito e sua versão modernizada coexistam. Você pode usar um cookie compartilhado para obter uma autenticação perfeita entre as duas versões. O aplicativo ASP.NET herdado continua validando as credenciais do usuário e emite o cookie, enquanto o aplicativo ASP.NET Core modernizado valida o cookie. Para obter instruções e exemplos de código, consulte o GitHub projeto de amostra | Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Criar uma imagem do Docker usando o Visual Studio. | Nesta etapa, você cria um arquivo Docker usando a API web do Visual Studio for .NET Core.
O Visual Studio cria um arquivo Docker para seu projeto. Para obter um exemplo de arquivo Docker, consulte Visual Studio Container Tools for Docker | Desenvolvedor de aplicativos |
Crie e execute o contêiner usando o Docker Desktop. | Agora você pode compilar, criar e executar o contêiner no Docker Desktop.
| Desenvolvedor de aplicativos |
Recursos relacionados
Execute um contêiner Docker da API web ASP.NET Core em uma instância Amazon EC2 Linux (AWS Prescriptive Guidance)
Execute implantações azul/verde do ECS usando a CodeDeploy AWS (documentação da AWS) CloudFormation CloudFormation
Começando com NDepend
(NDepend documentação)
Mais informações
As tabelas a seguir fornecem exemplos de projetos para um aplicativo antigo de carrinho de compras e os projetos equivalentes em seu aplicativo ASP.NET Core modernizado.
Solução antiga:
Nome do projeto | Modelo de projeto | Estrutura de destino |
---|---|---|
Interface de negócios | Biblioteca de classes | NET Framework |
BusinessLogic | Biblioteca de classes | NET Framework |
WebApplication | Aplicativo Web do ASP.NET Framework | NET Framework |
UnitTests | NUnit Projeto de teste | NET Framework |
Compartilhado ->Comum | Biblioteca de classes | NET Framework |
Compartilhado ->Estrutura | Biblioteca de classes | NET Framework |
Nova solução:
Nome do projeto | Modelo de projeto | Estrutura de destino |
---|---|---|
BusinessLogic | Biblioteca de classes | .NET 5.0 |
<WebAPI> | API Web do ASP.NET Core | .NET 5.0 |
<WebAPI>. UnitTests | NUnit 3 Projeto de teste | .NET 5.0 |
Compartilhado ->Comum | Biblioteca de classes | .NET 5.0 |
Compartilhado ->Estrutura | Biblioteca de classes | .NET 5.0 |