Criando um projeto MVC com o dotnet CLI - parte 2

Neste post irei mostrar a evolução do projeto criado na parte 1, tornando ele um projeto MVC.

Para tal projeto, estarei utilizando o VS Code.

A primeira coisa a ser alterada, é o Sdk no nosso csproj, que deve ser alterado para Microsoft.NET.Sdk.Web.

Vamos remover também o OutputType, pois o projeto web não necessitaria gerar um exe como no projeto console.

E nosso TargetFramework ficará com netcoreapp2.0.

Ficando da seguinte forma o csproj.

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>
</Project>

Com estas alterações, o projeto está pronto para começar a se transformar em um projeto web.

O ponto de partida para tal modificação, é alterar o Program.cs. Mas para tais alterações, iremos precisar de alguns pacotes a serem adicionados no nosso csproj, que são:

  • Microsoft.AspNetCore
  • Microsoft.AspNetCore.Hosting
  • Microsoft.AspNetCore.Hosting.Abstractions

Todos na versão 2.0.0-preview1-final, ficando da seguinte forma o arquivo:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-preview1-final"/>
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.0-preview1-final"/>    
    <PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.0.0-preview1-final" />
  </ItemGroup>
</Project>

Lembrando que sempre que alterar o csproj é bom rodar o comando dotnet restore. Estando no VS Code, basta abrir o terminal e rodar o comando.

Agora vamos começar a codificar o Program.cs. As alterações consistem basicamente em configurar um Web Host para nossa aplicação. Para tal finalidade, iremos utilizar o a interface IWebHost disponível no namespace Microsoft.AspNetCore.Hosting.

No entanto quem irá fazer toda a mágica, é a classe WebHost que se encontra no namespace Microsoft.AspNetCore através do método CreateDefaultBuilder.

Mas para que tudo funcione, iremos precisar de um ponto de início, mais visto nos projetos MVC como Startup.cs. 

Sendo esta classe responsável por configurar os serviços que o nosso projeto Web irá precisar.

Basicamente esta classe irá ter dois métodos, o Configure e o ConfigureServices, sendo o Configure responsável por como nossa aplicação irá responder as requisições HTTP.

O ConfigureServices será o método responsável para adicionarmos as dependências que nosso projeto irá necessitar, como o uso do Entity Framework, Identity e do MVC, estando nele também as injeções de dependências que iremos utilizar para o projeto.

Com isso já teremos nosso projeto pronto para que possamos rodar o dotnet run.

Mas antes vamos aos códigos.

A classe Program ficou da seguinte forma

using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore;

namespace ExemploBlog
{
    class Program
    {
        static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseStartup<Startup>()
                    .Build();
    }
}

A classe Startup

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace ExemploBlog
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
        
        private IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {

        }
    }
}

Agora com nossas classes Program Startup prontas, já podemos executar o dotnet run.

Porém, se tentarmos acessar o endereço http://localhost:5000 teremos um erro de que não foi possível encontrar a página, pois não dizemos na nossa classe Startup como ela deve tratar as requisições HTTP.

Como em todo exemplo que encontramos, vamos criar o tão famoso Hello, World! 

Para isso, deixe o Configure da nossa classe Startup da seguinte forma, mas lembre-se de adicionar o namespace Microsoft.AspNetCore.Http.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.Run(async context =>
                    {
                        await context.Response.WriteAsync("Hello, World!");
                    });
        }

Com isso já poderemos rodar novamente com a execução do comando dotnet run e acessar o endereço http://localhost:5000 e vermos a mensagem "Hello, World!".

O código fonte para o projeto pode ser baixado do meu github

No próximo post irei mostrar como adicionar as dependências necessárias para podermos trabalhar com o MVC.

 

Comentar

Loading