NET - Class Library .NET Core e .NET Standard


 Hoje veremos as diferenças entre os tipos de projeto Class Library .NET Core e .NET Standard no VS 2019.

Atualmente existem no VS 2019 3 tipos templates Class Library que podemos criar:

  1. Class Library (.NET Framework)
  2. Class Library (.NET Standard)
  3. Class Library (.NET Core)

Você saberia dizer qual a diferença entre elas e quando usar cada tipo de template ?

Uma Class Library .NET Framework fornece a funcionalidade do sistema no .NET Framework, pois possui várias classes, tipos de dados, interfaces etc. para executar várias funções e criar diferentes tipos de aplicativos, como aplicativos de desktop, aplicativos Web, aplicativos móveis, etc. Ela esta integrada ao Common Language Runtime (CLR) do framework .NET e é usada por todas as linguagens como C#, F#, Visual Basic .NET, etc.

Assim vou focar apenas nas bibliotecas  .NET Core e .NET Standard.

Sendo curto e grosso...

Então qual a diferença ?

Vamos por partes...

1- Compatibilidade

As bibliotecas direcionadas ao .NET Standard serão executadas em qualquer runtime compatível com o .NET Standard, como .NET Core, .NET Framework, Mono/Xamarin. Por outro lado, as bibliotecas direcionadas ao .NET Core só podem ser executadas no runtime do .NET Core.

2- Área de superfície da API

As bibliotecas .NET Standard vêm com tudo no NETStandard.Library, enquanto as bibliotecas .NET Core vêm com tudo no Microsoft.NETCore.App.  Este último inclui aproximadamente 20 bibliotecas adicionais, algumas das quais podemos adicionar manualmente à nossa biblioteca .NET Standard (como System.Threading.Thread) e algumas não são compatíveis com o .NET Standard (como Microsoft.NETCore.CoreCLR )

Além disso, as bibliotecas do .NET Core especificam rumtim e vêm com um modelo de aplicativo. Isso é importante, por exemplo, para tornar as bibliotecas de classes de teste de unidade executáveis.

A principal razão pela qual o .NET Standard existe é a portabilidade;  ele define um conjunto de APIs que as plataformas .NET concordam em implementar. Qualquer plataforma que implemente um .NET Standard é compatível com bibliotecas direcionadas ao .NET Standard. Uma dessas plataformas compatíveis é o .NET Core.

Os modelos de biblioteca do .NET Standard existem para execução em vários runtime (às custas da área de superfície da API). Inversamente, os modelos de biblioteca do .NET Core existem para acessar mais área de superfície da API (à custa da compatibilidade) e para especificar uma plataforma na qual construir um executável.

Resumindo :

- Uma  Class Library .Net Core é construída sobre o .Net Standard. Se você deseja implementar uma biblioteca que seja portátil para o .Net Framework, .Net Core e Xamarin, escolha uma library .Net Standard.

- O .Net Core finalmente implementará o .Net Standard 2 (assim como o Xamarin e o .Net Framework)

- O .Net Core, Xamarin e .Net Framework podem, portanto, ser identificados como sabores do .Net Standard;

- Para proteger seus aplicativos de compartilhamento e reutilização de código, você deve preferir implementar as bibliotecas .Net Standard.

- A Microsoft também recomenda que você use o .NET Standard em vez de Portable Class Libraries.

- O .NET Standard substituirá as PCLs (Portable Class Libraries) como ferramenta para a criação de bibliotecas .NET de várias plataformas.

- Segundo a MSDN, que é uma fonte autorizada, o .Net Standard pretende ser uma biblioteca para governar todos eles.

Assim a biblioteca .NET Standard é um conjunto de APIs que todas as plataformas .NET precisam implementar. Isso unifica as plataformas .NET e impede a fragmentação futura.

E estamos conversados.

"Porque a lei foi dada por Moisés; a graça e a verdade vieram por Jesus Cristo."
João 1:17

Referências:


José Carlos Macoratti