Compartilhar via


Quando escolher o .NET Framework para os contêineres do Docker

Dica

Esse conteúdo é um trecho do eBook da Arquitetura de Microsserviços do .NET para os Aplicativos .NET em Contêineres, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Embora o .NET 8 ofereça benefícios significativos para novos aplicativos e padrões de aplicativos, o .NET Framework continuará sendo uma boa opção para muitos cenários existentes.

Migrando aplicativos existentes diretamente para um contêiner do Windows Server

Talvez convenha usar contêineres do Docker apenas para simplificar a implantação, mesmo se você não estiver criando microsserviços. Por exemplo, talvez convenha aprimorar seu fluxo de trabalho DevOps com o Docker — os contêineres podem oferecer ambientes de teste mais bem isolados e também podem eliminar problemas de implantação causados por dependências ausentes quando você muda para um ambiente de produção. Em casos assim, mesmo se você estiver implantando um aplicativo monolítico, faz sentido usar os contêineres do Docker e do Windows para seus aplicativos .NET Framework atuais.

Na maioria dos casos, para esse cenário, não será necessário migrar os aplicativos existentes para o .NET 8; você pode usar contêineres do Docker que incluem o .NET Framework tradicional. No entanto, uma abordagem recomendada é usar o .NET 8 ao estender um aplicativo existente, como escrever um novo serviço no ASP.NET Core.

Uso de bibliotecas .NET de terceiros ou pacotes NuGet não disponíveis para o .NET 8

As bibliotecas de terceiros estão adotando rapidamente o .NET Standard, que permite o compartilhamento de código em todas as versões do .NET, incluindo o .NET 8. Com o .NET Standard 2.0 e posteriores, a compatibilidade da superfície de API entre diferentes estruturas ficou ainda maior. Além disso, os aplicativos .NET Core 2.x e mais novos também podem referenciar diretamente as bibliotecas .NET Framework existentes (confira .NET Framework 4.6.1 com suporte ao .NET Standard 2.0).

O Pacote de Compatibilidade do Windows estende a superfície de API disponível para o .NET Standard 2.0 no Windows. Este pacote permite recompilar a maioria do código existente para o .NET Standard 2.x com pouca ou nenhuma modificação para ser executado no Windows.

No entanto, mesmo com essa progressão excepcional desde o .NET Standard 2.0 e o .NET Core 2.1 ou posterior, pode haver casos em que determinados pacotes NuGet precisem do Windows para serem executados e não sejam compatíveis com o .NET Core ou posteriores. Se esses pacotes forem críticos ao aplicativo, será necessário usar o .NET Framework em contêineres do Windows.

Uso de tecnologias .NET não disponíveis para o .NET 8

Algumas tecnologias do .NET Framework não estão disponíveis no .NET 8. Algumas delas podem ficar disponíveis em versões posteriores, mas outras não se ajustam aos novos padrões de aplicativo direcionados ao .NET Core e talvez nunca sejam disponibilizadas.

A lista a seguir mostra a maioria das tecnologias que não estão disponíveis no .NET 8:

  • Web Forms do ASP.NET. Esta tecnologia só está disponível no .NET Framework. No momento, não há planos para passar o ASP.NET Web Forms para o .NET ou posteriores.

  • Serviços relacionados a fluxo de trabalho. O Windows WF (Workflow Foundation), os Serviços de fluxo de trabalho (WCF + WF em um único serviço) e o WCF Data Services (anteriormente conhecido como Serviços de Dados ADO.NET) só estão disponíveis no .NET Framework. No momento, não há planos de trazê-los para o .NET 8.

Além das tecnologias listadas no roteiro oficial do .NET, outros recursos podem ser transferidos para a nova plataforma .NET unificada. Considere participar das discussões no GitHub para que sua opinião seja ouvida. E se você achar que algo está faltando, crie um novo problema no repositório dotnet/runtime do GitHub.

Usar uma plataforma ou API que não dá suporte ao .NET 8

Algumas plataformas da Microsoft e de terceiros não dão suporte ao .NET 8. Por exemplo, alguns serviços do Azure fornecem um SDK que ainda não está disponível para consumo no .NET 8. A maioria dos SDKs do Azure deve ser portada para o .NET 8/.NET Standard, mas alguns podem não ser por vários motivos. Veja os SDKs do Azure disponíveis na página Últimas versões de SDK do Azure.

Enquanto isso, se alguma plataforma ou serviço no Azure ainda não der suporte ao .NET 8 com sua API cliente, você poderá usar a API REST equivalente do serviço do Azure ou o SDK do cliente no .NET Framework.

Portabilidade do aplicativo ASP.NET existente para o .NET 8

O .NET Core é um avanço revolucionário do .NET Framework. Ele oferece uma série de vantagens sobre o .NET Framework em geral, desde a produtividade até o desempenho e desde o suporte multiplataforma até a satisfação do desenvolvedor.

Recursos adicionais