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:
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:
C# - Imprimindo um arquivo texto - Macoratti
C# - Usando OpenFileDialog - Macoratti