.NET Core - Compartilhando Código

 Neste artigo veremos os conceitos do compartilhando de código na plataforma .NET Core.

Com o advento do  .NET Core a Microsoft agora possui um framework multiplataforma onde podemos desenvolver aplicativos para três frameworks e plataformas diferentes :

  1. .NET Framework

  2. .NET Core

  3. Xamarin

O .NET Framework é usado para desenvolvimento de aplicações Windows usando Windows Forms , WPF e de aplicações Web usando ASP .NET MVC.

O .NET Core é open-source e multiplataforma e suporta UWP e as bibliotecas da ASP .NET Core. A UWP é usada para criar aplicação Windows 10 e a ASP .NET Core é usada para criar aplicações Web para Windows, Linux e Mac.

O Xamarin é um framework que permite criar aplicações nativas para Android, iOS e Windows Phone.(Alguém ai usa Windows Phone)

Esses frameworkss usam bibliotecas de classes de frameworks diferentes. Isso significa que o código escrito em um framework não pode ser usado com os outros framewowks. Por exemplo, um aplicativo console desenvolvido com o .NET Framework não pode ser executado no .NET Core ou vice-versa. Assim, o compartilhamento de código não é permitido.

Seria legal escrever código uma vez e compartilhar com outros aplicativos com diferentes frameworks .NET.

Não é mesmo ?

Para resolver esse problema de compartilhamento de código, temos três abordagens a seguir:

  1. Criar uma Portable Class Library ou biblioteca de classes portátil;
  2. Target .NET Standard
  3. Target Multiple Frameworks

Criar uma biblioteca de classes portátil (PCL) para compartilhar código com outras estruturas .NET não é uma novidade na plataforma .NET.

O tipo de projeto Portable Class Library ou biblioteca de classes portátil no Visual Studio ajudou a criar aplicativos para multiplas plataformas e bibliotecas para plataformas da Microsoft de forma rápida e fácil.

Usar a abordagem PCL pode ajudar a reduzir o tempo e os custos com desenvolvimento e testes de código. Usávamos esse tipo de projeto para gravar e compilar assemblies .NET Framework portáteis e, em seguida, referenciar os assemblies de aplicativos destinados a várias plataformas, como o .NET Framework, iOS ou Mac.

Essa abordagem era muito usada para criar projetos Xamarin Forms antes do advento do .NET Standard 2.0.

No Visual Studio 2019 agora temos diversas opções conforme mostra a figura a seguir:

Atualmente a estratégia de compartilhamento de código mais indica é o .NET Standard.

.NET Standard é uma especificação formal de APIs da plataforma .NET que devem estar disponíveis em todas as implementações do .NET. A motivação por trás do .NET Standard é estabelecer maior uniformidade no ecossistema do .NET. A especificação é mantida por implementadores do .NET, especificamente Microsoft (inclui o .NET Framework, .NET Core e Mono) e Unity.

O .NET Standard permite os seguintes cenários:

As diversas implementações da plataforma .NET se destinam a versões específicas do .NET Standard. Cada versão de implementação do .NET anuncia a versão mais alta do .NET Standard a qual ela dá suporte, uma afirmação que significa que também há suporte para versões anteriores.

Por exemplo, o .NET Framework 4.6 implementa o .NET Standard 1.3, o que significa que ele expõe todas as APIs definidas nas versões 1.0 a 1.3 do .NET Standard. Da mesma forma, o .NET Framework 4.6.1 implementa o .NET Standard 1.4, enquanto o .NET Core 1.0 implementa o .NET Standard 1.6.

Qual versão do .NET Standard  usar ?

Ao escolher uma versão do .NET Standard, você deve considerar a seguinte compensação:

  • Quanto mais recente a versão, mais APIs estarão disponíveis para você.
  • Quanto menos recente a versão, mais plataformas a implementarão.

Em geral, a Microsoft recomenda que você direcione para a versão menos recente possível do .NET Standard. Portanto, depois de localizar a versão mais recente do .NET Standard para a qual você pode direcionar, execute estas etapas:

  1. Direcione para a próxima versão menos recente do .NET Standard e compile seu projeto.
  2. Se seu projeto for compilado com êxito, repita a etapa 1. Caso contrário, redirecione para a próxima versão mais recente, e essa será a versão que você deve usar.

.NET Standard e PCL

O .NET Standard é o substituto das PCLs (Bibliotecas de classe portáteis) , e  aprimora a experiência de criar bibliotecas portáteis, selecionando um BCL padrão e estabelecendo maior uniformidade entre as implementações do .NET como resultado. Uma biblioteca direcionada ao .NET Standard é uma PCL ou uma “PCL baseada no .NET Standard”. PCLs existentes são "PCLs baseadas em perfil".

Os perfis do .NET Standard e da PCL foram criados para finalidades semelhantes, mas também diferem de maneiras básicas.

Semelhanças:

  • Definem APIs que podem ser usadas para compartilhamento de código binário.

Diferenças:

  • O .NET Standard é um conjunto estruturado de APIs, enquanto os perfis de PCL são definidos por interseções de plataformas existentes.
  • O .NET Standard tem versões lineares, ao passo que os perfis de PCL não.
  • Os perfis de PCL representam plataformas da Microsoft, enquanto o .NET Standard é independente de plataforma.

O .NET Standard é compatível com um subconjunto de perfis de PCL. O .NET Standard 1.0, 1.1 e 1.2 se sobrepõem, cada um, com um conjunto de perfis de PCL.

Na próxima parte do artigo veremos como atender múltiplos Frameworks.

(disse Jesus) - "Porque por tuas palavras serás justificado, e por tuas palavras serás condenado."
Mateus 12:37

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?


Referências:


José Carlos Macoratti