Introdução ao ASP.NET CoreGetting Started with ASP.NET Core

O Visual Studio para Mac facilita o desenvolvimento do serviço de seu aplicativo por meio de seu suporte para a plataforma de desenvolvimento na Web ASP.NET Core mais recente.Visual Studio for Mac makes it easy to develop your app’s service with its support for the latest ASP.NET Core Web development platform. O ASP.NET Core é executado no .NET Core, a evolução mais recente do .NET Framework e o tempo de execução.ASP.NET Core runs on .NET Core, the latest evolution of the .NET Framework and runtime. Ele foi ajustado a fim de proporcionar um desempenho rápido, perfeito para instalações de pequeno porte e recriado para ser executado no Linux, macOS e também no Windows.It’s been tuned for fast performance, factored for small install sizes, and re-imagined to run on Linux and macOS, as well as Windows.

Instalando o .NET CoreInstalling .NET Core

O .NET Core 1.1 é instalado automaticamente quando você instala o Visual Studio para Mac..NET Core 1.1 is automatically installed when you install Visual Studio for Mac.

Criar um aplicativo do ASP.NET Core no Visual Studio para MacCreating an ASP.NET Core app in Visual Studio for Mac

Abra o Visual Studio para Mac.Open Visual Studio for Mac. Na página inicial, escolha Novo Projeto...On the welcome page select New Project...

Nova caixa de diálogo de projeto

Isso exibirá a caixa de diálogo Novo projeto, permitindo que você selecione um modelo para criar seu aplicativo.This will display the New Project dialog, allowing you to select a template to create your application.

Diversos projetos fornecem um modelo criado previamente para começar a criar seu aplicativo do ASP.NET Core.There are a number of projects that will provide you with a pre-built template to start building your ASP.NET Core Application. Elas são:These are:

  • .NET Core > Aplicativo Web ASP.NET Core vazio.NET Core > ASP.NET Core Empty Web Application
  • .NET Core > Aplicativo Web ASP.NET Core.NET Core > ASP.NET Core Web App
  • .NET Core > API da Web ASP.NET Core.NET Core > ASP.NET Core Web API
  • Multiplataforma > Aplicativo > Aplicativo conectadoMulti-platform > App > Connected App

Opções do projeto ASP.NET

Selecione o Aplicativo Web vazio ASP.NET Core e pressione Avançar.Select the ASP.NET Core Empty Web Application and press Next. Escolha um nome para o projeto e pressione Criar.Give the Project a Name and press Create. Isso cria um novo aplicativo ASP.NET Core, que deve ser semelhante à imagem abaixo:This creates a new ASP.NET Core app, that should look similar to the image below:

Nova exibição Projeto ASP.NET Core vazio

O aplicativo Web ASP.NET Core vazio cria um aplicativo Web com dois arquivos padrão: Program.cs e Startup.cs, que são explicados abaixo.The ASP.NET Core Empty Web Application creates a web application with two default files: Program.cs and Startup.cs, which are explained below. Ele também cria uma pasta de Dependências, que contém as dependências do pacote NuGet do seu projeto, como ASP.NET Core, a estrutura .NET Core e os destinos do MSBuild que compilam o projeto:It also creates a Dependencies folder, which contains your project’s NuGet package dependencies such as ASP.NET Core, the .NET Core framework, and the MSBuild targets that build the project:

Painel de Soluções exibindo as dependências

Module.vbProgram.cs

Abra e inspecione o arquivo Program.cs no seu projeto.Open and inspect the Program.cs file in your project. Observe que duas coisas ocorrem no método Main, a entrada no seu aplicativo:Notice that two things are happening in the Main method – the entry into your app:

public static void Main(string[] args)
{
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

Um aplicativo ASP.NET Core cria um servidor Web em seu método principal configurando e iniciando um host por meio de uma instância de WebHostBuilder.An ASP.NET Core app creates a web server in its main method by configuring and launching a host via an instance of WebHostBuilder. Este construtor fornece métodos para permitir que o host seja configurado.This builder provides methods to allow the host to be configured. As seguintes configurações são usadas no aplicativo modelo:In the template app the following configurations are used:

  • UseKestrel: especifica que o servidor Kestrel será usado pelo aplicativoUseKestrel: Specifies the Kestrel server will be used by the app

  • UseContentRoot(Directory.GetCurrentDirectory()): usa pasta raiz do projeto Web como a raiz de conteúdo do aplicativo ele for iniciado desta pastaUseContentRoot(Directory.GetCurrentDirectory()): Uses the web project's root folder as the app's content root when the app is started from this folder

  • .UseIISIntegration(): especifica que o aplicativo funcionará com o IIS..UseIISIntegration(): Specifies that the app should work with IIS. Para usar o IIS com o ASP.NET Core, tanto UseKestrel quanto UseIISIntegration precisam ser especificados.To use IIS with ASP.NET Core both UseKestrel and UseIISIntegration need to be specified.

  • .UseStartup<Startup>(): especifica a classe Startup..UseStartup<Startup>(): Specifies the Startup class.

    Os métodos Build e Run compilam o IWebHost que hospedará o aplicativo e iniciam sua escuta de solicitações HTTP de entrada.The Build and Run methods build the IWebHost that will host the app and start it listening for incoming HTTP requests.

Startup.csStartup.cs

A classe Startup para seu aplicativo é especificada no método UseStartup() no WebHostBuilder.The Startup class for your app is specified in the UseStartup() method on the WebHostBuilder. É nessa classe que você especificará a pipeline de tratamento de solicitação e onde você configura todos os serviços.It is in this class that you will specify the request handling pipeline, and where you configure any services.

Abra e inspecione o arquivo Startup.cs no seu projeto:Open and inspect the Startup.cs file in your project:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
    }
}

Essa classe Startup sempre deve cumprir as seguintes regras:This Startup class must always adhere to the following rules:

  • Ele sempre deve ser públicaIt must always be public
  • Ela deve conter os dois métodos públicos: ConfigureServices e ConfigureIt must contain the two public methods: ConfigureServices and Configure

O método ConfigureServices define os serviços que serão usados pelo seu aplicativo.The ConfigureServices method defines the services that will be used by your app.

O Configure permite compor o pipeline de solicitação usando Middleware.The Configure allows you to compose your request pipeline using Middleware. Esses componentes são usados em um pipeline de aplicativo do ASP.NET para tratar solicitações e respostas.These are components used within an ASP.NET application pipeline to handle requests and responses. O pipeline HTTP consiste em diversos delegados de solicitação, chamados em sequência.The HTTP pipeline consists of a number of request delegates, called in sequence. Cada delegado pode escolher tratar a solicitação em si ou passá-la para o próximo delegado.Each delegate can choose to either handle the request itself, or pass it to the next delegate.

Você pode configurar delegados usando os métodos Run,Map e Use métodos em IApplicationBuilder, mas o método Run nunca chama um próximo delegado e sempre deve ser usado no final do pipeline.You can configure delegates by using the Run,Map, and Use methods on IApplicationBuilder, but the Run method will never call a next delegate and should always be used at the end of your pipeline.

O método Configure do modelo criado previamente é composto para realizar algumas tarefas.The Configure method of the pre-built template is built to do a few things. Primeiro, ele configura uma página de tratamento de exceções para ser usada durante o desenvolvimento.First, it configures an exception handling page for use during development. Em seguida, ele envia uma resposta para a página da Web solicitante com um simples “Olá, Mundo”.Then, it sends a response to the requesting web page with a simple "Hello World".

Esse simples projeto Olá, Mundo agora pode ser executado sem adição de qualquer código adicional.This simple Hello, World project can run now without any additional code being added. Para executar o aplicativo e exibi-lo no seu navegador, pressione o botão Executar (Triangular) na barra de ferramentas:To run the app, and view it in your browser, press the Play (Triangular) button in the toolbar:

Executar o Aplicativo

O Visual Studio para Mac usa uma porta aleatória para iniciar o projeto Web.Visual Studio for Mac uses a random port to launch your web project. Para descobrir qual porta é essa, abra a Saída do Aplicativo, que é listada em Exibir > Painéis.To find out what port this is, open the Application Output, which is listed under View > Pads. Você deve encontrar uma saída semelhante ao que é mostrado abaixo:You should find output similar to that shown below:

Saída do Aplicativo exibindo a porta de escuta

Abra o navegador de sua escolha e digite http://localhost:5000/, substituindo o 5000 pela porta que o Visual Studio usa para produzir a Saída do Aplicativo.Open your browser of choice, and enter http://localhost:5000/, replacing the 5000 with the port that Visual Studio output in the Application Output. Você deverá ver o seguinte texto Hello World!:You should see the text Hello World!:

navegador mostrando o texto

Adicionando um controladorAdding a Controller

Aplicativos ASP.NET Core usam o padrão de design MVC (Modelo-Exibição-Controlador) para fornecer uma separação lógica de responsabilidades para cada parte do aplicativo.ASP.NET Core Apps use the Model-View-Controller (MVC) design pattern to provide a logical separation of responsibilities for each part of the app. O MVC consiste no seguinte:MVC consists of the following:

  • Modelo: uma classe que representa os dados do aplicativo.Model: A class that represents the data of the app.
  • Exibição: exibe a interface do usuário do aplicativo (que muitas vezes são os dados de modelo).View: Displays the app's user interface (which is often the model data).
  • Controlador: uma classe que trata as solicitações do navegador, responde à entrada e interação do usuário.Controller: A class which handles browser requests, responds to user input and interaction.

Para obter mais informações sobre como usar o MVC, consulte Visão geral do guia de MVC do ASP.NET Core.For more information on using MVC refer to Overview of ASP.NET Core MVC guide.

Para adicionar um controlador, faça o seguinte:To add a controller, do the following:

  1. Clique com o botão direito do mouse no nome do Projeto e selecione Adicionar > Novos Arquivos.Right-click on the Project name and select Add > New Files. Selecione Geral > Classe Vazia e digite um nome de controlador:Select General > Empty Class, and enter a controller name:

    Caixa de diálogo Novo Arquivo

  2. Adicione o seguinte código ao novo controlador:Add the following code to the new controller:

    using System;
    using Microsoft.AspNetCore.Mvc;
    using System.Text.Encodings.Web;
    
    namespace Hello_ASP
    {
        public class HelloWorldController : Controller
        {
            //
            // GET: /HelloWorld/
    
            public string Index()
            {
                return "This is my default action...";
            }
    
        }
    }
    
  3. Adicione a dependência Microsoft.AspNetCore.Mvc ao projeto clicando com o botão direito do mouse na pasta Dependência e selecionando Adicionar Pacote....Add the Microsoft.AspNetCore.Mvc dependency to the project by right-clicking the Dependency folder, and selecting Add Package....

  4. Use a caixa de Pesquisa para procurar Microsoft.AspNetCore.Mvc na biblioteca de NuGet e selecione Adicionar Pacote.Use the Search box to browse the NuGet library for Microsoft.AspNetCore.Mvc, and select Add Package. A instalação pode levar alguns minutos e pode ser solicitado que você aceite várias licenças para as dependências necessárias:This may take a few minutes to install and you may be prompted to accept various licenses for the required dependencies:

    Adicionar Nuget

  5. Na classe Startup, remova o lambda app.Run e defina a lógica de roteamento de URL usada pelo MVC para determinar qual código deve invocar o seguinte:In the Startup class, remove the app.Run lambda and set the URL routing logic used by MVC to determine which code it should invoke to the following:

    app.UseMvc(routes =>
    {
        routes.MapRoute(
        name: "default",
        template: "{controller=HelloWorld}/{action=Index}/{id?}");
    });
    

    Lembre-se de remover o lambda app.Run, pois isso substituirá a lógica de roteamento.Make sure to remove the app.Run lambda, as this will override the routing logic.

    O MVC usa o formato a seguir para determinar qual o código deve ser executado:MVC uses the following format, to determine which code to run:

    /[Controller]/[ActionName]/[Parameters]

    Ao adicionar o snippet de código acima, você está solicitando que o aplicativo use o controlador HelloWorld e o método de ação Index como padrão.When you add the code snippet above, you are telling the app to default to the HelloWorld Controller, and the Index action method.

  6. Adicione a chamada services.AddMvc(); ao método ConfigureServices, conforme ilustrado abaixo:Add the services.AddMvc(); call to the ConfigureServices method, as illustrated below:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }
    

    Você também pode passar informações de parâmetro da URL para o controlador.You can also pass parameter information from the URL to the controller.

  7. Adicione outro método ao HelloWorldController conforme ilustrado abaixo:Add another method to your HelloWorldController, as illustrated below:

    public string Xamarin(string name)
    {
        return HtmlEncoder.Default.Encode($"Hello {name}, welcome to Visual Studio for Mac");
    }
    
  8. Se você executar o aplicativo agora, ele deverá abrir automaticamente o navegador:If you run the app now, it should automatically open your browser:

    Executando o aplicativo no navegador

  9. Tente navegar para http://localhost:xxxx/HelloWorld/Xamarin?name=Amy (substituindo xxxx pela porta correta), você deverá ver o seguinte:Try to browse to http://localhost:xxxx/HelloWorld/Xamarin?name=Amy (replacing xxxx with the correct port), you should see the following:

    Executando o aplicativo no navegador com argumentos

Solução de problemasTroubleshooting

Se você precisar instalar o .NET Core manualmente no Mac OS 10.11 (El Capitan) e superior, faça o seguinte:If you need to install .NET Core manually on Mac OS 10.11 (El Capitan) and higher, do the following:

  1. Antes de começar a instalar o .NET Core, verifique se você atualizou todas as atualizações do sistema operacional para a versão estável mais recente.Before you start installing .NET Core, ensure that you have updated all OS updates to the latest stable version. Você pode verificar isso acessando o aplicativo da App Store e selecionando a guia Atualizações.You can check this by going to the App Store application, and selecting the Updates tab.

  2. Siga as etapas listadas no site do .NET Core.Follow the steps listed on the .NET Core site.

Conclua todas as quatro etapas para garantir que o .NET Core seja devidamente instalado.Make sure to complete all four steps successfully to ensure that .NET Core is installed successfully.

ResumoSummary

Este guia forneceu uma introdução ao ASP.NET Core.This guide gave an introduction to ASP.NET Core. Ele descreve o que é, quando usá-lo e forneceu as informações sobre como usá-lo no Visual Studio para Mac.It describes what it is, when to use it, and provided information on using it in Visual Studio for Mac. Para obter mais informações sobre as próximas etapas a partir daqui, consulte os seguintes guias:For more information on the next steps from here, refer to the following guides: