ASP .NET 5 -  .NET Execution Environment - DNX : Uma visão Geral

 No artigo de hoje vou apresentar os conceitos básicos relacionados com o .NET Execution Environment (DNX) no qual se baseia a ASP .NET 5.

Nota :  Veja a atualização deste artigo em :  ASP .NET Core RC2 com Visual Studio Community 2015 - Usando o .NET CLI - I

A ASP .NET 5 (a nova versão da ASP .NET) é baseada no  .NET Execution Environment (DNX) o qual suporta a execução multiplataforma (cross-plataform) no Windows, Mac e Linux.

Nota:  Este artigo é uma tradução do original com acréscimos de outras fontes (MSDN):  DNX Overview

Então o que vem a ser exatamente o .NET Execution Environment (DNX) ?

O DNX é um kit de desenvolvimento (SDK) e um ambiente de execução (runtime environment) que possui tudo que você precisa para rodar aplicações .NET no Windows, Mac e Linux.

Ele fornece um processo de hospedagem, uma lógica de hospedagem CLR e um gerenciamento de reconhecimento de pontos de entrada e foi construído para executar aplicações ASP .NET em ambiente multiplataforma, podendo no entanto executar outros tipos de aplicativos .NET como o aplicações console multiplataforma.

Porque construir(build) usando o DNX ?

O desenvolvimento .NET multiplataforma DNX fornece um ambiente de desenvolvimento e execução consistente em múltiplas plataformas (Windows, Mac e Linux) e em diferentes sabores : 

  1. .NET Framework
  2. .NET Core
  3. Mono

Usando o DNX você pode desenvolver sua aplicação em uma plataforma executá-lo em uma plataforma diferente, dede que você tenha um DNX compatível instalado nessa plataforma. Você também pode contribuir com projetos DNX usando sua plataforma de desenvolvimento e ferramentas.

O .NET Core DNX simplifica sensivelmente o trabalho necessário para desenvolver aplicações multiplataforma, pois ele cuida da hospedagem do CLR, do gerenciamento de dependências e da inicialização da sua aplicação. Você pode definir facilmente projetos e soluções usando o formato JSON (project.json), podendo também construir e publicar seus projetos para distribuição.

Os gerenciadores de pacotes mudaram completamente a face do desenvolvimento do software moderno e o DNX torna mais fácil criar e consumir pacotes. Ele fornece ferramentas para instalação, criação e gerenciamento de pacotes Nuget.

Os projetos DNX também simplificam a construção de pacotes Nuget pela compilação cruzada para múltiplos frameworks de destino e podem tratar com pacotes de saída Nuget diretamente.  Assim, você pode referenciar pacotes Nuget diretamente em seus projetos e gerenciar dependências transitivas; pode também construir e instalar ferramentas de desenvolvimento como pacotes para o seu projeto de forma global em uma máquina.

O DNX também torna mais fácil trabalhar com projetos de código aberto, visto que com projetos DNX você pode substituir facilmente uma dependência existente com seu código fonte e deixar o DNX compilá-lo em memória em tempo de execução, podendo a seguir depurar a fonte e modificá-la sem ter que modificar o resto de sua aplicação.

Projetos DNX

Um projeto DNX é uma pasta contendo o arquivo project.json onde o nome do projeto é o nome da pasta.

Você usa projetos DNX para construir pacotes Nuget, e,  o arquivo project.json define o metadata do seu pacote, as dependências do seu projeto e para qual frameworks você quer construir.

Abaixo temos um exemplo de uma estrutura de um arquivo project.json:

Todos os arquivos na pasta são por padrão parte do projeto a menos que sejam explicitamente excluídos no project.json.

Você também pode definir comandos como parte do seu projeto que podem ser executados.

Você especifica quais frameworks deseja usar na propriedade : "frameworks", e o DNX irá realizar uma compilação cruzada para cada framework e criar a pasta lib correspondente no pacote Nuget construído.

Você pode usar o DNU - .NET Development Utility para construir, empacotar e publicar projetos DNX. A construção do projeto produz como saída os binários para o projeto. O empacotamento produz um pacote Nuget que pode ser enviado para um repositório de pacotes (Ex: http://nuget.org) e então ser consumido. A publicação coleta todas os artefatos requeridos em tempo de execução (o DNX e pacotes) em uma única pasta de forma que ele pode ser implementado como uma aplicação.

Dependências

As dependências no DNX são constituídas de um nome e um número de versão, onde o número de versão deve seguir uma semântica de versionamento. Basicamente as dependências referem-se a um pacote Nuget instalado ou outro projeto DNX.  As referências dos projetos são resolvidas usando pares de pastas para o projeto atual ou caminhos de projetos especificados usando um arquivo global.json a nível de solução.

Exemplo de dependências em um arquivo global.json:

O arquivo global.json também define a versão mínima do DNX ("sdk" version) necessária para construir o projeto.

As dependências são transitivas e você somente precisa especificar suas dependências de nível superior e o DNX irá lidar com a resolução de todo o gráfico de dependências usando os pacotes Nuget instalados.

As referências de projeto são resolvidas em tempo de execução através da construção do projeto referenciado na memória e isso significa que você tem a total flexibilidade para implantar sua aplicação DNX como um pacote de binários ou como um código fonte.

Pacotes e Feeds

Para resolver as dependências de pacotes eles primeiro precisam ser instalados e você pode usar o DNU para instalar um novo pacote em um projeto existente ou restaurar todas as dependências de pacotes para um projeto existente. O seguinte comando faz o download e instala todos os pacotes que são listados no arquivo project.json:

dnu restore

Os pacotes são restaurados usando o conjunto configurado de pacotes feeds. O pacote disponível pode ser configurado usando o Nuget configuration files (Nuget.config).

Comandos

Um comando é uma execução chamada de um ponto de entrada .NET com argumentos específicos. Você pode definir comandos no arquivo project.json :

Você pode então usar o DNX para executar os comandos definidos pelo seu projeto, como este:

dnx web

Os comandos podem ser criados e distribuídas como pacotes NuGet. Você pode então usar o DNU para instalar comandos globalmente em uma máquina:

dnu commands install seuComando

Host do aplicativo

A hospedagem da aplicação DNX é o primeiro ponto de entrada gerenciado invocado pelo DNX e é  responsável pelo tratamento da resolução da dependência e análise do arquivo project.json fornecendo serviços adicionais e invocando o ponto de entrada do aplicativo.

De forma alternativa você pode ter o DNX invocando o ponto de entrada do aplicativo diretamente. Fazer isso requer que seu aplicativo seja construído por completo e que tenha todas as dependências localizadas em um único diretório. (Usar o DNX sem usar o Host do aplicativo DNX não é comum.)

A hospedagem do aplicativo DNX fornece um conjunto de serviços para aplicações através da injeção de dependência sendo que serviços de hospedagem de aplicativos podem ser injetados no construtor da classe para o seu ponto de entrada principal ou como parâmetros de métodos adicional para o ponto de entrada.

Compilação de Módulos

Compilar módulos são um ponto de extensibilidade que lhe permitem participar no processo de compilação DNX. Você implementa um módulo de compilação através da implementação da interface ICompileModule e colocar o seu módulo de compilação em um compilador/preprocess ou compilador/postprocess em seu projeto.

Gerenciador de versão DNX

Você pode instalar várias versões e sabores do DNX em sua máquina. Para instalar e gerenciar diferentes versões do DNX você utiliza o .NET Version manager (DNVM) que permite que você liste as diferentes versões e sabores do DNX em sua máquina, instale uma nova versão e altere a versão do DNX ativa.

Temos assim uma visão geral do ambiente DNX, no qual se baseia a ASP .NET 5, onde vimos os conceitos básicos relacionados com os tópicos principais do ambiente DNX.

Em outros artigos irei abordar e aprofundar tópicos específicos procurando fornecer uma base teórica para que você possa compreender o que o ASP .NET 5 é , o que ele oferece e o que você pode esperar dele.

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 ?

     Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti