.NET vs. .NET Framework para aplicativos de servidor

Há duas implementações do .NET com suporte para a criação de aplicativos do lado do servidor.

Implementação Versões incluídas
.NET .NET Core 1.0 – 3.1, .NET 5 e versões posteriores do .NET.
.NET Framework .NET Framework 1.0 – 4.8

Ambos compartilham muitos dos mesmos componentes e você pode compartilhar código entre os dois. No entanto, há diferenças fundamentais entre as duas e sua escolha depende do que você deseja realizar. Este artigo diretrizes sobre quando usar cada um.

Use o .NET para seu aplicativo de servidor quando:

  • Você tiver necessidades de plataforma cruzada.
  • Você está direcionando microsserviços.
  • Você está usando contêineres do Docker.
  • Você precisar de alto desempenho e sistemas escalonáveis.
  • Você precisar de versões do .NET correspondentes a cada aplicativo.

Use o .NET Framework para o aplicativo para servidores se:

  • Seu aplicativo usar o .NET Framework atualmente (a recomendação é estender em vez de migrar).
  • Seu aplicativo usa bibliotecas de terceiros ou NuGet pacotes não disponíveis para .NET.
  • Seu aplicativo usa .NET Framework tecnologias que não estão disponíveis para o .NET.
  • Seu aplicativo usa uma plataforma que não dá suporte ao .NET.

Quando escolher o .NET

As seções a seguir dão uma explicação mais detalhada dos motivos mencionados anteriormente para escolher o .NET em .NET Framework.

Necessidades de plataforma cruzada

Se o aplicativo Web ou de serviço precisar ser executado em várias plataformas, por exemplo, Windows, Linux e macOS, use o .NET.

O .NET dá suporte aos sistemas operacionais mencionados anteriormente como sua estação de trabalho de desenvolvimento. O Visual Studio fornece um IDE (ambiente de desenvolvimento integrado) para Windows e macOS. Você também pode usar o Visual Studio Code, que é executado no Windows, Linux e macOS. Visual Studio Code dá suporte ao .NET, incluindo IntelliSense e depuração. A maioria dos editores de terceiros, como Sublime, Emacs e VI, trabalha com o .NET. Esses editores de terceiros obtém o IntelliSense do editor usando o Omnisharp. Você também pode evitar qualquer editor de código e usar diretamente a CLI do .NET, disponível para todas as plataformas com suporte.

Arquitetura de microsserviços

Uma arquitetura de microsserviços possibilita uma combinação de tecnologias em um limite de serviço. Essa combinação de tecnologias permite um adoção gradual do .NET para novos microsserviços que funcionam com outros microsserviços ou serviços. Por exemplo, você pode combinar microsserviços ou serviços desenvolvidos com .NET Framework, Java, Ruby ou outras tecnologias monolíticas.

Há muitas plataformas de infraestrutura disponíveis. O Azure Service Fabric é criado para sistemas de microsserviço grandes e complexos. O Serviço de Aplicativo do Azure é uma boa escolha para microsserviços sem monitoração de estado. Alternativas de microsserviços baseadas em Docker se adaptam a qualquer tipo de abordagem de microsserviços, conforme explicado na seção Contêineres. Todas essas plataformas são suportadas pelo .NET e as torna ideais para hospedar seus microsserviços.

Para obter mais informações sobre a arquitetura de microsserviços, consulte Microsserviços .NET. Arquitetura para aplicativos .NET em contêineres.

Contêineres

Os contêineres são frequentemente usados em conjunto com uma arquitetura de microsserviços. Os contêineres também podem ser usados para colocar em contêiner os aplicativos ou serviços Web que seguem qualquer padrão de arquitetura. .NET Framework pode ser usado em Windows contêineres, mas a modularidade e a natureza leve do .NET o torna uma opção melhor para contêineres. Ao criar e implantar um contêiner, o tamanho de sua imagem é muito menor com o .NET do que com .NET Framework. Como ele é multiplataforma, é possível implantar aplicativos para servidores em contêineres do Docker do Linux, por exemplo.

Os contêineres do Docker podem ser hospedados em sua própria infraestrutura do Windows ou do Linux ou em um serviço de nuvem, como o Serviço de Kubernetes do Azure. O Serviço de Kubernetes do Azure pode gerenciar, orquestrar e dimensionar aplicativos baseados em contêiner na nuvem.

Sistemas escalonáveis e de alto desempenho

Quando seu sistema precisa do melhor desempenho e escalabilidade possíveis, o .NET e ASP.NET Core são suas melhores opções. O runtime do servidor de alto desempenho para Windows Server e Linux torna ASP.NET Core uma estrutura Web de alto desempenho nos parâmetros de comparação techEmpower.

O desempenho e a escalabilidade são especialmente relevantes para arquiteturas de microsserviços, nas quais centenas de microsserviços podem estar em execução. Com o ASP.NET Core, os sistemas são executados com um número bem menor de servidores/VMs (Máquinas Virtuais). A redução em servidores/VMs gera economia em infraestrutura e hospedagem.

Versões lado a lado do .NET por nível de aplicativo

Para instalar aplicativos com dependências em diferentes versões do .NET, recomendamos o .NET. Essa implementação dá suporte à instalação lado a lado de diferentes versões do runtime do .NET no mesmo computador. Essa instalação lado a lado permite vários serviços no mesmo servidor, cada um deles em sua própria versão do .NET. Ela também reduz os riscos e gera economia financeira nas operações de TI e atualizações de aplicativo.

A instalação lado a lado não é possível com .NET Framework. É um componente Windows, e apenas uma versão pode existir em um computador por vez. Cada versão do .NET Framework substitui a versão anterior. Se você instalar um novo aplicativo destinado a uma versão posterior do .NET Framework, poderá quebrar os aplicativos existentes que são executados no computador, pois a versão anterior foi substituída.

Quando escolher o .NET Framework

O .NET oferece benefícios significativos para novos aplicativos e padrões de aplicativo. No entanto, .NET Framework continua sendo a opção natural para muitos cenários existentes e, como tal, .NET Framework não é substituído pelo .NET para todos os aplicativos de servidor.

Aplicativos .NET Framework atuais

Na maioria dos casos, você não precisa migrar seus aplicativos existentes para o .NET. Em vez disso, uma abordagem recomendada é usar o .NET à medida que você estende um aplicativo existente, como escrever um novo serviço Web no ASP.NET Core.

Bibliotecas de terceiros ou NuGet pacotes não disponíveis para .NET

.NET Standard habilita o compartilhamento de código em todas as implementações do .NET, incluindo o .NET Core/5+. Com .NET Standard 2.0, um modo de compatibilidade permite que .NET Standard e projetos .NET referenciam .NET Framework bibliotecas. Para obter mais informações, consulte Suporte para .NET Framework bibliotecas.

Você precisa usar .NET Framework somente em casos em que as bibliotecas ou NuGet pacotes usam tecnologias que não estão disponíveis no .NET Standard ou .NET.

.NET Framework tecnologias não disponíveis para .NET

Algumas .NET Framework tecnologias não estão disponíveis no .NET. A lista a seguir mostra as tecnologias mais comuns não encontradas no .NET:

  • ASP.NET Web Forms aplicativos: ASP.NET Web Forms estão disponíveis apenas no .NET Framework. O ASP.NET Core não pode ser usado para Web Forms do ASP.NET.

  • Aplicativos de páginas da Web do ASP.NET: as páginas da Web do ASP.NET não estão incluídas no ASP.NET Core.

  • Implementação de serviços do WCF. Mesmo quando há uma biblioteca de clientes WCF para consumir serviços WCF do .NET, a implementação do servidor WCF está disponível apenas no .NET Framework.

  • Serviços relacionados ao fluxo de trabalho: Windows WF (Workflow Foundation), Serviços de Fluxo de Trabalho (WCF + WF em um único serviço) e WCF Data Services (anteriormente conhecido como "ADO.NET Data Services") só estão disponíveis no .NET Framework.

  • Suporte a idiomas: Visual Basic e F# são atualmente suportados no .NET, mas não para todos os tipos de projeto. Para obter uma lista de modelos de projeto com suporte, consulte Opções de modelo para o dotnet new.

Para obter mais informações, consulte .NET Framework tecnologias indisponíveis no .NET.

A plataforma não dá suporte ao .NET

Algumas plataformas da Microsoft ou de terceiros não são suportadas pelo .NET. Alguns serviços do Azure fornecem um SDK ainda não disponível para consumo no .NET. Nesses casos, você pode usar a API REST equivalente em vez do SDK do cliente.

Confira também