net uy meetup 5 - mvc for human beings by leonardo botta

21
MVC FOR HUMAN BEINGS Leonardo Botta

Upload: net-uy-meetup

Post on 05-Dec-2014

528 views

Category:

Technology


3 download

DESCRIPTION

Video: http://youtu.be/k8FYUGClr2I Codigo: http://sdrv.ms/1bjuHXa Leonardo Botta: http://www.meetup.com/NET-UY/members/71721332/

TRANSCRIPT

Page 1: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

MVC FOR HUMAN BEINGS

Leonardo Botta

Page 2: NET UY Meetup 5 - MVC For Human Beings by 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

Page 3: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

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.

Page 4: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

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

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

Creación de Proyecto

● Templates

● One ASP.NET

● Opciones de proyecto

Page 6: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

NuGet Packages Recomendados

● JSON .NET

● Elmah

● JQuery

● Log4Net

● DataAnnotationsExtensions

● Razor Generator

Page 7: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Modelo de Datos con EF 6

● Generar modelo de datos

● Generar entidades

● Connection Strings

● Actualización de BD desde modelo

Page 8: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Controladores

● Agregado de Controladores

○ Scaffolding

○ Custom

● Actions

Page 9: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Vistas

● Layouts

● Vistas con Layout

● Vistas fuertemente tipadas

● Partials

● Scaffolding

Page 10: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Modelos y Validaciones● Creación de Modelos

● Asociación de modelos con vistas

● Validaciones○ Campos requeridos

■ [Required(ErrorMessage = "Campo requerido")]○ Con expresiones regulares

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

○ Remotes: ■ [Remote("Action", "Controller", HttpMethod = "POST", ErrorMessage = "Error")]

Page 11: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Filtros

● Filtros de seguridad○ [ValidateAntiForgeryToken] - Anti CSRF

● Filtro de verbos HTTP○ [HttpPost]

● Filtros Custom

Page 12: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

RuteoPor 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 } );

Page 13: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Autenticación y Seguridad

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

● Seguridad○ SQL Injection y XSS○ CSRF

Page 14: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Autenticación y Seguridad - 3rd partpublic 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();

}

}

Page 15: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Autenticación y Seguridad - Facebook

Pasos:

● Configure Authentication -> Individual User Accounts al crear proyecto

● Crear Aplicación en Facebook

● ConfigureAuth en App_Start\Startup.Auth.cs ○ app.UseFacebookAuthentication(

appId: "000000000000000", appSecret: "000000000000000");

dvdd

Page 17: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Autenticación y Seguridad - Filtropublic 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"); }}

Page 18: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

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

Page 19: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Publicación

● Tipos y opciones de publicación de Visual Studio

● Deploy

Page 20: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

Dudas?

Page 21: NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta

GRACIAS!