SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
MVC FOR HUMAN BEINGS

Leonardo Botta
Agenda - MVC
●
●
●
●
●
●
●
●
●
●
●

ASP MVC 4 vs 5
Creación de Proyecto
NuGet Packages
Modelo de Datos con EF 6
Controladores
Vistas
Modelos y Validaciones
Filtros y Ruteo
Autenticación y Seguridad
Optimizaciones
Publicación
Tecnologías Web .NET
Multitud de tecnologías que llevan el nombre ASP.NET
pero diferentes apellidos: Web Forms, MVC, Web Pages, Web API y
SignalR.
ASP MVC 4 vs 5
●

Mejoras en autenticación

●

Katana (Implementacion Microsoft de OWIN)

●

Bootsrap 3

●

Entity Framework 6

●

Filter overrides

●

Routing basado en atributos
Creación de Proyecto
●

Templates

●

One ASP.NET

●

Opciones de proyecto
NuGet Packages Recomendados
●

JSON .NET

●

Elmah

●

JQuery

●

Log4Net

●

DataAnnotationsExtensions

●

Razor Generator
Modelo de Datos con EF 6
●

Generar modelo de datos

●

Generar entidades

●

Connection Strings

●

Actualización de BD desde modelo
Controladores
●

Agregado de Controladores
○
○

●

Scaffolding
Custom

Actions
Vistas
●

Layouts

●

Vistas con Layout

●

Vistas fuertemente tipadas

●

Partials

●

Scaffolding
Modelos y Validaciones
●

Creación de Modelos

●

Asociación de modelos con vistas

●

Validaciones
○ Campos requeridos
■

○

Con expresiones regulares
■

○

[Required(ErrorMessage = "Campo requerido")]
[RegularExpression(@"^d{9}$", ErrorMessage = "El valor debe ser numérico y de
9 dígitos")]

Remotes:
■

[Remote("Action", "Controller", HttpMethod = "POST", ErrorMessage = "Error")]
Filtros
●

Filtros de seguridad
○ [ValidateAntiForgeryToken] - Anti CSRF

●

Filtro de verbos HTTP
○ [HttpPost]

●

Filtros Custom
Ruteo
Por Atributos:
public static void RegisterRoutes(RouteCollection routes){
...
routes.MapMvcAttributeRoutes();
}
// GET /Integrante/5
[Route("{id}")]
public ActionResult Show(int id) { ... }
Rutas clásicas:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Autenticación y Seguridad
●

Autenticación
○ Authentication filters
○ Con formulario
○ Con Google
○ Con Facebook

●

Seguridad
○ SQL Injection y XSS
○ CSRF
rd

Autenticación y Seguridad - 3 part
public partial class Startup {

// App_Start/Startup.Auth.cs

publicvoid ConfigureAuth(IAppBuilder app) {
app.UseSignInCookies();
app.UseMicrosoftAccountAuthentication( clientId: "", clientSecret: "");

app.UseTwitterAuthentication( consumerKey: "", consumerSecret: "");

app.UseFacebookAuthentication( appId: "", appSecret: "");

app.UseGoogleAuthentication();
}
}
Autenticación y Seguridad - Facebook
Pasos:
●

Configure Authentication -> Individual User Accounts al crear proyecto

●

Crear Aplicación en Facebook

●

ConfigureAuth en App_StartStartup.Auth.cs
○ app.UseFacebookAuthentication(
appId: "000000000000000",
appSecret: "000000000000000");

dvdd
Autenticación y Seguridad - Filtro
Tipos de Filtros:

Los Filtros corren en este orden:

●

OnAuthorization

●

OnException

1.

Authorization filters

●

OnActionExecuting

2.

Action filters

●

OnActionExecuted

3.

Response filters

●

OnResultExecuting

4.

Exception filters

●

OnResultExecuted
Autenticación y Seguridad - Filtro
public class IsAjaxRequest : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
return;
}
// it was a standard request
filterContext.Controller.TempData["ErrorMessage"] =
string.Format(“This is not AJAX”);
filterContext.Result = new RedirectResult("~/Error/AuthorizationError");
}
}
Optimizaciones
●

Reducción de Requests al servidor

●

Minimización de CSS y JS
○
○

●

BundleConfig.cs
<script src= "@BundleTable.Bundles.ResolveBundleUrl("~/mainJs", false)" type="
text/javascript"></script>

GZip
○

<httpCompression> en eeb.config
Publicación
●

Tipos y opciones de publicación de Visual Studio

●

Deploy
Dudas?
GRACIAS!

Más contenido relacionado

Similar a .NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)lenny
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)INSIGNIA4U
 
Appcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAppcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAlberto Ruibal
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.jsCarlos Azaustre
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015Globant
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCDanae Aguilar Guzmán
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Esteban Saavedra
 
Seguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developerSeguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developerCloudAppi
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apisCloudAppi
 
04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latam04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latamGaston Cruz
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"www.encamina.com
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningRafa Hidalgo
 
Taller de Azure Cognitive Services
Taller de Azure Cognitive ServicesTaller de Azure Cognitive Services
Taller de Azure Cognitive ServicesLuis Beltran
 
WorkShop Android + Amazon Web Services
WorkShop Android + Amazon Web ServicesWorkShop Android + Amazon Web Services
WorkShop Android + Amazon Web ServicesPatricio Cornejo A.
 

Similar a .NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta (20)

ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Appcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAppcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en Android
 
Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables
 
Integrando AngularJS y drupal
Integrando AngularJS y drupalIntegrando AngularJS y drupal
Integrando AngularJS y drupal
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.js
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVC
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5
 
Seguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developerSeguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developer
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apis
 
04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latam04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latam
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine Learning
 
Taller de Azure Cognitive Services
Taller de Azure Cognitive ServicesTaller de Azure Cognitive Services
Taller de Azure Cognitive Services
 
WorkShop Android + Amazon Web Services
WorkShop Android + Amazon Web ServicesWorkShop Android + Amazon Web Services
WorkShop Android + Amazon Web Services
 

Más de .NET UY Meetup

.NET UY Meetup 7 - ICBanking Apps by Gonzalo Pelós & Gabriel Monteagudo
.NET UY Meetup 7 - ICBanking Apps by Gonzalo Pelós & Gabriel Monteagudo.NET UY Meetup 7 - ICBanking Apps by Gonzalo Pelós & Gabriel Monteagudo
.NET UY Meetup 7 - ICBanking Apps by Gonzalo Pelós & Gabriel Monteagudo.NET UY Meetup
 
.NET UY Meetup 7 - CLR Memory by Fabian Alves
.NET UY Meetup 7 - CLR Memory by Fabian Alves.NET UY Meetup 7 - CLR Memory by Fabian Alves
.NET UY Meetup 7 - CLR Memory by Fabian Alves.NET UY Meetup
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup
 
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ....NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ....NET UY Meetup
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup
 
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona...
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona....NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona...
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona....NET UY Meetup
 
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman.NET UY Meetup
 
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman.NET UY Meetup
 

Más de .NET UY Meetup (8)

.NET UY Meetup 7 - ICBanking Apps by Gonzalo Pelós & Gabriel Monteagudo
.NET UY Meetup 7 - ICBanking Apps by Gonzalo Pelós & Gabriel Monteagudo.NET UY Meetup 7 - ICBanking Apps by Gonzalo Pelós & Gabriel Monteagudo
.NET UY Meetup 7 - ICBanking Apps by Gonzalo Pelós & Gabriel Monteagudo
 
.NET UY Meetup 7 - CLR Memory by Fabian Alves
.NET UY Meetup 7 - CLR Memory by Fabian Alves.NET UY Meetup 7 - CLR Memory by Fabian Alves
.NET UY Meetup 7 - CLR Memory by Fabian Alves
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ....NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona...
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona....NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona...
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona...
 
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman
 
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman
 

Último

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (16)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

  • 1. MVC FOR HUMAN BEINGS Leonardo Botta
  • 2. Agenda - MVC ● ● ● ● ● ● ● ● ● ● ● ASP MVC 4 vs 5 Creación de Proyecto NuGet Packages Modelo de Datos con EF 6 Controladores Vistas Modelos y Validaciones Filtros y Ruteo Autenticación y Seguridad Optimizaciones Publicación
  • 3. Tecnologías Web .NET Multitud de tecnologías que llevan el nombre ASP.NET pero diferentes apellidos: Web Forms, MVC, Web Pages, Web API y SignalR.
  • 4. ASP MVC 4 vs 5 ● Mejoras en autenticación ● Katana (Implementacion Microsoft de OWIN) ● Bootsrap 3 ● Entity Framework 6 ● Filter overrides ● Routing basado en atributos
  • 5. Creación de Proyecto ● Templates ● One ASP.NET ● Opciones de proyecto
  • 6. NuGet Packages Recomendados ● JSON .NET ● Elmah ● JQuery ● Log4Net ● DataAnnotationsExtensions ● Razor Generator
  • 7. Modelo de Datos con EF 6 ● Generar modelo de datos ● Generar entidades ● Connection Strings ● Actualización de BD desde modelo
  • 9. Vistas ● Layouts ● Vistas con Layout ● Vistas fuertemente tipadas ● Partials ● Scaffolding
  • 10. Modelos y Validaciones ● Creación de Modelos ● Asociación de modelos con vistas ● Validaciones ○ Campos requeridos ■ ○ Con expresiones regulares ■ ○ [Required(ErrorMessage = "Campo requerido")] [RegularExpression(@"^d{9}$", ErrorMessage = "El valor debe ser numérico y de 9 dígitos")] Remotes: ■ [Remote("Action", "Controller", HttpMethod = "POST", ErrorMessage = "Error")]
  • 11. Filtros ● Filtros de seguridad ○ [ValidateAntiForgeryToken] - Anti CSRF ● Filtro de verbos HTTP ○ [HttpPost] ● Filtros Custom
  • 12. Ruteo Por Atributos: public static void RegisterRoutes(RouteCollection routes){ ... routes.MapMvcAttributeRoutes(); } // GET /Integrante/5 [Route("{id}")] public ActionResult Show(int id) { ... } Rutas clásicas: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
  • 13. Autenticación y Seguridad ● Autenticación ○ Authentication filters ○ Con formulario ○ Con Google ○ Con Facebook ● Seguridad ○ SQL Injection y XSS ○ CSRF
  • 14. rd Autenticación y Seguridad - 3 part public partial class Startup { // App_Start/Startup.Auth.cs publicvoid ConfigureAuth(IAppBuilder app) { app.UseSignInCookies(); app.UseMicrosoftAccountAuthentication( clientId: "", clientSecret: ""); app.UseTwitterAuthentication( consumerKey: "", consumerSecret: ""); app.UseFacebookAuthentication( appId: "", appSecret: ""); app.UseGoogleAuthentication(); } }
  • 15. Autenticación y Seguridad - Facebook Pasos: ● Configure Authentication -> Individual User Accounts al crear proyecto ● Crear Aplicación en Facebook ● ConfigureAuth en App_StartStartup.Auth.cs ○ app.UseFacebookAuthentication( appId: "000000000000000", appSecret: "000000000000000"); dvdd
  • 16. Autenticación y Seguridad - Filtro Tipos de Filtros: Los Filtros corren en este orden: ● OnAuthorization ● OnException 1. Authorization filters ● OnActionExecuting 2. Action filters ● OnActionExecuted 3. Response filters ● OnResultExecuting 4. Exception filters ● OnResultExecuted
  • 17. Autenticación y Seguridad - Filtro public class IsAjaxRequest : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Request.IsAjaxRequest()) { return; } // it was a standard request filterContext.Controller.TempData["ErrorMessage"] = string.Format(“This is not AJAX”); filterContext.Result = new RedirectResult("~/Error/AuthorizationError"); } }
  • 18. Optimizaciones ● Reducción de Requests al servidor ● Minimización de CSS y JS ○ ○ ● BundleConfig.cs <script src= "@BundleTable.Bundles.ResolveBundleUrl("~/mainJs", false)" type=" text/javascript"></script> GZip ○ <httpCompression> en eeb.config
  • 19. Publicación ● Tipos y opciones de publicación de Visual Studio ● Deploy