SlideShare una empresa de Scribd logo
Areas en ASP.NET MVC, Manejo de
Estado
Danae Aguilar Guzmán
MCT, MS, MCTS, MCP
danaeaguilar@gmail.com
Areas
Areas
• Si la aplicación se hace grande, es mas
complicado manejar la estructura de
archivos.
• Las Areas nos permiten organizar diferentes
módulos de una aplicación Web basados en
su funcionalidad.
• Permiten tener la estructura de MVC para
cada módulo
Areas
Creando Areas
1. Click derecho en el proyecto Add > Area
2. Ingresar un nombre y aceptar.
3. Se creara una carpeta con la estructura
MVC:
AreaRegistration
Estructura MVC
Areas
Creando Areas
3.1. Se creará un archivo AreaRegistration:
 Define la estrategia de enrutado para el area
public override void
RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Catalogo_default",
"Catalogo/{controller}/{action}/{id}",
new { action = "Index", id =
UrlParameter.Optional }
);
}
Areas
Creando Areas
3.2. Se registran las areas en el archivo
Global.asax, en el método Application_Start:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
Areas
Creando Areas
4. Crear controllers y vistas
5. Agregar el espacio de nombres del controller
principal en el archivo RouteConfig:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional },
namespaces: new[] { "EjemploAreas.Controllers" }
);
Areas
Creando Areas
6. Agregando enlaces a las areas:
<li>@Html.ActionLink("Ver Catalogo",
"Index",
"Home",
new { area="Catalogo"},
null)
</li>
Areas
Creando Areas
6.1. Pasando datos en el enlace:
<li>@Html.ActionLink("Ver Catalogo",
"Index",
"Home",
new { area="Catalogo",
Usurio = "Juanito" },
null)
</li>
Areas
Usando layout en Areas
Necesitamos copiar al web config externo, los
datos del web.config que esta en la carpeta
shared: <configSections>
<sectionGroup name="system.web…….
<section name="host" type="System…….
<section name="pages" type="System.Web…….
</sectionGroup>
<section name="entityFramework" type="System…….
</configSections>
<system.web.webPages.razor>
<host factoryType="System…….
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
Manejo de estado
 HTTP es un protocolo sin estado
 Cada request implica volver a crear todas las
instancias de nuestra página.
Podemos mantener estado:
1.Del lado del server:
 Application state, Session state
2. Del lado del Cliente:
 Cookie state, Query Strings
3. Entre peticiones:
 Cross-page posting, Items collection
Manejo de Sesiones y aplicación
 Los datos se guardan en el servidor
 Mas seguro
 Evita el envió de datos en cada petición
 Application state permite guardar datos
globales para toda la aplicación
× Consume memoria del servidor
× Puede reducir el performance y escalabilidad
de la aplicación
Manejo de Sesiones y aplicación
Application State
 Estado compartido por todos los usuarios de
la aplicación
 Usar cuando obtener un valor que se
requiere siempre, consume demasiado en
obtenerlo para cada petición.
 Se perderán los datos si en server se
reinicia o detiene.
Manejo de Sesiones y aplicación
Application State
 Se almacena en una instancia de
HttpApplicationState
 Accedemos por la propiedad Application
HttpContext.Current.Application["Nombre"] = "Pepe";
Manejo de Sesiones y aplicación
Application State
 Para actualizar Application debemos poner
un bloqueo
Application.Lock();
Application["clicks"] = ((int)Application["clicks"]) + 1;
Application.UnLock();
Manejo de Sesiones y aplicación
Session State
 Son datos específicos para cada usuario
 Los datos se pierden si la sesión del usuario
termina.
 Se almacena en el servidor, pero puede
configurarse para almacenarse en cookies, en
otro state server o en una Base de Datos
Manejo de Sesiones y aplicación
Session State
 Accedemos mediante la propiedad Session
if (Session["ultimaVisita"] != null)
{
Label1.Text =
((DateTime)Session["ultimaVisita"]).ToString();
}
else
{
Label1.Text = "Ultima visita es desconocida";
}
Session["ultimaVisita"] = DateTime.Now;
Cookies
 Se almacenan en el cliente
 Se pueden mantener en archivos disponibles
en el tiempo en distintas peticiones desde la
misma máquina.
 No se mantiene si el usuario se conecta desde
otra máquina o dispositivo
 Los usuarios pueden eliminar los cookies en
cualquier momento
Cookies
 Crear un Cookie:
 Acceder a un Cookie:
 Cuando expira un Cookie:
Response.Cookies.Add(new HttpCookie("userId", userId));
var id = Request.Cookies["userId"].Value;
Response.Cookies["lastVisit"].Expires =
DateTime.Now.AddDays(1);
QueryString
 Se pasan en el url:
http://www.miSitio.com/test.aspx?nombre=ju
anito&edad=21
 Acceder al valor:
Label1.Text = Request["nombre"];

Más contenido relacionado

PDF
ASP.NET MVC - validacion de datos
PDF
ASP.NET MVC - AJAX
PDF
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
PDF
ASP.NET MVC - layouts y vistas parciales
PDF
ASP.NET MVC - Introducción a ASP.NET MVC
PDF
ASP.NET MVC - introduccion al web api
PDF
Aplicación abc. asp net mvc 3
PDF
Webinar: Base de Datos en tiempo real con MeteorJS
ASP.NET MVC - validacion de datos
ASP.NET MVC - AJAX
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
ASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - introduccion al web api
Aplicación abc. asp net mvc 3
Webinar: Base de Datos en tiempo real con MeteorJS

La actualidad más candente (20)

PDF
Java Web Lección 02 - JSP
PPTX
PPT
Curso Java Avanzado 2 Servlets
PPTX
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
PDF
Programacion web java
PPTX
Java con base de datos
DOCX
la mejor forma de Conectar c# con mysql con archivos de configuracion
PDF
Java web Lección 04 - JSTL
ODP
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
PPT
Servlets y jsp
PDF
Introducción a AngularJS
PPTX
PDF
Java servlets
PPTX
Arquitectura en aplicaciones Angular y buenas practicas.
PDF
Java web 01 - servlets
PDF
Workshop 7: Single Page Applications
PPTX
JDBC (Java Database Connectivity)
PPT
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Java Web Lección 02 - JSP
Curso Java Avanzado 2 Servlets
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
Programacion web java
Java con base de datos
la mejor forma de Conectar c# con mysql con archivos de configuracion
Java web Lección 04 - JSTL
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
Servlets y jsp
Introducción a AngularJS
Java servlets
Arquitectura en aplicaciones Angular y buenas practicas.
Java web 01 - servlets
Workshop 7: Single Page Applications
JDBC (Java Database Connectivity)
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Publicidad

Similar a ASP.NET MVC - areas, manejo de estado (20)

PDF
Monit optim iis6_2
PPTX
Aplicaciones web offline ITParral Prieto y Nassi
PPT
12. Administracion Del Estado
DOC
Sistemas distribuidos
PPTX
Patrones para el diseño de aplicaciones en la Nube
PPT
Nestor Nieto BaseDatos_Tarea01
DOCX
Arquitectura3 capas
PPTX
Cloud computing
PDF
CloudStorage - Almacenamiento en la Nube
PDF
04. Implementando APIs HTML5
PPTX
Tarea1Cesar Ortiz
PDF
10.desarrollowebconjava
PDF
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
PPTX
Tarea1 base de datos
PPTX
Tarea1 base de datos raquel jaramillo
PPTX
Windows Azure, Lo mejor del PDC
PPTX
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
PPTX
Servicios de datos en la nube
PDF
UDA-Anexo uso de webDAV
PPTX
Application and multi instances
Monit optim iis6_2
Aplicaciones web offline ITParral Prieto y Nassi
12. Administracion Del Estado
Sistemas distribuidos
Patrones para el diseño de aplicaciones en la Nube
Nestor Nieto BaseDatos_Tarea01
Arquitectura3 capas
Cloud computing
CloudStorage - Almacenamiento en la Nube
04. Implementando APIs HTML5
Tarea1Cesar Ortiz
10.desarrollowebconjava
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Tarea1 base de datos
Tarea1 base de datos raquel jaramillo
Windows Azure, Lo mejor del PDC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
Servicios de datos en la nube
UDA-Anexo uso de webDAV
Application and multi instances
Publicidad

Más de Danae Aguilar Guzmán (20)

PDF
Microsoft HoloLens
PDF
WPF 09. procesos asíncronos y programación paralela
PDF
WPF 08 - manejo y vinculación de datos
PDF
WPF 07 - gráficos, animación y multimedia
PDF
WPF 06 - personalizando los controles de interfaz de usuario
PDF
WPF 05 - triggers y eventos
PDF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
PDF
WPF 03 - controles WPF
PDF
WPF 02 - construyendo una interfaz de usuario
PDF
WPF 01 - introducción
PDF
ASP.NET MVC - bundling y minification
PDF
ASP.NET MVC - implementando globalizacion and localizacion
PDF
Crecimiento profesional como desarrollador de software
PDF
10. consumiendo datos
PDF
09. Creando interfaces de usuario animadas y adaptables
PDF
08. Propiedades de estilo HTML box
PDF
07. Usando CSS3
PDF
06. Creando un proceso web worker
PDF
05. Creando e implementando objetos y métodos
PDF
03. Introduccion a JavaScript y JQuery
Microsoft HoloLens
WPF 09. procesos asíncronos y programación paralela
WPF 08 - manejo y vinculación de datos
WPF 07 - gráficos, animación y multimedia
WPF 06 - personalizando los controles de interfaz de usuario
WPF 05 - triggers y eventos
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 03 - controles WPF
WPF 02 - construyendo una interfaz de usuario
WPF 01 - introducción
ASP.NET MVC - bundling y minification
ASP.NET MVC - implementando globalizacion and localizacion
Crecimiento profesional como desarrollador de software
10. consumiendo datos
09. Creando interfaces de usuario animadas y adaptables
08. Propiedades de estilo HTML box
07. Usando CSS3
06. Creando un proceso web worker
05. Creando e implementando objetos y métodos
03. Introduccion a JavaScript y JQuery

Último (11)

PPTX
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
PPTX
sistemas de informacion.................
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PPTX
Fundamentos de Python - Curso de Python dia 1
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
PPTX
Implementación equipo monitor12.08.25.pptx
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
Derechos_de_Autor_y_Creative_Commons.pptx
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
sistemas de informacion.................
Conceptos basicos de Base de Datos y sus propiedades
Fundamentos de Python - Curso de Python dia 1
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Su punto de partida en la IA: Microsoft 365 Copilot Chat
AutoCAD Herramientas para el futuro, Juan Fandiño
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
Implementación equipo monitor12.08.25.pptx

ASP.NET MVC - areas, manejo de estado

  • 1. Areas en ASP.NET MVC, Manejo de Estado Danae Aguilar Guzmán MCT, MS, MCTS, MCP danaeaguilar@gmail.com
  • 2. Areas Areas • Si la aplicación se hace grande, es mas complicado manejar la estructura de archivos. • Las Areas nos permiten organizar diferentes módulos de una aplicación Web basados en su funcionalidad. • Permiten tener la estructura de MVC para cada módulo
  • 3. Areas Creando Areas 1. Click derecho en el proyecto Add > Area 2. Ingresar un nombre y aceptar. 3. Se creara una carpeta con la estructura MVC: AreaRegistration Estructura MVC
  • 4. Areas Creando Areas 3.1. Se creará un archivo AreaRegistration:  Define la estrategia de enrutado para el area public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Catalogo_default", "Catalogo/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); }
  • 5. Areas Creando Areas 3.2. Se registran las areas en el archivo Global.asax, en el método Application_Start: protected void Application_Start() { AreaRegistration.RegisterAllAreas();
  • 6. Areas Creando Areas 4. Crear controllers y vistas 5. Agregar el espacio de nombres del controller principal en el archivo RouteConfig: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "EjemploAreas.Controllers" } );
  • 7. Areas Creando Areas 6. Agregando enlaces a las areas: <li>@Html.ActionLink("Ver Catalogo", "Index", "Home", new { area="Catalogo"}, null) </li>
  • 8. Areas Creando Areas 6.1. Pasando datos en el enlace: <li>@Html.ActionLink("Ver Catalogo", "Index", "Home", new { area="Catalogo", Usurio = "Juanito" }, null) </li>
  • 9. Areas Usando layout en Areas Necesitamos copiar al web config externo, los datos del web.config que esta en la carpeta shared: <configSections> <sectionGroup name="system.web……. <section name="host" type="System……. <section name="pages" type="System.Web……. </sectionGroup> <section name="entityFramework" type="System……. </configSections> <system.web.webPages.razor> <host factoryType="System……. <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization"/> <add namespace="System.Web.Routing" /> </namespaces> </pages> </system.web.webPages.razor>
  • 10. Manejo de estado  HTTP es un protocolo sin estado  Cada request implica volver a crear todas las instancias de nuestra página. Podemos mantener estado: 1.Del lado del server:  Application state, Session state 2. Del lado del Cliente:  Cookie state, Query Strings 3. Entre peticiones:  Cross-page posting, Items collection
  • 11. Manejo de Sesiones y aplicación  Los datos se guardan en el servidor  Mas seguro  Evita el envió de datos en cada petición  Application state permite guardar datos globales para toda la aplicación × Consume memoria del servidor × Puede reducir el performance y escalabilidad de la aplicación
  • 12. Manejo de Sesiones y aplicación Application State  Estado compartido por todos los usuarios de la aplicación  Usar cuando obtener un valor que se requiere siempre, consume demasiado en obtenerlo para cada petición.  Se perderán los datos si en server se reinicia o detiene.
  • 13. Manejo de Sesiones y aplicación Application State  Se almacena en una instancia de HttpApplicationState  Accedemos por la propiedad Application HttpContext.Current.Application["Nombre"] = "Pepe";
  • 14. Manejo de Sesiones y aplicación Application State  Para actualizar Application debemos poner un bloqueo Application.Lock(); Application["clicks"] = ((int)Application["clicks"]) + 1; Application.UnLock();
  • 15. Manejo de Sesiones y aplicación Session State  Son datos específicos para cada usuario  Los datos se pierden si la sesión del usuario termina.  Se almacena en el servidor, pero puede configurarse para almacenarse en cookies, en otro state server o en una Base de Datos
  • 16. Manejo de Sesiones y aplicación Session State  Accedemos mediante la propiedad Session if (Session["ultimaVisita"] != null) { Label1.Text = ((DateTime)Session["ultimaVisita"]).ToString(); } else { Label1.Text = "Ultima visita es desconocida"; } Session["ultimaVisita"] = DateTime.Now;
  • 17. Cookies  Se almacenan en el cliente  Se pueden mantener en archivos disponibles en el tiempo en distintas peticiones desde la misma máquina.  No se mantiene si el usuario se conecta desde otra máquina o dispositivo  Los usuarios pueden eliminar los cookies en cualquier momento
  • 18. Cookies  Crear un Cookie:  Acceder a un Cookie:  Cuando expira un Cookie: Response.Cookies.Add(new HttpCookie("userId", userId)); var id = Request.Cookies["userId"].Value; Response.Cookies["lastVisit"].Expires = DateTime.Now.AddDays(1);
  • 19. QueryString  Se pasan en el url: http://www.miSitio.com/test.aspx?nombre=ju anito&edad=21  Acceder al valor: Label1.Text = Request["nombre"];