33
TALLER MVC.NET 5 Cristian Cárdenas Alarcón Twitter @ccardensa Facebook.com/ccardensa Blog https://cristiancardenas.cl Programadores Chile

Taller mvc.net 5

Embed Size (px)

Citation preview

Page 1: Taller mvc.net 5

TALLER MVC.NET 5

Cristian Cárdenas AlarcónTwitter @ccardensaFacebook.com/ccardensaBlog https://cristiancardenas.cl

Programadores Chile

Page 2: Taller mvc.net 5

Favor apagar Smartphones, beepers y el Nokia 3310 que anda por ahí…

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 3: Taller mvc.net 5

AGENDA

Parte I: Fundamentos de MVC.NET

Parte II: Modelos, Vistas y Controladores

Parte III: Entity Framework 6

Parte IV: Filtros y Seguridad

Cierre: ASP.NET 5 & MVC.NET 6

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

https://github.com/ccardensa/TallerMVC5

Page 4: Taller mvc.net 5

Comenzamos…

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 5: Taller mvc.net 5

Bloque - Fundamentos de MVC.NET

10:00 a 11:30 hrs.

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 6: Taller mvc.net 5

Fundamentos de MVC.NET Versiones de MVC.NET

MVC 1.0 - Lanzamiento

MVC 2.0 – Mejoras del Framework

MVC 3.0 – Vistas Razor, Unobtrusive Javascript

MVC 4.0 – Web Api, Asyncrono Controller, Azure

MVC 5.0 – Identity, Atributo de ruta, filter overrides

MVC 6.0 - ???

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 7: Taller mvc.net 5

Fundamentos de MVC.NET A lo que vinimos, ¿Qué es MVC.NET?

MVC es un patrón de arquitectura el cual mantiene los ámbitos más importantes separados, los inicios de mvc datan de los años 70, la primera implementación informal fue en Smalltalk un lenguaje de programación reflexivo, recién en 1988 se consolido como patrón.

En marzo del 2009 se lanzo la primera versión oficial de MVC.NET 1.0, luego en 2012 se incluyo Razor y Web Api en MVC.NET, además fue incluido como Open Source bajo la licencia apache 2.0

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados. Modelo, Vista, Controlador
Page 8: Taller mvc.net 5

Fundamentos de MVC.NET Ventajas de MVC.NET

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Separación de aspecto, esto quiere decir que la aplicación se divide en partes discretas que están enlazadas entre si, pero no fuertemente enlazadas como Web Forms

Mayor control sobre el HTML representado

MVC.NET facilita el desarrollo basado en pruebas

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 9: Taller mvc.net 5

Fundamentos de MVC.NET Ventajas de MVC.NET

Adiós a los eventos

No más ViewState

Fin al Postback

El ciclo de vida de la pagina es mucho más simple

Podemos modificar a nuestro antojo las rutas (url)

Integración de Ajax de forma natural

Favorece la implementación de Inyección de dependencia e inversión de control

Mayor control sobre el HTML

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 10: Taller mvc.net 5

Fundamentos de MVC.NET Ventajas de MVC.NET

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Viewstate normal de una aplicación Web Forms

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 11: Taller mvc.net 5

Fundamentos de MVC.NET Ventajas de MVC.NET

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Viewstate anormal de una aplicación Web Forms, estos tipos consumen memoria excesiva

Moderador
Notas de la presentación
Para eliminar los viewstate de algunas parte de nuestro código podemos hacer lo siguiente: <asp:Label ID="mainmenu" EnableViewState="false" runat="server" />
Page 12: Taller mvc.net 5

Fundamentos de MVC.NET Ciclo de Vida

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Routing

Controller

MvcHandler

Filtros

Model Binding

Actions Methods

HTTP Request

HTTP Response

Pipeline

HttpApplicationProcessing

Result Execution(View,etc.)

Moderador
Notas de la presentación
Pipeline es un término inglés que puede traducirse como “tubería”. El concepto se utiliza para hacer referencia a una arquitectura de la informática, no es parte de la RAE Fases: 1.- Recibir la primera solicitud para la aplicación - En el archivo Global.asax, los objetos Route se agregan al objeto RouteTable. 2.- Realizar el enrutamiento 3.- Crear el controlador de solicitudes de MVC 4.- Crear el controlador 5.- Ejecutar el controlador - La instancia MvcHandler llama al método Execute del controlador. 6.- Invocar la acción 7.- Ejecutar el resultado: ViewResult (que representa una vista y es el tipo de resultado utilizado con mayor frecuencia), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, FileResulty EmptyResult. https://msdn.microsoft.com/es-cl/library/dd381612(v=vs.100).aspx https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/lifecycle-of-an-aspnet-mvc-5-application/_static/lifecycle-of-an-aspnet-mvc-5-application1.pdf
Page 13: Taller mvc.net 5

Fundamentos de MVC.NET Lo que debemos hacer antes de codear

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Planificación de Layers

Diseño de distribución de componentes

Diseño y estrategia de Cache

La BBDD existe o la debemos crear desde cero

¿La aplicación es publica o privada?

Lo primero que debemos hacer antes de comenzar a codear es analizar que tipo de aplicación necesitamos, que tecnologías adicionales vamos a utilizar y cual es el alcance del proyecto que realizaremos, además debemos tener en cuenta la creación de la solución y plantearnos lo siguiente:

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 14: Taller mvc.net 5

Community Coffe Break10:00 a 11:30 hrs.

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 15: Taller mvc.net 5

Bloque - Modelos, Vistas y Controladores

12:00 a 14:00 hrs.

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 16: Taller mvc.net 5

Fundamentos de MVC.NET Preparando nuestro primer proyecto

Vamos a abrir

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 17: Taller mvc.net 5

Fundamentos de MVC.NET Modelos, Vistas y Controladores

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Modelos

Los objetos de modelo son partes de la aplicación que implementa la lógica del dominio de datos, generalmente el modelo recupera y almacena datos de una BBDD.

Vista

La vista es una vista… -si… grandes pensadores-, no obstante las vistas de MVC.NET se pueden enlazar a un modelo o a un DTO, este proceso se llama Binding, estas vistas utilizan Razor como motor de render, el cual nos permite tener mucho control sobre el HTML.

Moderador
Notas de la presentación
A los modelos se les pueden entregar algunas características especiales, como los data annotation, que nos proporcionan la capacidad de validar nuestros formularios. En las vistas pueden ser de los siguientes tipos: Strongly type Views View Specific model Partial View Master or Layout page Scaffold template, funcionalidad limitada
Page 18: Taller mvc.net 5

Fundamentos de MVC.NET Modelos, Vistas y Controladores

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Controlador:

Los controladores son los componentes que controlan la interacción del usuario, trabajan con el modelo y por último seleccionan una vista para representar la interfaz de usuario

En una aplicación MVC, la vista solo muestra información; el controlador administra y responde a los datos proporcionados por el usuario y su interacción. Por ejemplo, el controlador administra los valores de la cadena de consulta y pasa estos valores al modelo, que a su vez podría usarlos para consultar la base de datos.

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 19: Taller mvc.net 5

Fundamentos de MVC.NET Formulario

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Ahora vamos a comenzar a realizar la codificación de nuestro formulario con un ciclo de vida sin Ajax

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 20: Taller mvc.net 5

Fundamentos de MVC.NET Formulario Ajax

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Ahora vamos a comenzar a realizar la codificación de nuestro formulario con un ciclo de vida con Ajax

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 21: Taller mvc.net 5

Community Pizza Lunch14:00 a 14:30hrs.

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 22: Taller mvc.net 5

Bloque - Entity Framework 6

14.30 a 17:00hrs.

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 23: Taller mvc.net 5

Fundamentos de MVC.NET Entity Framework

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Entity Framework es un conjunto de tecnologías de ADO.NET que permiten el desarrollo de aplicaciones de software orientadas a datos.

EF trae consigo LINQ to Entity, este lenguaje nos ayuda a realizar consultas a la BBDD desde C#, esto nos permite crear aplicaciones sin la necesidad de agregar procedimientos almacenados.

Pero cual es la mayor ventaja de este ORM (mapeo de objeto relacional)

Moderador
Notas de la presentación
Install-Package EntityFramework ¿Qué es un ORM? Object-Relational mapping, o lo que es lo mismo, mapeo de objeto-relacional, es un modelo de programación que consiste en la transformación de las tablas de una base de datos, en una serie de entidades que simplifiquen las tareas básicas de acceso a los datos para el programador.
Page 24: Taller mvc.net 5

Fundamentos de MVC.NET Entity Framework

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Ventajas:

Facilidad de uso

Abstracción de la BBDD utilizada

Seguridad en la capa de acceso a datos

Se pueden asignar multiples modelos conceptuales a un esquema

La compatibilidad con Language Integrated Query (LINQ)

Podemos cambiar de motor de base de datos con un bajo impacto

Moderador
Notas de la presentación
Install-Package EntityFramework ¿Qué es un ORM? Object-Relational mapping, o lo que es lo mismo, mapeo de objeto-relacional, es un modelo de programación que consiste en la transformación de las tablas de una base de datos, en una serie de entidades que simplifiquen las tareas básicas de acceso a los datos para el programador.
Page 25: Taller mvc.net 5

Bloque - Filtros y Seguridad

17:00 a 19:00hrs.

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 26: Taller mvc.net 5

Fundamentos de MVC.NET Filtros y Seguridad

Filtros de autenticación.Filtros de autorizaciónFiltros de excepción

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 27: Taller mvc.net 5

Bloque – Bonus Track

17:00 a 19:00hrs.

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Page 28: Taller mvc.net 5

Buenas PracticasCódigo Limpio o Clean Code

Habrán escuchado hablar sobre clean code como parte de las buenas practicas, bueno “Clean Code” es la capacidad de escribir código ordenado y estructurado de tal manera que resulta muy fácil leer por otro ser humano.

Evitemos la refactorización futura, si señores evitemos gastar tiempo futuro y escribamos el código claramente desde el principio.

“Esto al final del día es como mejorar la técnica de lectura y escritura, te entrega nuevos súperpoderes de los cuales presumir”

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados. Clean Code: Escribir el código limpio no es solo una técnica para el desarrollo agil, si no que es una forma de vida para un desarrollador..
Page 29: Taller mvc.net 5

Buenas PracticasRefactorización, la salvación del código limpio

La Refactorización es 100% pura voluntad, me atrevo a decir esto porque cuando vemos un código mal escrito ¿Nos damos la molestia de mejorarlo?, seamos honestos… eso sucede el 0.1% de las veces que vemos un código mal escrito.

Pero no todo es malo, digamos que el sistema laboral, la presión de sacar el proyecto a tiempo o por simple flojera, OK tenemos una excusa, ¿pero que sucede si hacemos lo contrario?, pasa de todo, aunque no lo vean tus manos, al realizar una refactorización puedes mejorar el rendimiento, disminuir las horas de mantención e incluso ayudar a tus compañeros a entender rápidamente el código al momento de tener que tocar esa sinfonía de código escrita por ti o por algún mono con navajas.

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 30: Taller mvc.net 5

MVC.NET 6Novedades

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Tag Helpers

Los Tag Helpers nos permitirán tener aun mayor control sobre nuestro HTML, no obstante aun se podrán utilizar los HTML.Helpers

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 31: Taller mvc.net 5

MVC.NET 6Novedades

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Inyección de Dependencia

Ahora tendremos un contenedor IoC por defecto, lo cual nos permitirá agregar nuestras dependencias y disminuir las configuraciones a realizar en nuestros proyectos MVC.NET

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 32: Taller mvc.net 5

MVC.NET 6Novedades

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

El Global.asax pasara a ser un StartUp

Logging por defecto, vendrá integrando en el framework, hoy en día se deben implementar por separado

Web API Controller

Project.json reemplazará a nuestro querido archivo web.config XML

Las vistas parciales desaparen y son reemplazadas por ViewComponents

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.
Page 33: Taller mvc.net 5

Fin…

Cristian Cárdenas Alarcón – Twitter @ccardensa - Blog https://cristiancardenas.cl

Moderador
Notas de la presentación
Tengan en cuenta que escribir código es como estar creando una obra de arte, la estas creando desde cero y todo lo que vomita tu cerebro se plasma en tu IDE favorito, pero también necesitamos que la legibilidad del código sea de calidad, para que cualquier otro colega pueda leer y entender fácilmente el código sin necesidad de agregar comentarios rebuscados.