Introducción a ASP.NET CoreGetting Started with ASP.NET Core

Visual Studio para Mac facilita el desarrollo del servicio de su aplicación gracias a su compatibilidad con la plataforma de desarrollo web de ASP.NET Core más reciente.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. ASP.NET Core se ejecuta en .NET Core, la evolución más reciente de .NET Framework y el tiempo de ejecución.ASP.NET Core runs on .NET Core, the latest evolution of the .NET Framework and runtime. Se ha ajustado para ofrecer un rendimiento rápido, se ha factorizado para admitir tamaños de instalación pequeños y se ha reinventado para ejecutarse en Linux y macOS, así como en 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.

Instalación de .NET CoreInstalling .NET Core

.NET Core 1.1 se instala automáticamente cuando se instala Visual Studio para Mac..NET Core 1.1 is automatically installed when you install Visual Studio for Mac.

Crear una aplicación de ASP.NET Core en Visual Studio para MacCreating an ASP.NET Core app in Visual Studio for Mac

Abra Visual Studio para Mac.Open Visual Studio for Mac. En la página principal, seleccione Nuevo proyecto…On the welcome page select New Project...

Cuadro de diálogo Nuevo proyecto

Se mostrará el cuadro de diálogo Nuevo proyecto, que le permite seleccionar una plantilla para crear la aplicación.This will display the New Project dialog, allowing you to select a template to create your application.

Hay una serie de proyectos que le proporcionarán una plantilla predefinida para empezar a compilar la aplicación de 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. Estos son:These are:

  • .NET Core > Aplicación web vacía de ASP.NET Core.NET Core > ASP.NET Core Empty Web Application
  • .NET Core > Aplicación web de ASP.NET Core.NET Core > ASP.NET Core Web App
  • .NET Core > API web de ASP.NET Core.NET Core > ASP.NET Core Web API
  • Multiplataforma > Aplicación > Aplicación conectadaMulti-platform > App > Connected App

Opciones de proyecto de ASP.NET

Seleccione ASP.NET Core Empty Web Application (Aplicación web vacía de ASP.NET Core) y pulse Siguiente.Select the ASP.NET Core Empty Web Application and press Next. Asígnele un nombre al proyecto y pulse Crear.Give the Project a Name and press Create. Esto crea una aplicación de ASP.NET Core, que debería parecerse a la imagen siguiente:This creates a new ASP.NET Core app, that should look similar to the image below:

Vista de nuevo proyecto vacío de ASP.NET Core

La aplicación web vacía de ASP.NET Core crea una aplicación web con dos archivos predeterminados: Program.cs y Startup.cs, que se explican a continuación.The ASP.NET Core Empty Web Application creates a web application with two default files: Program.cs and Startup.cs, which are explained below. También crea una carpeta Dependencias, que contiene las dependencias de paquetes NuGet del proyecto, como ASP.NET Core, .NET Core Framework y los destinos de MSBuild que compilan el proyecto: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:

Panel de solución con las dependencias

Program.csProgram.cs

Abra e inspeccione el archivo Program.cs del proyecto.Open and inspect the Program.cs file in your project. Observe que suceden dos cosas en el método Main, la entrada en la aplicación: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();
}

Una aplicación de ASP.NET Core crea un servidor web en su método principal, para lo que configura e inicia un host mediante una instancia 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 generador proporciona métodos que permiten configurar el host.This builder provides methods to allow the host to be configured. En la aplicación de plantilla se usan las configuraciones siguientes:In the template app the following configurations are used:

  • UseKestrel: especifica que la aplicación usará el servidor Kestrel.UseKestrel: Specifies the Kestrel server will be used by the app
  • UseContentRoot(Directory.GetCurrentDirectory()): usa la carpeta raíz del proyecto web como raíz del contenido de la aplicación cuando la aplicación se inicia desde esta carpeta.UseContentRoot(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 la aplicación debería funcionar con IIS..UseIISIntegration(): Specifies that the app should work with IIS. Para usar IIS con ASP.NET Core, deben especificarse UseKestrel y UseIISIntegration.To use IIS with ASP.NET Core both UseKestrel and UseIISIntegration need to be specified.
  • .UseStartup<Startup>(): especifica la clase Startup..UseStartup<Startup>(): Specifies the Startup class.

    Los métodos de Compilación y ejecución compilan la interfaz IWebHost que hospedará la aplicación y la inician al escuchar las solicitudes HTTP entrantes.The Build and Run methods build the IWebHost that will host the app and start it listening for incoming HTTP requests.

Startup.csStartup.cs

La clase Startup de la aplicación se especifica en el método UseStartup() en WebHostBuilder.The Startup class for your app is specified in the UseStartup() method on the WebHostBuilder. Es en esta clase donde especificará la canalización de control de solicitudes y donde configurará los servicios.It is in this class that you will specify the request handling pipeline, and where you configure any services.

Abra e inspeccione el archivo Startup.cs del proyecto: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!");
        });
    }
}

La clase Startup siempre debe cumplir las reglas siguientes:This Startup class must always adhere to the following rules:

  • Siempre debe ser pública.It must always be public
  • Debe contener los dos métodos públicos ConfigureServices y Configure.It must contain the two public methods: ConfigureServices and Configure

El método ConfigureServices define los servicios que usará la aplicación.The ConfigureServices method defines the services that will be used by your app.

Configure permite crear la canalización de solicitudes mediante software intermedio.The Configure allows you to compose your request pipeline using Middleware. Se trata de componentes que se usan dentro de una canalización de aplicación de ASP.NET para controlar las solicitudes y las respuestas.These are components used within an ASP.NET application pipeline to handle requests and responses. La canalización HTTP está formada por una serie de delegados de solicitud, a los que se llama en secuencia.The HTTP pipeline consists of a number of request delegates, called in sequence. Cada delegado puede elegir controlar la solicitud o pasarla al delegado siguiente.Each delegate can choose to either handle the request itself, or pass it to the next delegate.

Puede configurar los delegados mediante los métodos Run, Map y Use en IApplicationBuilder, pero el método Run nunca llamará al delegado siguiente y siempre se debe usar al final de la canalización.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.

El método Configure de la plantilla predefinida está diseñado para realizar una serie de acciones.The Configure method of the pre-built template is built to do a few things. En primer lugar, configura una página de control de excepciones para su uso durante el desarrollo.First, it configures an exception handling page for use during development. Después, envía una respuesta a la página web que realiza la solicitud con un simple "Hello World".Then, it sends a response to the requesting web page with a simple "Hello World".

Este sencillo proyecto Hello, World se puede ejecutar ahora sin necesidad de agregar más código.This simple Hello, World project can run now without any additional code being added. Para ejecutar la aplicación y verla en el explorador, pulse el botón Reproducir (el botón triangular) en la barra de herramientas:To run the app, and view it in your browser, press the Play (Triangular) button in the toolbar:

Ejecutar la aplicación

Visual Studio para Mac usa un puerto aleatorio para iniciar el proyecto web.Visual Studio for Mac uses a random port to launch your web project. Para averiguar qué puerto es, abra la salida de la aplicación, que aparece en Vista > Paneles.To find out what port this is, open the Application Output, which is listed under View > Pads. La salida debería parecerse a la que se muestra a continuación:You should find output similar to that shown below:

Salida de la aplicación en la que se muestra el puerto de escucha

Abra su explorador preferido y escriba http://localhost:5000/. Reemplace 5000 por el puerto que Visual Studio genera en la salida de la aplicación.Open your browser of choice, and enter http://localhost:5000/, replacing the 5000 with the port that Visual Studio output in the Application Output. Debería ver el texto Hello World!:You should see the text Hello World!:

explorador en el que se muestra el texto

Agregar un controladorAdding a Controller

Las aplicaciones de ASP.NET Core usan el modelo de diseño Controlador de vista de modelos (MVC) para proporcionar una separación lógica de las responsabilidades para cada elemento de la aplicación.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. MVC consta de los siguientes elementos:MVC consists of the following:

  • Model: clase que representa los datos de la aplicación.Model: A class that represents the data of the app.
  • View: muestra la interfaz de usuario de la aplicación (que suelen ser los datos del modelo).View: Displays the app's user interface (which is often the model data).
  • Controller: clase que controla las solicitudes del explorador y responde a la entrada y la interacción del usuario.Controller: A class which handles browser requests, responds to user input and interaction.

Para obtener más información sobre el uso de MVC, vea la guía Overview of ASP.NET Core MVC (Introducción a MVC de ASP.NET Core).For more information on using MVC refer to Overview of ASP.NET Core MVC guide.

Para agregar un controlador, haga lo siguiente:To add a controller, do the following:

  1. Haga clic con el botón derecho en el nombre del proyecto y seleccione Agregar > New Files (Nuevos archivos).Right-click on the Project name and select Add > New Files. Seleccione General > Clase vacía y escriba un nombre de controlador:Select General > Empty Class, and enter a controller name:

    Cuadro de diálogo Nuevo archivo

  2. Agregue el código siguiente al nuevo 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. Agregue la dependencia Microsoft.AspNetCore.Mvc al proyecto. Para ello, haga clic con el botón derecho en la carpeta Dependencia y seleccione Agregar paquete…Add the Microsoft.AspNetCore.Mvc dependency to the project by right-clicking the Dependency folder, and selecting Add Package....

  4. Use el cuadro de búsqueda para buscar la biblioteca de NuGet para Microsoft.AspNetCore.Mvc y seleccione Agregar paquete.Use the Search box to browse the NuGet library for Microsoft.AspNetCore.Mvc, and select Add Package. Es posible que tarde unos minutos en instalarse y que se le pida que acepte varias licencias para las dependencias necesarias:This may take a few minutes to install and you may be prompted to accept various licenses for the required dependencies:

    Agregar NuGet

  5. En la clase Startup, quite la expresión lambda app.Run y establezca la lógica de enrutamiento de dirección URL usada por MVC para determinar qué código debe invocar para lo siguiente: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?}");
    });
    

    Asegúrese de quitar la expresión lambda app.Run, ya que invalidará la lógica de enrutamiento.Make sure to remove the app.Run lambda, as this will override the routing logic.

    MVC usa el formato siguiente para determinar qué código se ejecuta:MVC uses the following format, to determine which code to run:

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

    Al agregar el fragmento de código anterior, le indica a la aplicación que use como valor predeterminado el controlador HelloWorld y el método de acción Index.When you add the code snippet above, you are telling the app to default to the HelloWorld Controller, and the Index action method.

  6. Agregue la llamada services.AddMvc(); al método ConfigureServices, como se muestra a continuación:Add the services.AddMvc(); call to the ConfigureServices method, as illustrated below:

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

    También puede pasar información de parámetros desde la dirección URL al controlador.You can also pass parameter information from the URL to the controller.

  7. Agregue otro método a HelloWorldController, como se muestra a continuación: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. Si ejecuta ahora la aplicación, debería abrir automáticamente el explorador:If you run the app now, it should automatically open your browser:

    Aplicación en ejecución en el explorador

  9. Intente ir a http://localhost:xxxx/HelloWorld/Xamarin?name=Amy (reemplace xxxx por el puerto correcto). Debería aparecer lo siguiente:Try to browse to http://localhost:xxxx/HelloWorld/Xamarin?name=Amy (replacing xxxx with the correct port), you should see the following:

    Aplicación en ejecución en el explorador con argumentos

Solución de problemasTroubleshooting

Si necesita instalar .NET Core manualmente en Mac OS 10.11 (El Capitan) y versiones posteriores, haga lo siguiente:If you need to install .NET Core manually on Mac OS 10.11 (El Capitan) and higher, do the following:

  1. Antes de iniciar la instalación de .NET Core, asegúrese de que ha instalado la versión estable más reciente de todas las actualizaciones del sistema operativo.Before you start installing .NET Core, ensure that you have updated all OS updates to the latest stable version. Para comprobarlo, vaya a la aplicación del App Store y seleccione la pestaña Actualizaciones.You can check this by going to the App Store application, and selecting the Updates tab.

  2. Siga los pasos indicados en el sitio de .NET Core.Follow the steps listed on the .NET Core site.

Complete los cuatro pasos correctamente para asegurarse de que .NET Core está instalado correctamente.Make sure to complete all four steps successfully to ensure that .NET Core is installed successfully.

ResumenSummary

En esta guía, se le ha proporcionado una introducción a ASP.NET Core.This guide gave an introduction to ASP.NET Core. Describe qué es, cuándo se usa y cómo se usa en 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 obtener más información sobre los pasos siguientes, vea las guías que se indican a continuación:For more information on the next steps from here, refer to the following guides: