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
Controlado...
Tecnologías Web .NET
Multitud de tecnologías que llevan el nombre ASP.NET
pero diferentes apellidos: Web Forms, MVC, Web P...
ASP MVC 4 vs 5
●

Mejoras en autenticación

●

Katana (Implementacion Microsoft de OWIN)

●

Bootsrap 3

●

Entity Framewo...
Creación de Proyecto
●

Templates

●

One ASP.NET

●

Opciones de proyecto
NuGet Packages Recomendados
●

JSON .NET

●

Elmah

●

JQuery

●

Log4Net

●

DataAnnotationsExtensions

●

Razor Generato...
Modelo de Datos con EF 6
●

Generar modelo de datos

●

Generar entidades

●

Connection Strings

●

Actualización de BD d...
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
■
...
Filtros
●

Filtros de seguridad
○ [ValidateAntiForgeryToken] - Anti CSRF

●

Filtro de verbos HTTP
○ [HttpPost]

●

Filtro...
Ruteo
Por Atributos:
public static void RegisterRoutes(RouteCollection routes){
...
routes.MapMvcAttributeRoutes();
}
// G...
Autenticación y Seguridad
●

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

●

Segur...
rd

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

// App_Start/Startup.Auth.cs

publicvoid ConfigureA...
Autenticación y Seguridad - Facebook
Pasos:
●

Configure Authentication -> Individual User Accounts al crear proyecto

●

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

Los Filtros corren en este orden:

●

OnAuthorization

●

OnExceptio...
Autenticación y Seguridad - Filtro
public class IsAjaxRequest : ActionFilterAttribute {
public override void OnActionExecu...
Optimizaciones
●

Reducción de Requests al servidor

●

Minimización de CSS y JS
○
○

●

BundleConfig.cs
<script src= "@Bu...
Publicación
●

Tipos y opciones de publicación de Visual Studio

●

Deploy
Dudas?
GRACIAS!
Upcoming SlideShare
Loading in...5
×

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

249

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
249
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. MVC FOR HUMAN BEINGS Leonardo Botta
  2. 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. 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. 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. 5. Creación de Proyecto ● Templates ● One ASP.NET ● Opciones de proyecto
  6. 6. NuGet Packages Recomendados ● JSON .NET ● Elmah ● JQuery ● Log4Net ● DataAnnotationsExtensions ● Razor Generator
  7. 7. Modelo de Datos con EF 6 ● Generar modelo de datos ● Generar entidades ● Connection Strings ● Actualización de BD desde modelo
  8. 8. Controladores ● Agregado de Controladores ○ ○ ● Scaffolding Custom Actions
  9. 9. Vistas ● Layouts ● Vistas con Layout ● Vistas fuertemente tipadas ● Partials ● Scaffolding
  10. 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. 11. Filtros ● Filtros de seguridad ○ [ValidateAntiForgeryToken] - Anti CSRF ● Filtro de verbos HTTP ○ [HttpPost] ● Filtros Custom
  12. 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. 13. Autenticación y Seguridad ● Autenticación ○ Authentication filters ○ Con formulario ○ Con Google ○ Con Facebook ● Seguridad ○ SQL Injection y XSS ○ CSRF
  14. 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. 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. 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. 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. 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. 19. Publicación ● Tipos y opciones de publicación de Visual Studio ● Deploy
  20. 20. Dudas?
  21. 21. GRACIAS!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×