.NET Platform

O que é o ASP.NET Core?

O ASP.NET Core é uma versão do ASP.NET para a plataforma .NET Core. Só que antes de conhecê-lo precisamos voltar um pouco no tempo.

Em 2002, no lançamento da versão 1.0 do .NET Framework, a Microsoft lançou com esta plataforma o ASP.NET, como um sucessor da tecnologia ASP ( Active Server Pages).

Por se tratar de uma extensão do .NET Framework, assim como ele, no início o ASP.NET possuía poucos recursos. Suportava todas as linguagens de programação compatíveis com a plataforma .NET, mas ainda era muito limitado.

C# (C Sharp) Intermediário
Curso de C# (C Sharp) Intermediário
CONHEÇA O CURSO

Replicando o desenvolvimento Desktop na web

No seu lançamento, o ASP.NET trouxe o modelo de aplicação Web Forms (ASP.NET Web Forms), cujo objetivo era replicar o desenvolvimento Desktop em uma aplicação web.

Em 2002, o desenvolvimento Desktop possuía ferramentas como Delphi e Visual Basic, que permitiam que uma tela fosse criada com o arrastar de controles. Desta forma, o desenvolvedor não precisava se preocupar com a codificação dos componentes da interface, apenas com a lógica de negócios.

Replicando isso na web, o ASP.NET Web Forms permitia que os desenvolvedores criassem interfaces web arrastando componentes. O ASP.NET se encarregaria de criar o HTML, CSS e JavaScript da página, e o desenvolvedor poderia focar na lógica de negócio da aplicação.

Olhando em retrospecto, na época esta foi uma boa solução, pois ajudou os desenvolvedores Desktop migrarem para o desenvolvimento web. Entretanto, o HTML gerado pelo ASP.NET tinha pouca legibilidade, hoje seria considerado um código muito poluído, por isso ao logo do tempo o Web Forms entrou em desuso e hoje está descontinuado.

Padrões de projetos vem ao resgate

Para melhorar a qualidade das aplicações ASP.NET, em 2009 foi lançado o modelo de aplicação MVC (ASP.NET MVC), cujo objetivo era aplicar o padrão de projetos MVC. Neste tipo de aplicação, os componentes são separados em três camadas lógicas:

  • Model (camada de negócio);
  • View (camada de apresentação);
  • Controller (camada de controle).

Um model representa o estado de um aspeto particular da aplicação. O controller lida com as interações e alterações do model para refletir o estado da aplicação e passa essas informações para a view. A view recebe as informações do controller e as exibe para o usuário.

Não possuindo mais o recurso de arrastar componentes para criar as páginas, mas isoladas na camada view, o ASP.NET MVC permitia que um desenvolvedor front-end pudesse focar na criação das páginas, enquanto outro lidasse com a lógica de negócio das camadas model e controller.

A constante busca pela evolução

Buscando uma evolução constante, ao longo do tempo foram lançados vários recursos ao ASP.NET, como: Web API, que permite criar APIs; Razor, uma template engine; ASP.NET AJAX, que facilita a adição de Ajax em aplicações ASP.NET; entre outros.

Nesta procura por evolução, a Microsoft notou que a comunidade poderia ajudá-la, assim, em 2012 decidiu abrir o código fonte do ASP.NET (entre outros produtos). E trabalhando em conjunto com a comunidade nas atualizações do ASP.NET, notou que a plataforma necessitava de muitas modificações que não poderiam ser aplicadas na versão existente, assim nasceu o ASP.NET Core.

Windows Server 2016 - Internet Information Services
Curso de Windows Server 2016 - Internet Information Services
CONHEÇA O CURSO

Então surge o ASP.NET Core

Sucessor do ASP.NET, o ASP.NET Core é um framework open-source, multiplataforma, criado pela Microsoft e a comunidade. Leve, rápido e modular, funciona em conjunto com o .NET Core.

Lançado em 2016, mesmo sendo um sucessor do ASP.NET, o ASP.NET Core foi criado totalmente do zero, para que não precisasse se preocupar com código legado permitindo assim seguir o padrão de desenvolvimento web moderno.

Assim como outras plataformas, o ASP.NET Core é totalmente modular, recursos podem ser adicionados via pacotes Nuget. O que permitiu que a plataforma fosse mais performática que seu antecessor. Além disso, não necessita de uma IDE específica, todo desenvolvimento pode ser feito via linha de comando. O que permite que uma aplicação criada em uma plataforma possa ser movida para outra, sem a perda de nenhum recurso ou funcionalidade.

Devido a todo seu poder, caso necessite criar uma aplicação web, não deixe de dar uma olhada no ASP.NET Core.

O que é o NuGet?

O NuGet é um gerenciador de dependências para a plataforma .NET. Ele define como os pacotes desta plataforma são criados, publicados e consumidos. Fornecendo ferramentas para cada uma dessas funções.

C# (C Sharp) - ASP.NET MVC
Curso de C# (C Sharp) - ASP.NET MVC
CONHEÇA O CURSO

Estrutura de um pacote NuGet

Caso não esteja familiarizado com desenvolvimento .NET, antes de falar da estrutura de um pacote NuGet, é importante compreender que nesta plataforma podemos criar projetos de biblioteca, ou apenas biblioteca. Este tipo de projeto não pode ser executado diretamente, ele não é um executável. Trata-se de códigos úteis para outros projetos.

Ao ser compilada, uma biblioteca gera um arquivo DLL. Será esta DLL que os outros projetos irão utilizar. O NuGet aproveita desta característica da plataforma para definir seus pacotes.

Na prática, um pacote NuGet é um arquivo compactado com a extensão .nupkg que contém um código compilado (DLL), outros arquivos relacionados a este código (como imagens, etc.) e um arquivo de configuração que contém informações sobre o pacote, como: número de versão, criador, etc.

Estes pacotes .nupkg podem ser publicados em repositórios públicos ou privados, onde os desenvolvedores podem consumi-los, adicionando-os em seus projetos e utilizando no código as funcionalidades que fornecerem.

Distribuição dos pacotes

Para facilitar a distribuição dos pacotes, o NuGet mantém um repositório público, o NuGet.org, onde qualquer desenvolvedor pode publicar, pesquisar e consumir pacotes. Contendo mais de 100.000 pacotes, este repositório é utilizado por milhões de desenvolvedores .NET/.NET Core todos os dias.

Entretanto, o NuGet também permite a criação de repositórios privados ou locais. Assim, um desenvolvedor não precisa publicar em um repositório público um pacote crítico que é utilizado apenas pelos projetos da sua empresa.

Independente do tipo do repositório, ele funciona como a ligação dentre os criadores dos pacotes e os desenvolvedores que os consome. Podemos ilustrar isso com a imagem abaixo:

Os criadores publicam os arquivos .nupkg nos repositórios, onde os desenvolvedores podem pesquisá-los e adicioná-los nos projetos .Net.

Gerenciamento dos pacotes

Da mesma forma que outras plataformas, o .NET está disponível em várias versões, consequentemente, o desenvolvedor que estiver criando um pacote precisa definir para qual versão da plataforma ele será compatível. Um mesmo pacote pode ser compatível com uma versão específica ou várias.

Ao ser consumido, o NuGet irá analisar se o pacote é compatível com a versão do .NET definida no projeto destino. Caso não seja, ele não será adicionado ao projeto. Isso também vale para as dependências deste pacote.

Assim como qualquer projeto, um pacote pode fazer uso de outros pacotes. Mas o desenvolvedor não precisa se preocupar com isso, pois o NuGet irá cuidar de qualquer dependência de nível inferior que houver.

Para compreender melhor este ponto, a imagem abaixo ilustra bem como funciona esta “árvore” de dependência (o NuGet também dá o nome de “grafo de dependência”):

Observe que na imagem alguns pacotes se repetem. Quando isso ocorrer, o pacote em questão não será obtido várias vezes. Mesmo que sejam versões diferentes, o NuGet irá verificar qual versão do pacote pode ser compartilhada entre todos que o referenciam e irá obter apenas esta versão.

Ferramentas e outras características do NuGet

Este gerenciador de pacotes fornece uma ferramenta de linha de comando que permite criar, pesquisar e instalar pacotes. O NuGet CLI pode ser obtido no NuGet.org, entretanto, como o SDK do .NET Core e o Visual Studio (tanto a versão para Windows, quanto a de MacOS) já fornecem suporte a este gerenciador, ele raramente é utilizado.

Outro motivo do pouco uso desta ferramenta de linha de comando é a falta de suporte a projetos do Visual Studio.

Todo projeto .NET possui um arquivo onde serão salvas suas configurações. Por exemplo, um projeto de console simples, definirá um arquivo similar ao abaixo:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

</Project>

Comumente conhecido como “arquivo de projeto”, ele também é utilizado pelo NuGet registrar os pacotes que estiverem sendo utilizados. Porém, caso um pacote seja instalado com o NuGet CLI, ele não é registrado neste arquivo.

Quando registrado, o pacote é indicado em uma tag <PackageReference> que contém o nome e a versão utilizada:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
  </ItemGroup>

</Project>

Assim, caso seja utilizada apenas o NuGet CLI, é necessário que esta tag <PackageReference> seja adicionada manualmente e a ferramenta é utilizada para restaurar os pacotes do projeto.

Por serem utilizados em tempo de compilação e execução, não é necessário que os binários dos pacotes sejam compartilhados junto com o código do projeto. Mas antes de ser compilado na máquina destino, os pacotes precisam ser restaurados.

Utilizando o NuGet CLI, isso é feito com o comando nuget install. Já o SDK do .NET e o Visual Studio realiza este procedimento automaticamente quando o projeto for compilado ou executado.

C# (C Sharp) - APIs REST com ASP.NET Web API
Curso de C# (C Sharp) - APIs REST com ASP.NET Web API
CONHEÇA O CURSO

Conclusão

Esta foi uma breve introdução do NuGet. Por ser uma ferramenta integrada a plataforma .NET, muitos não dão o devido valor que este gerenciador de pacotes merece.

Mas como vimos aqui, o trabalho de um gerenciador de pacotes é muito importante e, ao menos o NuGet, não se resume apenas em baixar os arquivos dos pacotes. Para que seja eficiente são realizadas muitas tarefas nos bastidores.

Caso queria conhecer mais sobre esta ferramenta, já abordei a criação de repositórios para ela.

© 2004 - 2019 TreinaWeb Tecnologia LTDA - CNPJ: 06.156.637/0001-58 Av. Paulista, 1765, Conj 71 e 72 - Bela Vista - São Paulo - SP - 01311-200