SlideShare una empresa de Scribd logo
Novedades de ASP.NET MVC6
Agenda
• ASP.NET 5 Introduction
• Unai Zorrilla
• Novedades de MVC 6
• Eduard Tomás
• break
• Migrando desde MVC 5 a MVC 6
• ASP.NET Cross Plattform
http://aka.ms/EvASPNET5
ASP .NET MVC6
Eduard Tomàs
Compulsive Developer at Plain Concepts
etomas@plainconcepts.com
@eiximenis
http://blogs.plainconcepts.com/aspnetspain/
http://geeks.ms/blogs/etomas
MVC6 – Novedades
• MVC6 es una evolución de MVC5
• El modelo de desarrollo es el mismo: controladores, vistas, modelo
• Los cambios más importantes vienen dados por las propias novedades de ASPNET5
(configuración, inyección dependencias, nuevo workflow de trabajo)
• Lo que conoces del modelo de desarrollo de MVC5 no está obsoleto
Antes de nada… lo qué sigue “igual”
• Agregar referencia a Microsoft.AspNet.MVC 6.0.0
• Configurar servicios MVC6 en Startup.ConfigureServices
• Añadir MVC6 al pipeline de ASPNET5 en Startup.Configure
Instanciación MVC6
• El paquete Microsoft.AspNet.Diagnostics proporciona la página de error
• Debe configurarse en Startup con app.UseDeveloperExceptionPage()
• Esta página proprciona mucho detalle de los errores. En escenarios fuera de
desarrollo debe usarse UseExceptionHandler()
Página de error
• El mismo paquete Microsoft.AspNet.Diagnostics proporciona una página de
diagnóstico
• Dicha página proporciona información de los paquetes cargados
• Debe añadirse al pipeline con app.UseRuntimeInfoPage()
• La URL por defecto es /runtimeinfo
Página de diagnostico
Demo
Páginas de error y diagnóstico
• Reemplazan a las vistas parciales de MVC5
— Puede verse un View Component como un “pequeño controlador”
— El VC tiene una única responsabilidad: devolver la vista parcial
• Separación de responsabilidades
— No es necesario “hinchar” un controlador existente
View Components
• Clase que herede de ViewComponent
— Opcional: Atributo [ViewComponent] para especificar nombre
• Declarar método IViewComponentResult Invoke(…)
• Crear la vista asociada en
/Views/Shared/<ViewComponent>/
• Uso: @Component(“nombre”).Invoke(...)
ViewComponents
Demo
View Components
• Permiten que una “etiqueta HTML” en una vista de Razor sea procesada en servidor
• No son Web Controls
• Sustituyen a los helpers clásicos de Razor
• Permiten una mayor integración con herramientas
Razor Tag Helpers
Demo
Tag Helpers
• Heredar de TagHelper
• Decorar con [HtmlTargetElement] indicando qué atributos y qué tag son respondidos
por el TagHelper
• Redefinir el método Process
Creación de un TagHelper
• La directiva addTagHelper “clase, assembly” importa el TagHelper indicado del
ensamblado correspondiente
• VS2015 incluye en _ViewImports.cshtml el código para importar todos los TagHelpers
de MVC6 en todas las vistas:
— @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
Importar TagHelpers
Demo
Creación de un TagHelper
• Si un TagHelper es importado para la vista actual se ejecutará en todas las etiquetas
HTML que coincidan con la etiqueta declarada en [HtmlTargetElement] siempre y
cuando contengan algunos de los atributos declarados
• Podemos preceder el nombre del tag con ! para indicar a Razor que no queremos
que se procese el TagHelper
• Podemos usar @tagHelperPrefix “prefijo” para forzar un prefijo para todos los
TagHelpers.
Ejecución selectiva de TagHelpers
Demo
Ejecución selectiva de TagHelpers
• Se soporta la directiva @inject para inyectar dependencias en vistas Razor
— @inject MyType MyVariable
• Ojo… Eso da mucho poder a las vistas, úsalo con cautela
• Recuerda la separación de responsabilidades de MVC
Inyección de dependencias en vistas
• WebApi se integra dentro de MVC
• Desaparece “ApiController”
• Un solo sistema de routing.
• Un solo sistema de model binding
• Una sola jerarquía de clases
• Un solo framework
Unificación de WebApi y MVC
Demo
Controladores “duales”
• No es necesario que un controlador herede de la clase base Controller
• Interesante en escenarios, donde por cualquier razón, los controladores deban
heredar de otra clase
Controladores POCO
Demo
Controladores POCO
• Primero elige en qué ensamblados pueden estar los controladores.
• El ensamblado debe tener al menos una referencia a:
— “Microsoft.AspNet.Mvc”
— “Microsoft.AspNet.Mvc.Core”
— “Microsoft.AspNet.Mvc.ModelBinding”
— “Microsoft.AspNet.Mvc.Razor”
— “Microsoft.AspNet.Mvc.Razor.Host”
— “Microsoft.AspNet.Mvc.TagHelpers”
• Se puede modificar este comportamiento implementando IAssemblyProvider
Como MVC6 descubre controladores
• Una clase es considerada un controlador, si estando en un ensamblado seleccionado:
— Es pública i no abstracta
— No es genérica
— No es una nested class
— Debe heredar de Controller o terminar su nombre en Controller
— No debe estar decorada con [NonController]
• Puede redefinirse este comportamiento proporcionando un ControllerTypeProvider
propio
Como MVC6 descubre controladores
Demo
Localización de controladores
Learn more!
• ASP.NET Docs
• http://asp.net/en/latest
• ASP.NET MVC
• http://asp.net/vnext/mvc
• Github
• http://github.com/aspnet
Questions?
Novedades de ASP.NET MVC6
ASP .NET 5

Más contenido relacionado

PPTX
ASP.NET 5 & MVC 6 (RC1)
PPTX
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
PPTX
Desarrollo Web con ASP.NET MVC
PDF
Presentación Spring Boot en Autentia
PPTX
ASP.NET MVC
PPTX
MVC & ASP.NET (Spanish)
ODP
Creando APIs REST con Spring Boot
PPTX
ASP.NET MVC Workshop Día 2
ASP.NET 5 & MVC 6 (RC1)
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
Desarrollo Web con ASP.NET MVC
Presentación Spring Boot en Autentia
ASP.NET MVC
MVC & ASP.NET (Spanish)
Creando APIs REST con Spring Boot
ASP.NET MVC Workshop Día 2

La actualidad más candente (19)

PPTX
React, Flux y React native
PPTX
ASP.NET MVC
PPTX
ASP .NET MVC: Desarrollo web con el patrón MVC
PPTX
Asp.Net Core 1.0 Deep Dive
PPTX
ASP.NET MVC (2011)
PPTX
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
PPTX
Desarrollo de Aplicaciones Web con ASP.NET MVC5
PPTX
Cross development - React para desarrolladores de asp.net
PPTX
ASP.NET MVC Core
PPTX
Spring boot et. al. para el impaciente
PPTX
ASP.NET MVC Workshop Día 1
PPTX
Security in MVC Core by Hugo Biarge
PPTX
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
PPTX
Mvc4 Intro
PPTX
Azure API Management
PPTX
Plainconcepts .Net Core Event - Real Time Applications
PDF
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
PDF
Angular 6
PPTX
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
React, Flux y React native
ASP.NET MVC
ASP .NET MVC: Desarrollo web con el patrón MVC
Asp.Net Core 1.0 Deep Dive
ASP.NET MVC (2011)
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Cross development - React para desarrolladores de asp.net
ASP.NET MVC Core
Spring boot et. al. para el impaciente
ASP.NET MVC Workshop Día 1
Security in MVC Core by Hugo Biarge
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Mvc4 Intro
Azure API Management
Plainconcepts .Net Core Event - Real Time Applications
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Angular 6
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
Publicidad

Similar a Novedades de ASP.NET MVC6 (20)

PPTX
ASP.NET MVC Core by Eduard Tomàs
PPTX
ASP.NET vNext... Desarrollo cross platform
PPTX
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
PPTX
5-Unidad 2: Diseño de Vista-2.2 Para Web
PPTX
Introducción a ASPNET vNext
PPTX
5-Unidad 2: Diseños de Vista-2.2 Para Web
PPTX
3-Unidad 1. Arquitectura de Diseño
PPTX
Asp.net mvc
PPTX
Web matrix razor_aspnetmvc_finalv2_techdays2010
PPTX
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
PPTX
ASP.Net MVC 3 - Eugenio Serrano
PPTX
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
PDF
ASP.NET MVC - Introducción a ASP.NET MVC
PPTX
4 Programación Web con .NET y C#
PPTX
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
PDF
PPT Crear tablas y utilizar marquesinas.pdf
PDF
Taller mvc.net 5
PPTX
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
DOCX
PPTX
Web matrix session2
ASP.NET MVC Core by Eduard Tomàs
ASP.NET vNext... Desarrollo cross platform
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5-Unidad 2: Diseño de Vista-2.2 Para Web
Introducción a ASPNET vNext
5-Unidad 2: Diseños de Vista-2.2 Para Web
3-Unidad 1. Arquitectura de Diseño
Asp.net mvc
Web matrix razor_aspnetmvc_finalv2_techdays2010
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
ASP.Net MVC 3 - Eugenio Serrano
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
ASP.NET MVC - Introducción a ASP.NET MVC
4 Programación Web con .NET y C#
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
PPT Crear tablas y utilizar marquesinas.pdf
Taller mvc.net 5
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Web matrix session2
Publicidad

Más de Eduard Tomàs (20)

PPTX
Kubernetes: Do's, don'ts and why's
PPTX
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
PPTX
Escalando workloads serverless en Kubernetes con Keda
PPTX
C#9 - Más C# que nunca
PPTX
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
PPTX
Keda o como convertir Kubernetess en Serverless
PPTX
.NET Memoria y Rendimiento
PPTX
Containers en .NET (Dot Net 2018 - Spain)
PPTX
Esos contenedores, ¡a producción! (Commit Conf 2018)
PPTX
Codemotion 2015 - Bienvenido de nuevo c++
PPTX
El "peor" lenguaje del mundo
PPTX
Containerize a netcore application with aks
PPTX
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
PPTX
Aplicaciones de consola fáciles? Más quisieramos
PPTX
Serverless with Azure Functions and CosmosDb
PPTX
Docker y todo eso... más o menos
PPTX
Microservices: Yes or not?
PPTX
Azure functions
PPTX
React native - Unleash the power of your device
PPTX
JavaScript in 2016 (Codemotion Rome)
Kubernetes: Do's, don'ts and why's
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
Escalando workloads serverless en Kubernetes con Keda
C#9 - Más C# que nunca
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
Keda o como convertir Kubernetess en Serverless
.NET Memoria y Rendimiento
Containers en .NET (Dot Net 2018 - Spain)
Esos contenedores, ¡a producción! (Commit Conf 2018)
Codemotion 2015 - Bienvenido de nuevo c++
El "peor" lenguaje del mundo
Containerize a netcore application with aks
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Aplicaciones de consola fáciles? Más quisieramos
Serverless with Azure Functions and CosmosDb
Docker y todo eso... más o menos
Microservices: Yes or not?
Azure functions
React native - Unleash the power of your device
JavaScript in 2016 (Codemotion Rome)

Último (20)

PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
Yogurt de tocosh (1).pptx preparacion receta
PDF
diagrama de pareto.pdf valerie giraldo diaz
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
Presentación de Redes de Datos modelo osi
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
Maste clas de estructura metálica y arquitectura
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
Yogurt de tocosh (1).pptx preparacion receta
diagrama de pareto.pdf valerie giraldo diaz
Temas y subtemas de las fichas 1 y 2.pdf
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
REDES INFORMATICAS REDES INFORMATICAS.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Presentación de Redes de Datos modelo osi
Presentación PASANTIAS AuditorioOO..pptx
Maste clas de estructura metálica y arquitectura
introduccion a las_web en el 2025_mejoras.ppt
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Influencia-del-uso-de-redes-sociales.pdf
historia_web de la creacion de un navegador_presentacion.pptx
SAP Transportation Management para LSP, TM140 Col18
Estrategia de apoyo tecnología grado 9-3
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx

Novedades de ASP.NET MVC6

  • 2. Agenda • ASP.NET 5 Introduction • Unai Zorrilla • Novedades de MVC 6 • Eduard Tomás • break • Migrando desde MVC 5 a MVC 6 • ASP.NET Cross Plattform http://aka.ms/EvASPNET5
  • 4. Eduard Tomàs Compulsive Developer at Plain Concepts etomas@plainconcepts.com @eiximenis http://blogs.plainconcepts.com/aspnetspain/ http://geeks.ms/blogs/etomas
  • 6. • MVC6 es una evolución de MVC5 • El modelo de desarrollo es el mismo: controladores, vistas, modelo • Los cambios más importantes vienen dados por las propias novedades de ASPNET5 (configuración, inyección dependencias, nuevo workflow de trabajo) • Lo que conoces del modelo de desarrollo de MVC5 no está obsoleto Antes de nada… lo qué sigue “igual”
  • 7. • Agregar referencia a Microsoft.AspNet.MVC 6.0.0 • Configurar servicios MVC6 en Startup.ConfigureServices • Añadir MVC6 al pipeline de ASPNET5 en Startup.Configure Instanciación MVC6
  • 8. • El paquete Microsoft.AspNet.Diagnostics proporciona la página de error • Debe configurarse en Startup con app.UseDeveloperExceptionPage() • Esta página proprciona mucho detalle de los errores. En escenarios fuera de desarrollo debe usarse UseExceptionHandler() Página de error
  • 9. • El mismo paquete Microsoft.AspNet.Diagnostics proporciona una página de diagnóstico • Dicha página proporciona información de los paquetes cargados • Debe añadirse al pipeline con app.UseRuntimeInfoPage() • La URL por defecto es /runtimeinfo Página de diagnostico
  • 10. Demo Páginas de error y diagnóstico
  • 11. • Reemplazan a las vistas parciales de MVC5 — Puede verse un View Component como un “pequeño controlador” — El VC tiene una única responsabilidad: devolver la vista parcial • Separación de responsabilidades — No es necesario “hinchar” un controlador existente View Components
  • 12. • Clase que herede de ViewComponent — Opcional: Atributo [ViewComponent] para especificar nombre • Declarar método IViewComponentResult Invoke(…) • Crear la vista asociada en /Views/Shared/<ViewComponent>/ • Uso: @Component(“nombre”).Invoke(...) ViewComponents
  • 14. • Permiten que una “etiqueta HTML” en una vista de Razor sea procesada en servidor • No son Web Controls • Sustituyen a los helpers clásicos de Razor • Permiten una mayor integración con herramientas Razor Tag Helpers
  • 16. • Heredar de TagHelper • Decorar con [HtmlTargetElement] indicando qué atributos y qué tag son respondidos por el TagHelper • Redefinir el método Process Creación de un TagHelper
  • 17. • La directiva addTagHelper “clase, assembly” importa el TagHelper indicado del ensamblado correspondiente • VS2015 incluye en _ViewImports.cshtml el código para importar todos los TagHelpers de MVC6 en todas las vistas: — @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" Importar TagHelpers
  • 18. Demo Creación de un TagHelper
  • 19. • Si un TagHelper es importado para la vista actual se ejecutará en todas las etiquetas HTML que coincidan con la etiqueta declarada en [HtmlTargetElement] siempre y cuando contengan algunos de los atributos declarados • Podemos preceder el nombre del tag con ! para indicar a Razor que no queremos que se procese el TagHelper • Podemos usar @tagHelperPrefix “prefijo” para forzar un prefijo para todos los TagHelpers. Ejecución selectiva de TagHelpers
  • 21. • Se soporta la directiva @inject para inyectar dependencias en vistas Razor — @inject MyType MyVariable • Ojo… Eso da mucho poder a las vistas, úsalo con cautela • Recuerda la separación de responsabilidades de MVC Inyección de dependencias en vistas
  • 22. • WebApi se integra dentro de MVC • Desaparece “ApiController” • Un solo sistema de routing. • Un solo sistema de model binding • Una sola jerarquía de clases • Un solo framework Unificación de WebApi y MVC
  • 24. • No es necesario que un controlador herede de la clase base Controller • Interesante en escenarios, donde por cualquier razón, los controladores deban heredar de otra clase Controladores POCO
  • 26. • Primero elige en qué ensamblados pueden estar los controladores. • El ensamblado debe tener al menos una referencia a: — “Microsoft.AspNet.Mvc” — “Microsoft.AspNet.Mvc.Core” — “Microsoft.AspNet.Mvc.ModelBinding” — “Microsoft.AspNet.Mvc.Razor” — “Microsoft.AspNet.Mvc.Razor.Host” — “Microsoft.AspNet.Mvc.TagHelpers” • Se puede modificar este comportamiento implementando IAssemblyProvider Como MVC6 descubre controladores
  • 27. • Una clase es considerada un controlador, si estando en un ensamblado seleccionado: — Es pública i no abstracta — No es genérica — No es una nested class — Debe heredar de Controller o terminar su nombre en Controller — No debe estar decorada con [NonController] • Puede redefinirse este comportamiento proporcionando un ControllerTypeProvider propio Como MVC6 descubre controladores
  • 29. Learn more! • ASP.NET Docs • http://asp.net/en/latest • ASP.NET MVC • http://asp.net/vnext/mvc • Github • http://github.com/aspnet

Notas del editor

  • #11: DemoPaginas.sln
  • #12: Explicación de lo que son los View Components, qué rol juegan y como se usan
  • #13: Mencionar la versión asíncrona de Invoke (InvokeAsync)
  • #14: Mostrar DemoVC.sln Mencionar la inyección de dependencias en ViewComponents
  • #16: Enseñar los TagHelpers de formulario DemoTagHelper.sln -> Vista Home/Contact
  • #19: DemoTagHelper.sln -> Repeater
  • #24: DemoDual.sln Comentar código y mencionar serialización json / xml
  • #26: DemoPoco.sln
  • #29: DemoControllersLocation.sln