Laboratorio práctico: ASP.NET: Integrar formularios Web Forms de ASP.NET, MVC y Web API
por el equipo de Web Camps
Descarga del kit de formación de Web Camps
ASP.NET es un marco para desarrollar sitios web, aplicaciones y servicios usando tecnologías especializadas como MVC, Web API y otras. Con la expansión que ASP.NET ha tenido desde su creación y la necesidad expresa de tener estas tecnologías integradas, ha habido esfuerzos recientes en trabajar hacia One ASP.NET.
Visual Studio 2013 introduce un nuevo sistema de proyectos unificado que le permite desarrollar una aplicación y usar todas las tecnologías ASP.NET en un solo proyecto. Estas características eliminan la necesidad de elegir una tecnología al inicio de un proyecto y ceñirse a ella, y en su lugar fomentan el uso de varios marcos de ASP.NET dentro de un mismo proyecto.
Todos los fragmentos de código y código de ejemplo se incluyen en el Kit de formación de Web Camps, disponible en https://aka.ms/webcamps-training-kit.
Información general
Objetivos
En este laboratorio práctico, aprenderá a:
- Crear un sitio web basado en el tipo de proyecto One ASP.NET
- Use marcos de ASP.NET diferentes, como MVC y Web API en el mismo proyecto
- Identificar los componentes principales de una aplicación de ASP.NET
- Aprovechar el marco de ASP.NET Scaffolding para crear automáticamente Controladores y Vistas para realizar operaciones CRUD basadas en sus clases de modelo
- Exponer el mismo conjunto de información en formatos legibles por máquinas y por humanos usando la herramienta adecuada para cada trabajo
Requisitos previos
Se requiere lo siguiente para completar este laboratorio práctico:
Configuración
Para ejecutar los ejercicios en este laboratorio práctico, primero deberá configurar el entorno.
- Abra el Explorador de Windows y vaya a la carpeta Source del laboratorio.
- Haga clic con el botón derecho en Setup.cmd y seleccione Ejecutar como administrador para iniciar el proceso de instalación que configurará el entorno e instalará los fragmentos de código de Visual Studio para este laboratorio.
- Si se muestra el cuadro de diálogo Control de cuentas de usuario, confirme la acción para continuar.
Nota:
Asegúrese de que ha comprobado todas las dependencias de este laboratorio antes de ejecutar la instalación.
Uso de los fragmentos de código
A lo largo del documento de laboratorio, se le pedirá que inserte bloques de código. Para mayor comodidad, la mayoría de este código se proporciona como fragmentos de Visual Studio Code, a los que puede acceder desde Visual Studio 2013 para evitar tener que agregarlo manualmente.
Nota:
Cada ejercicio va acompañado de una solución inicial ubicada en la carpeta Begin del ejercicio que le permite seguir cada ejercicio independientemente de los demás. Tenga en cuenta que los fragmentos de código que se agregan durante un ejercicio faltan en estas soluciones iniciales y es posible que no funcionen hasta que haya completado el ejercicio. Dentro del código fuente de un ejercicio, también encontrará una carpeta End que contiene una solución de Visual Studio con el código que resulta de completar los pasos del ejercicio correspondiente. Puede usar estas soluciones como guía si necesita ayuda adicional a medida que trabaja en este laboratorio práctico.
Ejercicios
Este laboratorio práctico incluye los siguientes ejercicios:
- Creación de un nuevo proyecto de Web Forms
- Creación de un controlador de MVC usando Scaffolding
- Creación de un controlador de Web API usando Scaffolding
Tiempo estimado para completar este laboratorio: 60 minutos
Nota:
Cuando inicie Visual Studio por primera vez, debe seleccionar una de las colecciones de configuración predefinidas. Cada colección predefinida está diseñada para coincidir con un estilo de desarrollo determinado y determina los diseños de ventana, el comportamiento del editor, los fragmentos de código de IntelliSense y las opciones del cuadro de diálogo. Los procedimientos de este laboratorio describen las acciones necesarias para realizar una tarea determinada en Visual Studio al usar la colección Configuración de desarrollo general. Si elige una colección de configuraciones diferente para el entorno de desarrollo, puede haber diferencias en los pasos que debe tener en cuenta.
Ejercicio 1: Creación de un nuevo proyecto de Web Forms
En este ejercicio creará un nuevo sitio de Web Forms en Visual Studio 2013 usando la experiencia de proyecto unificado One ASP.NET, que le permitirá integrar fácilmente componentes de Web Forms, MVC y Web API en la misma aplicación. Después explorará la solución generada e identificará sus partes y, por último, verá el sitio web en acción.
Tarea 1: Creación de un nuevo sitio usando la experiencia One ASP.NET
En esta tarea comenzará a crear un nuevo sitio web en Visual Studio basado en el tipo de proyecto One ASP.NET. One ASP.NET unifica todas las tecnologías de ASP.NET y le da la opción de mezclarlas y combinarlas como desee. Después reconocerá los distintos componentes de Web Forms, MVC y Web API que conviven en su aplicación.
Abra Visual Studio Express 2013 para la Web y seleccione Archivo | Nuevo proyecto... para iniciar una nueva solución.
Creación de un proyecto nuevo
En el cuadro de diálogo Nuevo proyecto, seleccione Aplicación web de ASP.NET en la pestaña Visual C# | Web y asegúrese de que .NET Framework 4.5 está seleccionado. Nombre el proyecto MyHybridSite, elija una Ubicación y haga clic en Aceptar.
Creación de un nuevo proyecto de aplicación web de ASP.NET
En el cuadro de diálogo Nuevo proyecto de ASP.NET, seleccione la plantilla Web Forms y seleccione las opciones MVC y Web API. Asegúrese también de que la opción Autenticación está establecida en Cuentas de usuario individuales. Haga clic en Aceptar para continuar.
Creación de un nuevo proyecto con la plantilla de Web Forms, incluyendo componentes de Web API y MVC
Ahora puede explorar la estructura de la solución generada.
Exploración de la solución generada
- Cuenta: esta carpeta contiene las páginas de Web Forms para registrarse, iniciar sesión y administrar las cuentas de usuario de la aplicación. Esta carpeta se agrega cuando se selecciona la opción de autenticación Cuentas de usuario individuales durante la configuración de la plantilla de proyecto de Web Forms.
- Models: esta carpeta contendrá las clases que representan los datos de su aplicación.
- Controllers y Views: estas carpetas son necesarias para los componentes de ASP.NET MVC y ASP.NET Web API. Explorará las tecnologías de MVC y Web API en los próximos ejercicios.
- Los archivos Default.aspx, Contact.aspx y About.aspx son páginas predefinidas de Web Forms que puede usar como punto de partida para desarrollar las páginas específicas de su aplicación. La lógica de programación de esos archivos reside en un archivo independiente al que se hace referencia como archivo de "código subyacente", que tiene una extensión ".aspx.vb" o ".aspx.cs" (dependiendo del lenguaje usado). La lógica de código subyacente se ejecuta en el servidor y produce dinámicamente la salida HTML para su página.
- Las páginas Site.Master y Site.Mobile.Master definen el aspecto y el comportamiento estándar de todas las páginas de la aplicación.
Haga doble clic en el archivo Default.aspx para explorar el contenido de la página.
Exploración de la página de Default.aspx
Nota:
La directiva Página situada en la parte superior del archivo define los atributos de la página de Web Forms. Por ejemplo, el atributo MasterPageFile especifica la ruta de acceso a la página maestra (en este caso, la página Site.Master) y el atributo Inherits define la clase de código subyacente que debe heredar la página. Esta clase se encuentra en el archivo determinado por el atributo CodeBehind.
El control asp:Content contiene el contenido real de la página (texto, marcas y controles) y se asigna a un control asp:ContentPlaceHolder de la página maestra. En este caso, el contenido de la página se representará dentro del control MainContent definido en la página Site.Master.
Expanda la carpeta App_Start y fíjese en el archivo WebApiConfig.cs. Visual Studio incluyó ese archivo en la solución generada porque usted incluyó Web API al configurar su proyecto con la plantilla de One ASP.NET.
Abra el archivo WebApiConfig.cs. En la clase WebApiConfig encontrará la configuración asociada a Web API, que asigna rutas HTTP a controladores de Web API.
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
Abra el archivo RouteConfig.cs. Dentro del método RegisterRoutes encontrará la configuración asociada a MVC, que asigna rutas HTTP a controladores MVC.
public static void RegisterRoutes(RouteCollection routes) { var settings = new FriendlyUrlSettings(); settings.AutoRedirectMode = RedirectMode.Permanent; routes.EnableFriendlyUrls(settings); routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { action = "Index", id = UrlParameter.Optional } ); }
Tarea 2: Ejecución de la solución
En esta tarea ejecutará la solución generada, explorará la aplicación y algunas de sus características, como la reescritura de URL y la autenticación integrada.
Para ejecutar la solución, pulse F5 o haga clic en el botón Iniciar situado en la barra de herramientas. La página de inicio de la aplicación debería abrirse en el explorador.
Compruebe que se invocan las páginas de Web Forms. Para ello, anexe /contact.aspx a la dirección URL en la barra de direcciones y pulse Entrar.
Direcciones URL descriptivas
Nota:
Como puede ver, la URL cambia a /contact. A partir de ASP.NET 4, se agregaron capacidades de ruta de URL a Web Forms, por lo que puede escribir URL como
http://www.mysite.com/products/software
en lugar dehttp://www.mysite.com/products.aspx?category=software
. Para más información, consulte Enrutamiento de URL.Ahora explorará el flujo de autenticación integrado en la aplicación. Para ello, haga clic en Registro en la esquina superior derecha de la página.
Registro de un nuevo usuario
En la página Registrar, escriba un Nombre de usuario y Contraseña y, a continuación, haga clic en Registrar.
Página de registro
La aplicación registra la nueva cuenta y el usuario se autentica.
Usuario autentificado
Vuelva a Visual Studio y pulse MAYÚS + F5 para detener la depuración.
Ejercicio 2: Creación de un controlador de MVC usando Scaffolding
En este ejercicio aprovechará el marco ASP.NET Scaffolding proporcionado por Visual Studio para crear un controlador de ASP.NET MVC 5 con acciones y vistas de Razor para realizar operaciones CRUD, sin escribir una sola línea de código. El proceso de scaffolding usará Code First de Entity Framework para generar el contexto de datos y el esquema de la base de datos en la base de datos SQL.
Acerca de Code First de Entity Framework
Entity Framework (EF) es un asignador relacional de objetos (ORM) que le permite crear aplicaciones de acceso a datos programando con un modelo de aplicación conceptual en lugar de programar directamente usando un esquema de almacenamiento relacional.
El flujo de trabajo de modelado Code First de Entity Framework le permite usar sus propias clases de dominio para representar el modelo en el que se basa EF cuando realiza funciones de consulta, seguimiento de cambios y actualización. Usando el flujo de trabajo de desarrollo de Code First, no necesita empezar su aplicación creando una base de datos o especificando un esquema. En su lugar, puede escribir clases de .NET estándar que definan los objetos del modelo de dominio más adecuados para su aplicación, y Entity Framework creará la base de datos por usted.
Nota:
Puede obtener más información sobre Entity Framework aquí.
Tarea 1: Creación de un nuevo modelo
Ahora definirá una clase Person, que será el modelo usado por el proceso de scaffolding para crear el controlador de MVC y las vistas. Comenzará creando una clase de modelo Person, y las operaciones CRUD en el controlador se crearán automáticamente usando características de scaffolding.
Abra Visual Studio Express 2013 para la Web y la solución MyHybridSite.sln ubicada en la carpeta Source/Ex2-MvcScaffolding/Begin. Alternativamente, puede continuar con la solución que obtuvo en el ejercicio anterior.
En Explorador de soluciones, haga clic con el botón derecho del ratón en la carpeta Models del proyecto MyHybridSite y seleccione Agregar | Clase....
Añadir la clase de modelo Person
En el cuadro de diálogo Añadir nuevo elemento, asigne al archivo el nombre Person.cs y haga clic en Añadir.
Creación de la clase del modelo Person
Reemplace el contenido del archivo Person.cs por el siguiente código. Presione CTRL + S para guardar los cambios.
(Fragmento de código: BringingTogetherOneAspNet - Ex2 - PersonClass)
namespace MyHybridSite.Models { public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } }
En Explorador de soluciones, haga clic con el botón derecho en el proyecto MyHybridSite y seleccione Compilar, o pulse CTRL + MAYÚS + B para compilar el proyecto.
Tarea 2: Creación de un controlador de MVC
Ahora que el modelo Person está creado, usará el scaffolding de ASP.NET MVC con Entity Framework para crear las acciones del controlador CRUD y las vistas para Person.
En Explorador de soluciones, haga clic con el botón derecho del ratón en la carpeta Controllers del proyecto MyHybridSite y seleccione Agregar | Nuevo elemento con scaffolding....
Creación de un nuevo controlador con scaffolding
En el cuadro de diálogo Agregar scaffolding, seleccione Controlador de MVC 5 con vistas, usando Entity Framework y haga clic en Agregar.
Selección del controlador de MVC 5 con vistas y Entity Framework
Establezca MvcPersonController como Nombre del controlador, seleccione la opción Usar acciones asincrónicas del controlador y seleccione Person (MyHybridSite.Models) como Clase del modelo.
Adición de un controlador de MVC con scaffolding
En Clase de contexto de datos, haga clic en Nuevo contexto de datos....
Creación de un nuevo contexto de datos
En el cuadro de diálogo Nuevo contexto de datos, asigne al nuevo contexto de datos el nombre PersonContext y haga clic en Agregar.
Creación del nuevo tipo PersonContext
Haga clic en Agregar para crear el nuevo controlador para Person con scaffolding. Visual Studio generará después las acciones del controlador, el contexto de datos Person y las vistas Razor.
Después de crear el controlador de MVC con scaffolding
Abra el archivo MvcPersonController.cs en la carpeta Controllers. Observe que los métodos de acción CRUD se han generado automáticamente.
... // POST: /MvcPerson/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public async Task<ActionResult> Create([Bind(Include="Id,Name,Age")] Person person) { if (ModelState.IsValid) { db.People.Add(person); await db.SaveChangesAsync(); return RedirectToAction("Index"); } return View(person); } // GET: /MvcPerson/Edit/5 public async Task<ActionResult> Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Person person = await db.People.FindAsync(id); if (person == null) { return HttpNotFound(); } return View(person); } ...
Nota:
Al seleccionar la casilla Usar acciones de controlador asincrónico de las opciones de scaffolding en los pasos anteriores, Visual Studio genera métodos de acción asincrónicos para todas las acciones que implican el acceso al contexto de datos Person. Se recomienda usar métodos de acción asincrónicos para las solicitudes de larga duración no vinculadas a la CPU para evitar que el servidor web se bloquee mientras se procesa la solicitud.
Tarea 3: Ejecución de la solución
En esta tarea, ejecutará de nuevo la solución para verificar que las vistas de Person funcionan como se espera. Agregará una nueva persona para comprobar que se ha guardado correctamente en la base de datos.
Pulse F5 para ejecutar la solución.
Navegue hasta /MvcPerson. La vista con scaffolding que muestra la lista de personas debería aparecer.
Haga clic en Crear nuevo para agregar una nueva persona.
Navegación a las vistas de MVC con scaffolding
En la vista Create, proporcione un Nombre y una Edad para la persona, y haga clic en Crear.
Adición de una nueva persona
La nueva persona se agrega a la lista. En la lista de elementos, haga clic en Detalles para mostrar la vista de detalles de la persona. Después, en la vista de Detalles, haga clic en Volver a la lista para volver a la vista de lista.
Vista de detalles de la persona
Haga clic en el vínculo Eliminar para eliminar la persona. En la vista Eliminar, haga clic en Eliminar para confirmar la operación.
Eliminación de una persona
Vuelva a Visual Studio y pulse MAYÚS + F5 para detener la depuración.
Ejercicio 3: Creación de un controlador de Web API usando Scaffolding
El marco de Web API forma parte de la pila de ASP.NET y está diseñado para facilitar la implementación de servicios HTTP, generalmente el envío y la recepción de datos con formato JSON o XML a través de una API de RESTful.
En este ejercicio, volverá a usar ASP.NET Scaffolding para generar un controlador de Web API. Usará las mismas clases Person y PersonContext del ejercicio anterior para proporcionar los mismos datos de persona en formato JSON. Verá cómo puede exponer los mismos recursos de diferentes maneras dentro de la misma aplicación de ASP.NET.
Tarea 1: Creación de un controlador de Web API
En esta tarea creará un nuevo Controlador de Web API que expondrá los datos de la persona en un formato consumible por la máquina como JSON.
Si aún no se ha abierto, abra Visual Studio Express 2013 para la Web y abra la solución MyHybridSite.sln ubicada en la carpeta Source/Ex3-WebAPI/Begin. Alternativamente, puede continuar con la solución que obtuvo en el ejercicio anterior.
Nota:
Si comienza con la solución Begin del ejercicio 3, pulse CTRL + MAYÚS + B para compilar la solución.
En Explorador de soluciones, haga clic con el botón derecho del ratón en la carpeta Controllers del proyecto MyHybridSite y seleccione Agregar | Nuevo elemento con scaffolding....
Creación de un nuevo controlador con scaffolding
En el cuadro de diálogo Añadir scaffolding, seleccione Web API en el panel izquierdo, luego Controlador de Web API 2 con acciones, usando Entity Framework en el panel central y después haga clic en Añadir.
Selección del controlador de Web API 2 con acciones y Entity Framework
Establezca ApiPersonController como Nombre del controlador, seleccione la opción Usar acciones asincrónicas del controlador y seleccione Person (MyHybridSite.Models) y PersonContext (MyHybridSite.Models) como las clases de Modelo y Contexto de datos respectivamente. A continuación, haga clic en Agregar.
Adición de un controlador de Web API con scaffolding
Visual Studio generará la clase ApiPersonController con las cuatro acciones CRUD para trabajar con sus datos.
Después de crear el controlador de Web API con scaffolding
Abra el archivo ApiPersonController.cs e inspeccione el método de acción GetPeople. Este método consulta el campo db de tipo PersonContext para obtener los datos de las personas.
// GET api/ApiPerson public IQueryable<Person> GetPeople() { return db.People; }
Ahora fíjese en el comentario situado anteriormente sobre la definición del método. Proporciona el URI que expone esta acción que usted usará en la siguiente tarea.
// GET api/ApiPerson public IQueryable<Person> GetPeople() { return db.People; }
Nota:
De manera predeterminada, Web API está configurado para capturar las consultas a la ruta /api para evitar colisiones con los controladores de MVC. Si necesita cambiar esta configuración, consulte Enrutamiento en ASP.NET Web API.
Tarea 2: Ejecución de la solución
En esta tarea usará las herramientas para desarrolladores de F12 de Internet Explorer para inspeccionar la respuesta completa del controlador de Web API. Verá cómo puede capturar el tráfico de red para obtener más conclusiones sobre los datos de su aplicación.
Nota:
Asegúrese de que Internet Explorer está seleccionado en el botón Iniciar situado en la barra de herramientas de Visual Studio.
Las herramientas para desarrolladores de F12 tienen un amplio conjunto de funcionalidades que no se tratan en este laboratorio práctico. Si quiere obtener más información sobre ello, haga referencia a Uso de las herramientas para desarrolladores de F12.
Pulse F5 para ejecutar la solución.
Nota:
Para seguir esta tarea correctamente, su aplicación necesita tener datos. Si su base de datos está vacía, puede volver a la tarea 3 del ejercicio 2 y seguir los pasos sobre cómo crear una nueva persona usando las vistas de MVC.
En el explorador, pulse F12 para abrir el panel Herramientas del desarrollador. Pulse CTRL + 4 o haga clic en el icono de Red y después haga clic en el botón de flecha verde para comenzar a capturar el tráfico de red.
Iniciar la captura de red de Web API
Anexe api/ApiPerson a la dirección URL en la barra de direcciones del explorador. Ahora inspeccionará los detalles de la respuesta de ApiPersonController.
Recuperar datos de personas a través de Web API
Nota:
Una vez finalizada la descarga, se le solicitará que realice una acción con el archivo descargado. Deje abierto el cuadro de diálogo para poder observar el contenido de la respuesta a través de la ventana de la Herramienta para desarrolladores.
Ahora inspeccionará el cuerpo de la respuesta. Para ello, haga clic en la pestaña Detalles y después en Cuerpo de la respuesta. Puede comprobar que los datos descargados son una lista de objetos con las propiedades Id., Nombre y Edad que corresponden a la clase Person.
Ver el cuerpo de la respuesta de Web API
Tarea 3: Adición de páginas de ayuda de Web API
Cuando cree una Web API, es útil crear una página de ayuda para que otros desarrolladores sepan cómo llamar a su API. Puede crear y actualizar manualmente las páginas de documentación, pero es mejor generarlas automáticamente para evitar tener que realizar trabajos de mantenimiento. En esta tarea usará un paquete Nuget para generar automáticamente páginas de ayuda de Web API para la solución.
En el menú Herramientas de Visual Studio, seleccione Administrador de paquetes NuGet y, a continuación, haga clic en Consola del Administrador de paquetes.
En la ventana Consola del Administrador de paquetes, ejecute el siguiente comando:
Install-Package Microsoft.AspNet.WebApi.HelpPage
Nota:
El paquete Microsoft.AspNet.WebApi.HelpPage instala los ensamblados necesarios y agrega Vistas de MVC para las páginas de ayuda bajo la carpeta Areas/HelpPage.
Área HelpPage
De manera predeterminada, las páginas de ayuda tienen marcadores de posición para la documentación. Puede usar comentarios de documentación XML para crear la documentación. Para habilitar esta característica, abra el archivo HelpPageConfig.cs situado en la carpeta Areas/HelpPage/App_Start y quite la marca de comentario siguiente:
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));
En Explorador de soluciones, haga clic con el botón derecho en el proyecto MyHybridSite, seleccione Propiedades y haga clic en la pestaña Compilación.
Pestaña Compilación
En Salida, seleccione Archivo de documentación XML. En el cuadro de edición, escriba App_Data/XmlDocument.xml.
Sección de salida en la pestaña de compilación
Pulse CTRL + S para guardar los cambios.
Abra el archivo ApiPersonController.cs de la carpeta Controllers.
Escriba una nueva línea entre la firma del método GetPeople y el comentario // GET api/ApiPerson, y después escriba tres barras inclinadas.
Nota:
Visual Studio inserta automáticamente los elementos XML que definen la documentación del método.
Agregue un texto de resumen y el valor de retorno del método GetPeople. Debería tener este aspecto.
// GET api/ApiPerson /// <summary> /// Documentation for 'GET' method /// </summary> /// <returns>Returns a list of people in the requested format</returns> public IQueryable<Person> GetPeople() { return db.People; }
Pulse F5 para ejecutar la solución.
Anexe /help a la dirección URL en la barra de direcciones para navegar a la página de ayuda.
Página de ayuda de ASP.NET Web API
Nota:
El contenido principal de la página es una tabla de API, agrupadas por controlador. Las entradas de la tabla se generan dinámicamente, usando la interfaz IApiExplorer. Si agrega o actualiza un controlador de API, la tabla se actualizará automáticamente la próxima vez que compile la aplicación.
La columna API enumera el método HTTP y el URI relativo. La columna Description contiene información que se ha extraído de la documentación del método.
Observe que la descripción que ha agregado anteriormente a la definición del método se muestra en la columna de descripción.
Descripción del método API
Haga clic en uno de los métodos de la API para navegar a una página con más información detallada, incluidos cuerpos de respuesta de ejemplo.
Página de información detallada
Resumen
Al finalizar este laboratorio práctico habrá aprendido a:
- Crear una nueva aplicación web usando la experiencia de One ASP.NET en Visual Studio 2013
- Integrar varias tecnologías de ASP.NET en un único proyecto
- Generar controladores de MVC y vistas a partir de sus clases de modelo usando ASP.NET Scaffolding
- Generar controladores de Web API, que usan características como la programación asincrónica y el acceso a los datos a través de Entity Framework
- Generar automáticamente páginas de ayuda de Web API para sus controladores