.Net Framework, .Net Core e .Net Standard

Com o lançamento do novo Visual Studio 2017 e as novas opções da plataforma .Net disponíveis, os termos .Net Core, .Net Framework, e .Net Standard ficaram meio confusos.

Recentemente li um artigo interessante que me ajudou a entender a diferença entre esses termos e gostaria de escrever sobre o assunto.

.Net Core

O .Net Core é a novidade no mundo .Net. Sua característica mais importante é ser cross-plataform, isto é, ser suportado em diferentes plataformas. Ele suporta o desenvolvimento de software para Windows, Linux e MacOS.

O .Net Core não possui alguns dos recursos mais comuns do .Net Framework, portanto, ele dificilmente poderá ser aplicado em ambientes legados ou ambientes desenvolvidos anteriormente ao seu lançamento.

Seu uso deve ser encarado principalmente em novos desenvolvimentos.

E o .Net Standard / netstandard?

O nome .Net Standard é referente as bibliotecas do .Net. Elas garantem uma sintonia maior do .Net Core com o .Net Framework e o Mono.

.Net Standard também é o nome do build target (usado como “netstandard”) de aplicações .Net.

A Microsoft padronizou as APIs de runtime da plataforma .NET para possibilitar que um código seja compatível com diferentes runtimes.

Nem todas as classes existentes foram padronizadas para esse suporte e é aí que entra o .Net Standard para definir quais APIs funcionam entre as diversas implementações do .Net.

Um ponto importante é que o .Net Standard é suportado em diferentes níveis dependendo da versão utilizada. Se você está desenvolvendo um código para funcionar em diferentes versões do .Net, você terá que usar uma versão da biblioteca .Net Standard que seja comum nos targets desejados.

Por exemplo, o .Net Standard 1.2 suporta: .Net Framework 4.5.1, Windows e Windows Phone 8.1. Mas, se você também quiser que o código funcione no Windows 8.0, será necessário utilizar o .Net Standard 1.1 que usa o .Net Framework 4.5. Com isso, o código pode perder algumas features presentes na versão mais avançada do .Net Framework.

A documentação oficial da Microsoft possui uma tabela mostrando as versões do .Net Standard e sua correspondência com outras implementações da plataforma.

O importante disso tudo é tomar cuidado para informar o target correto do .Net Standard que será utilizado.