Neste artigo vamos criar uma aplicação ASP .NET Core MVC no ambiente Linux. A seguir vamos criar uma imagem Docker para esta app e criar um contêiner com a imagem. |
Vamos começar configurando o ambiente Linux e depois eu vou mostrar como criar a aplicação Web MVC usando a ferramenta de linha de comando NET CLI e o Visual Studio Code.
|
O ambiente Linux
Para este exemplo eu vou usar no ambiente Linux a distro
Ubuntu 18.04.1 LTS. É uma
máquina física, mas você pode criar uma máquina virtual (Vide
VirtualBox) que vai funcionar do mesmo jeito.
Instalando o .NET Core SDK 2.1
O .NET Core é o novo Framework open-source e multiplataforma da Microsoft.
|
Você tem que instalar a última versão estável no seu ambiente Linux.
Neste link você obtém a última versão estável do .NET Core que é a 2.1.403. Selecione a sua distribuição do Linux e siga as instruções para instalar no seu ambiente Linux.
Instalando o Visual Studio Code
O Visual Studio Code é o editor de códigos da Microsoft open-source e multiplataforma.
Para instalar o VS Code para Linux acesse o link : https://code.visualstudio.com/download escolha a sua distro Linux e siga as instruções.
Após instalar o VS Code você tem que instalar as seguintes extensões no VS Code para poder trabalhar com a linguagem C# :
Acima vemos as extensões instaladas no VS Code que eu estou usando.
Criando o projeto ASP .NET Core MVC
Abra um terminal de comandos no Linux e crie uma pasta onde o projeto vai ser armazenado usando os comandos mkdir para criar e cd para navegar entre as pastas.
Para o exemplo deste artigo eu crie uma pasta projetos e dentro dela outra pasta App1 onde vou criar o projeto ASP .NET Core MVC.
- mkdir projetos
- cd projetos
- mkdir App1
- cd App1
Posicionado na pasta App1 onde vai criar o projeto digite o comando para criar o projeto ASP .NET Core MVC usando a ferramenta de linha de comando NET CLI:
dotnet new mvc
Este comando cria um projeto na pasta atual com o mesmo nome da pasta.
Digite o comando para exibir o conteúdo da pasta : ls -g
Vemos os arquivos e pastas do projeto criados na pasta atual.
Vamos abrir o código do projeto no Visual Studio Code digitando : code .
Vemos acima o projeto aberto no VS Code no Linux e o arquivo de projeto .csproj mostrando as referências.
Vemos também a estrutura do projeto ASP .NET Core MVC contendo as pastas:
E o arquivo Startup.cs onde estão os métodos para configurar a aplicação que vamos ajustar.
Como nossa aplicação é bem simples e vai gerenciar informações de produtos ela vai ter apenas uma entidade chamada Produto.
Vamos agora criar a classe que representa a nossa entidade na pasta Models do projeto.
Nota:
Você pode colocar classes
do modelo em qualquer lugar
em seu projeto, mas a pasta
Models é usada por
convenção.
As classes são
criadas na pasta Models clicando com o botão
direito sobre a pasta, selecionando New C# Class
e a seguir informando o nome da classe.
Vamos iniciar criando o arquivo Produto.cs e nele vamos definir a classe Produto conforme abaixo:
public class Produto
{
public Produto (string nome=null, string categoria=null, decimal preco=0)
{
this.Nome = nome;
this.Categoria = categoria;
this.Preco = preco;
}
public int ProdutoId { get; set; }
public string Nome { get; set; }
public string Categoria {get; set; }
public decimal Preco {get; set; }
}
|
A propriedade ProdutoId será a coluna de chave primária da tabela de banco de dados que corresponde a essa classe.
Neste exemplo, inicialmente não vamos usar um banco de dados para tornar mais simples o exemplo. Vamos criar um repositório fictício com dados de teste estáticos para começar, e, depois, podemos substituí-lo por uma implementação que acesse um banco de dados real.
Vamos criar uma interface chamada IRepository.cs na pasta Models com o código abaixo:
Essa interface fornece acesso a uma coleção de objetos Produto por meio de uma propriedade chamada Produtos. Para um projeto real o repositório deveria dar suporte a poder crair e modificar objetos, mas para o nosso exemplo, o acesso somente leitura é suficiente para exibir a página de produtos e depois fazermos o deploy e criar a imagem no Docker.
Para fornecer os dados de teste para a nossa aplicação vamos incluir um arquivo chamado TesteRepository.cs na pasta Models com o código abaixo:
A classe
TesteRepository implementa
a classe IRepository, e sua
propriedade Produtos retorna um
coleção de objetos Produto
criados com dados estáticos. São dados fictícios que
podemos substituir por uma implementação que acessa um
banco de dados real.
Registrando o repositório com injeção de dependência
A ASP.NET Core implementa
a injeção de dependência por padrão. Os serviços são registrados com
injeção de dependência durante a inicialização do
aplicativo. Componentes que requerem esses serviços
(como controladores MVC) fornecem esses serviços
através de parâmetros do construtor.
Para registrar a implementação do nosso repositório
como um serviço, abra o arquivo Startup.cs e
adicione a linha destacada ao método
ConfigureServices:
// Add framework services.
services.AddMvc();
}
....
|
Na implementação da Injeção de dependência do ASP.NET Core, vemos o conceito de lifetimes ou "tempo de vidas". Um lifetime ou tempo de vida especifica quando um objeto DI-injetado é criado ou recriado. Existem três possibilidades:
O parâmetro IServiceCollection permite configurar diferentes tipos de serviços, seja por criação de objeto ou correspondência a uma interface específica, e suporta os lifetimes mencionados.
No nosso exemplo usamos o lifetime Transient e informando que quando tivermos uma referência a uma instância da interface queremos que seja injetado a instância da classe concreta.
Definindo o Controlador e a View
Vamos agora ajustar o controlador HomeController que já existe na pasta Controllers , injetando o serviço do nosso repositório no construtor e alterando o código do método Action Index para retornar uma lista de produtos para a view.
Abra o arquivo HomeController.cs e altere o código conforme abaixo:
A seguir vamos alterar o código da view Index.cshtml que esta na pasta \Views\Home conforme abaixo:
Pronto.
Agora podemos executar o nosso projeto digitando no terminal estando na pasta do projeto :
dotnet run
Abrindo o navegador padrão em http://localhost:5000 iremos obter o seguinte resultado:
Vemos assim nossa view Index.cshtml exibir a relação de produtos definida em nosso repositório fake.
Temos assim uma aplicação ASP .NET Core MVC bem simples que podemos usar para criar uma imagem no Docker.
Pegue o projeto completo aqui : AppWebLinux.tar.gz
Veja a continuação deste artigo usando um banco de dados MySql.
Acompanhe a criação da imagem no Docker neste artigo: Criando uma imagem Docker
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Entity Framework - Conceitos Básicos - Uma visão geral - Macoratti
https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite
https://www.microsoft.com/net/download/linux-package-manager/ubuntu18-04/sdk-2.1.403