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

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
Alberto Ruibal
 

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

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

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

.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