Está en la página 1de 20

Información general

Objetivos

En este laboratorio práctico, aprenderá a:

 Crear un sitio web basado en el tipo de proyecto One ASP.NET


 Usar diferentes marcos de ASP.NET como MVC y API web en el mismo
proyecto
 Identificar los componentes principales de una aplicación de ASP.NET
 Aproveche el marco de scaffolding de ASP.NET para crear automáticamente
controladores y vistas para realizar operaciones CRUD basadas en las clases
de modelo.
 Exponga el mismo conjunto de información en formatos legibles y de
máquina mediante la herramienta adecuada para cada trabajo.

Requisitos previos

Se requiere lo siguiente para completar este laboratorio práctico:

 Visual Studio Express 2013 para Web o superior


 Visual Studio 2013 Update 1

Configurar

Para ejecutar los ejercicios en este laboratorio práctico, primero deberá configurar
el entorno.

1. Abra el Explorador de Windows y vaya a la carpeta Origen del laboratorio.


2. 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.
3. 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 su comodidad, la mayoría de este código se proporciona como Visual
Studio Code Fragmentos de código, a los que puede acceder desde dentro de
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 mientras trabaja en este laboratorio práctico.

Ejercicios
Este laboratorio práctico incluye los ejercicios siguientes:

1. Crear un nuevo proyecto de Web Forms


2. Creación de un controlador MVC mediante scaffolding
3. Creación de un controlador de API web mediante 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 con la
experiencia de proyecto unificado one ASP.NET, lo que le permitirá integrar
fácilmente Web Forms, MVC y componentes de API web en la misma aplicación. A
continuación, explorará la solución generada e identificará sus elementos y, por
último, verá el sitio web en acción.

Tarea 1: Crear un nuevo sitio con la experiencia de una ASP.NET

En esta tarea, comenzará a crear un nuevo sitio web en Visual Studio basado en el
tipo de proyecto One ASP.NET . Una ASP.NET unifica todas las tecnologías de
ASP.NET y le ofrece la opción de mezclarlas y combinarlas según sea necesario. A
continuación, reconocerá los distintos componentes de Web Forms, MVC y API
web que se encuentran en paralelo dentro de la aplicación.

1. Abra Visual Studio Express 2013 para Web y seleccione Archivo | Nuevo
proyecto... para iniciar una nueva solución.

Crear un nuevo proyecto


2. En el cuadro de diálogo Nuevo proyecto , seleccione ASP.NET aplicación
web en Visual C# | Pestaña Web y asegúrese de que .NET Framework
4.5 está seleccionado. Asigne al proyecto el nombre MyHybridSite, elija
una ubicación y haga clic en Aceptar.

Creación de un nuevo proyecto de aplicación web de ASP.NET

3. En el cuadro de diálogo Nuevo proyecto de ASP.NET, seleccione la


plantilla Web Forms y seleccione las opciones MVC y Api web. Además,
asegúrese de que la opción Autenticación está establecida en Cuentas de
usuario individuales. Haga clic en Aceptar para continuar.
Creación de un proyecto con la plantilla de Web Forms, incluidos componentes
de WEB API y MVC

4. Ahora puede explorar la estructura de la solución generada.

Exploración de la solución generada

a. Cuenta: Esta carpeta contiene las páginas de formulario web que se van a
registrar, iniciar sesión en 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.
b. Modelos: Esta carpeta contendrá las clases que representan los datos de la
aplicación.
c. Controladores y vistas: estas carpetas son necesarias para los
componentes ASP.NET MVC y ASP.NET Web API. Explorará las
tecnologías de MVC y API web en los ejercicios siguientes.
d. Los archivos Default.aspx, Contact.aspx y About.aspx son páginas de
formulario web predefinidas que puede usar como puntos de partida para
compilar las páginas específicas de la aplicación. La lógica de
programación de esos archivos reside en un archivo independiente
denominado archivo "código subyacente", que tiene una extensión
".aspx.vb" o ".aspx.cs" (según el lenguaje usado). La lógica de código
subyacente se ejecuta en el servidor y genera dinámicamente la salida
HTML de la página.
e. Las páginas Site.Master y Site.Mobile.Master definen la apariencia y el
comportamiento estándar de todas las páginas de la aplicación.
5. Haga doble clic en el archivo Default.aspx para explorar el contenido de la
página.

Exploración de la página Default.aspx

Nota

La directiva Page de la parte superior del archivo define los atributos de la


página 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 para que la página se
herede. 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,


marcado y controles) y se asigna a un control asp:ContentPlaceHolder en 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 .

6. Expanda la carpeta App_Start y observe el archivo WebApiConfig.cs . Visual


Studio incluyó ese archivo en la solución generada porque incluyó la API web
al configurar el proyecto con la plantilla One ASP.NET.
7. Abra el archivo WebApiConfig.cs . En la clase WebApiConfig encontrará la
configuración asociada a la API web, que asigna rutas HTTP a controladores
de API web.

C#Copiar
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 }
);
}

8. Abra el archivo RouteConfig.cs . Dentro del


método RegisterRoutes encontrará la configuración asociada a MVC, que
asigna rutas HTTP a los controladores MVC.

C#Copiar
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 direcciones URL y la autenticación
integrada.

1. Para ejecutar la solución, presione F5 o haga clic en el botón Iniciar ubicado


en la barra de herramientas. La página principal de la aplicación debe abrirse
en el explorador.
2. Compruebe que se están invocando las páginas de Web Forms. Para ello,
anexe /contact.aspx a la dirección URL de la barra de direcciones y
presione Entrar.

Direcciones URL descriptivas

Nota

Como puede ver, la dirección URL cambia a /contact. A partir de ASP.NET 4,


se agregaron funcionalidades de enrutamiento de direcciones URL a Web
Forms, por lo que puede escribir direcciones URL
como http://www.mysite.com/products/software en lugar
de http://www.mysite.com/products.aspx?category=software . Para obtener más
información, consulte Enrutamiento de direcciones URL.

3. Ahora explorará el flujo de autenticación integrado en la aplicación. Para ello,


haga clic en Registrar en la esquina superior derecha de la página.

Registro de un nuevo usuario

4. En la página Registrar , escriba un nombre de usuario y una contraseña y, a


continuación, haga clic en Registrar.

Página Registrar

5. La aplicación registra la nueva cuenta y el usuario se autentica.

Usuario autenticado

6. Volver a Visual Studio y presione MAYÚS + F5 para detener la depuración.


Ejercicio 2: Creación de un controlador MVC mediante scaffolding

En este ejercicio, aprovechará el marco de scaffolding de ASP.NET proporcionado


por Visual Studio para crear un controlador ASP.NET MVC 5 con acciones y vistas
de Razor para realizar operaciones CRUD, sin necesidad de escribir una sola línea
de código. El proceso de scaffolding usará Entity Framework Code First para
generar el contexto de datos y el esquema de la base de datos en la base de datos
SQL.

Acerca del código de Entity Framework First

Entity Framework (EF) es un asignador relacional de objetos (ORM) que permite


crear aplicaciones de acceso a datos mediante la programación con un modelo de
aplicación conceptual en lugar de programar directamente mediante un esquema
de almacenamiento relacional.

El flujo de trabajo de modelado de Entity Framework Code First permite usar sus
propias clases de dominio para representar el modelo en el que EF se basa al
realizar consultas, seguimiento de cambios y actualizaciones de funciones. Con el
flujo de trabajo de desarrollo Code First, no es necesario iniciar la aplicación
mediante la creación de una base de datos ni la especificación de un esquema. En
su lugar, puede escribir clases estándar de .NET que definan los objetos de modelo
de dominio más adecuados para la aplicación y Entity Framework creará
automáticamente la base de datos.

Nota

Puede obtener más información sobre Entity Framework aquí.

Tarea 1: Crear un nuevo modelo

Ahora definirá una clase Person , que será el modelo que usará el proceso de
scaffolding para crear el controlador MVC y las vistas. Empezará creando una clase
de modelo Person y las operaciones CRUD del controlador se crearán
automáticamente mediante características de scaffolding.

1. Abra Visual Studio Express 2013 para Web y la


solución MyHybridSite.sln ubicada en la carpeta Source/Ex2-
MvcScaffolding/Begin. Como alternativa, puede continuar con la solución
que obtuvo en el ejercicio anterior.
2. En Explorador de soluciones, haga clic con el botón derecho en la
carpeta Models del proyecto MyHybridSite y seleccione Agregar | Clase....

Adición de la clase de modelo Person

3. En el cuadro de diálogo Agregar nuevo elemento , asigne al archivo el


nombre Person.cs y haga clic en Agregar.

Creación de la clase de modelo Person

4. Reemplace el contenido del archivo Person.cs por el código siguiente.


Presione CTRL + S para guardar los cambios.

(Fragmento de código: BringingTogetherOneAspNet - Ex2 - PersonClass)

C#Copiar
namespace MyHybridSite.Models
{
public class Person
{
public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }


}
}

5. En Explorador de soluciones, haga clic con el botón derecho en el


proyecto MyHybridSite y seleccione Compilar, o presione CTRL + MAYÚS +
B para compilar el proyecto.

Tarea 2: Creación de un controlador MVC

Ahora que se crea el modelo person , usará ASP.NET scaffolding de MVC con Entity
Framework para crear las acciones y vistas del controlador CRUD para Person.
1. En Explorador de soluciones, haga clic con el botón derecho en la
carpeta Controllers del proyecto MyHybridSite y seleccione Agregar |
Nuevo elemento con scaffolding....

Creación de un nuevo controlador con scaffolding

2. En el cuadro de diálogo Agregar scaffolding , seleccione Controlador MVC


5 con vistas, con Entity Framework y, a continuación, haga clic
en Agregar.

Selección de MVC 5 Controller con vistas y Entity Framework

3. Establezca MvcPersonController como nombre del controlador, seleccione la


opción Usar acciones del controlador asincrónico y seleccione Person
(MyHybridSite.Models) como clase Model.

Adición de un controlador MVC con scaffolding

4. En Clase de contexto de datos, haga clic en Nuevo contexto de datos....

Creación de un nuevo contexto de datos

5. 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

6. Haga clic en Agregar para crear el nuevo controlador para Persona con
scaffolding. Después, Visual Studio generará las acciones del controlador, el
contexto de datos person y las vistas de Razor.
Después de crear el controlador MVC con scaffolding

7. Abra el archivo MvcPersonController.cs en la carpeta Controllers . Observe


que los métodos de acción CRUD se han generado automáticamente.

C#Copiar
...

// 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 activar la casilla Usar acciones del controlador asincrónico en las


opciones de scaffolding de los pasos anteriores, Visual Studio genera
métodos de acción asincrónica para todas las acciones que implican el acceso
al contexto de datos person. Se recomienda usar métodos de acción
asincrónica para las solicitudes enlazadas a cpu y de larga duración para
evitar que el servidor web realice el trabajo mientras se procesa la solicitud.

Tarea 3: Ejecución de la solución

En esta tarea, volverá a ejecutar la solución para comprobar que las vistas
de Person funcionan según lo previsto. Agregará una nueva persona para
comprobar que se ha guardado correctamente en la base de datos.

1. Presione F5 para ejecutar la solución.


2. Vaya a /MvcPerson. La vista con scaffolding que muestra la lista de personas
debe aparecer.
3. Haga clic en Crear nuevo para agregar una nueva persona.

Navegación a las vistas de MVC con scaffolding

4. En la vista Crear , proporcione un nombre y una edad para la persona y haga


clic en Crear.

Agregar una nueva persona

5. 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. A continuación, en
la vista Detalles , haga clic en Volver a la lista para volver a la vista de lista.

Vista de detalles de la persona

6. Haga clic en el vínculo Eliminar para eliminar la persona. En la vista Eliminar ,


haga clic en Eliminar para confirmar la operación.
Eliminar una persona

7. Volver a Visual Studio y presione MAYÚS + F5 para detener la depuración.

Ejercicio 3: Creación de un controlador de API web mediante


scaffolding

El marco de api web forma parte de ASP.NET Stack y está diseñado para facilitar la
implementación de servicios HTTP, por lo general enviando y recibiendo datos con
formato JSON o XML a través de una API RESTful.

En este ejercicio, usará ASP.NET scaffolding de nuevo para generar un controlador


de API web. 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 maneras diferentes dentro de la misma
aplicación de ASP.NET.

Tarea 1: Creación de un controlador de API web

En esta tarea, creará un nuevo controlador de API web que expondrá los datos de
la persona en un formato consumible de la máquina, como JSON.

1. Si aún no está abierto, abra Visual Studio Express 2013 para Web y abra la
solución MyHybridSite.sln ubicada en la
carpeta Source/Ex3-WebAPI/Begin. Como alternativa, puede continuar con
la solución que obtuvo en el ejercicio anterior.

Nota

Si comienza con la solución Begin del ejercicio 3, presione CTRL + MAYÚS +


B para compilar la solución.

2. En Explorador de soluciones, haga clic con el botón derecho en la


carpeta Controllers del proyecto MyHybridSite y seleccione Agregar |
Nuevo elemento con scaffolding....

Creación de un nuevo controlador con scaffolding


3. En el cuadro de diálogo Agregar scaffolding , seleccione API web en el
panel izquierdo y , a continuación, controlador de Web API 2 con
acciones, mediante Entity Framework en el panel central y, a continuación,
haga clic en Agregar.

de

Selección del controlador de Web API 2 con acciones y Entity Framework

4. Establezca ApiPersonController como nombre del controlador, seleccione la


opción Usar acciones del controlador asincrónico y seleccione Person
(MyHybridSite.Models) y PersonContext (MyHybridSite.Models) como
clases de contexto modelo y datos , respectivamente. A continuación, haga
clic en Agregar.

Adición de un controlador de API web con scaffolding

5. Después, Visual Studio generará la clase ApiPersonController con las cuatro


acciones CRUD para trabajar con los datos.

de

Después de crear el controlador de API web con scaffolding

6. Abra el archivo ApiPersonController.cs e inspeccione el método de


acción GetPeople . Este método consulta el campo db del
tipo PersonContext para obtener los datos de personas.

C#Copiar
// GET api/ApiPerson
public IQueryable<Person> GetPeople()
{
return db.People;
}

7. Ahora observe el comentario anterior a la definición del método. Proporciona


el URI que expone esta acción que usará en la siguiente tarea.

C#Copiar
// GET api/ApiPerson
public IQueryable<Person> GetPeople()
{
return db.People;
}
Nota

De forma predeterminada, la API web está configurada para detectar las


consultas en la ruta de acceso /api para evitar colisiones con controladores
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 de desarrollo F12 de Internet Explorer para
inspeccionar la respuesta completa del controlador de API web. Verá cómo puede
capturar el tráfico de red para obtener más información sobre los datos de la
aplicación.

Nota

Asegúrese de que Internet Explorer está seleccionado en el botón Inicio situado


en la barra de herramientas de Visual Studio.

Las herramientas de desarrollo F12 tienen un amplio conjunto de funcionalidades


que no se tratan en este laboratorio práctico. Si desea obtener más información
sobre él, consulte Uso de las herramientas de desarrollo F12.

1. Presione F5 para ejecutar la solución.

Nota

Para seguir esta tarea correctamente, la aplicación debe tener datos. Si la 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 mediante las vistas de MVC.

2. En el explorador, presione F12 para abrir el panel Herramientas de


desarrollo . Presione CTRL + 4 o haga clic en el icono Red y,a continuación,
haga clic en el botón de flecha verde para empezar a capturar el tráfico de
red.
Inicio de la captura de red de API web

3. Anexe api/ApiPerson a la dirección URL de la barra de direcciones del


explorador. Ahora inspeccionará los detalles de la respuesta
de ApiPersonController.

Recuperación de datos de persona a través de la API web

Nota

Una vez finalizada la descarga, se le pedirá que realice una acción con el
archivo descargado. Deje abierto el cuadro de diálogo para poder watch el
contenido de la respuesta a través de la ventana Herramientas de
desarrolladores.

4. Ahora inspeccionará el cuerpo de la respuesta. Para ello, haga clic en la


pestaña Detalles y, a continuación, haga clic en Cuerpo de respuesta. Puede
comprobar que los datos descargados son una lista de objetos con las
propiedades Id, Name y Age que corresponden a la clase Person .

Visualización del cuerpo de respuesta de la API web

Tarea 3: Agregar páginas de ayuda de API web

Al crear una API web, resulta útil crear una página de ayuda para que otros
desarrolladores sepan cómo llamar a la 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 la API web
para la solución.
1. En el menú Herramientas de Visual Studio, seleccione Administrador de
paquetes NuGet y, a continuación, haga clic en Consola del Administrador
de paquetes.
2. En la ventana Consola del Administrador de paquetes , ejecute el siguiente
comando:

PowerShellCopiar
Install-Package Microsoft.AspNet.WebApi.HelpPage
Nota

El paquete Microsoft.AspNet.WebApi.HelpPage instala los ensamblados


necesarios y agrega vistas MVC para las páginas de ayuda en la
carpeta Areas/HelpPage .

Área HelpPage

3. De forma predeterminada, las páginas de ayuda tienen cadenas de marcador


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 ubicado en la
carpeta Areas/HelpPage/App_Start y quite la marca de comentario de la
siguiente línea:

JavaScriptCopiar
config.SetDocumentationProvider(new
XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/
XmlDocument.xml")));

4. En Explorador de soluciones, haga clic con el botón derecho en el


proyecto MyHybridSite, seleccione Propiedades y haga clic en la
pestaña Compilar.

Pestaña Compilación

5. En Salida, seleccione archivo de documentación XML. En el cuadro de


edición, escriba App_Data/XmlDocument.xml.
Sección salida de la pestaña Compilar

6. Presione CTRL + S para guardar los cambios.


7. Abra el archivo ApiPersonController.cs desde la carpeta Controllers .
8. Escriba una nueva línea entre la firma del método GetPeople y el
comentario // GET api/ApiPerson y, a continuación, escriba tres barras
diagonales.

Nota

Visual Studio inserta automáticamente los elementos XML que definen la


documentación del método.

9. Agregue un texto de resumen y el valor devuelto para el método GetPeople .


Debería tener este aspecto.

C#Copiar
// 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;
}

10. Presione F5 para ejecutar la solución.


11. Anexe /help a la dirección URL de la barra de direcciones para ir 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 mediante 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 Descripción contiene información que se ha extraído de la
documentación del método.

12. Tenga en cuenta que la descripción que agregó encima de la definición del
método se muestra en la columna description.

de

Descripción del método de API

13. Haga clic en uno de los métodos de API para navegar a una página con
información más detallada, incluidos los cuerpos de respuesta de ejemplo.

Página de información detallada

Resumen
Al completar este laboratorio práctico, ha aprendido a:

 Creación de una aplicación web con one ASP.NET Experience en Visual Studio
2013
 Integración de varias tecnologías de ASP.NET en un solo proyecto
 Generación de controladores y vistas de MVC a partir de las clases de modelo
mediante ASP.NET Scaffolding
 Generación de controladores de API web, que usan características como
programación asincrónica y acceso a datos a través de Entity Framework
 Generación automática de páginas de ayuda de API web para los
controladores

https://learn.microsoft.com/es-es/aspnet/visual-studio/overview/2013/one-aspnet-
integrating-aspnet-web-forms-mvc-and-web-api#Exercise1

También podría gustarte