SlideShare une entreprise Scribd logo
1  sur  32
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?
ASP .NET 5

Contenu connexe

Tendances

React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React nativeEduard Tomàs
 
ASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCriojadotnet
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveEduard Tomàs
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)wildtango
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Rodolfo Finochietti
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Oscar Gensollen
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
Security in MVC Core by Hugo Biarge
Security in MVC Core by Hugo BiargeSecurity in MVC Core by Hugo Biarge
Security in MVC Core by Hugo BiargePlain Concepts
 
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Desarrollos NEA
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsCarlos Landeras Martínez
 
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!Iván López Martín
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónLuis Ruiz Pavón
 

Tendances (19)

React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
ASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVC
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep Dive
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Spring boot et. al. para el impaciente
Spring boot et. al. para el impacienteSpring boot et. al. para el impaciente
Spring boot et. al. para el impaciente
 
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
 
Security in MVC Core by Hugo Biarge
Security in MVC Core by Hugo BiargeSecurity in MVC Core by Hugo Biarge
Security in MVC Core by Hugo Biarge
 
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
 
Mvc4 Intro
Mvc4 IntroMvc4 Intro
Mvc4 Intro
 
Azure API Management
Azure API ManagementAzure API Management
Azure API Management
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time Applications
 
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
 
Angular 6
Angular 6Angular 6
Angular 6
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 

Similaire à Novedades de ASP.NET MVC6

Similaire à Novedades de ASP.NET MVC6 (20)

ASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard Tomàs
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
Introducción a Cake PHP Framework
Introducción a Cake PHP FrameworkIntroducción a Cake PHP Framework
Introducción a Cake PHP Framework
 
Iniciación Con CakePHP
Iniciación Con CakePHPIniciación Con CakePHP
Iniciación Con CakePHP
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVC
 
Trabajando con MySQL y PostgreSQL dentro de azure
Trabajando con MySQL y PostgreSQL dentro de azureTrabajando con MySQL y PostgreSQL dentro de azure
Trabajando con MySQL y PostgreSQL dentro de azure
 
Strust
StrustStrust
Strust
 
Mvc
MvcMvc
Mvc
 
Manualcake
ManualcakeManualcake
Manualcake
 
Vaadin 8 en BBR Spa
Vaadin 8 en BBR SpaVaadin 8 en BBR Spa
Vaadin 8 en BBR Spa
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Introducción a Asp.Net Mvc
Introducción a Asp.Net MvcIntroducción a Asp.Net Mvc
Introducción a Asp.Net Mvc
 
Ruby On Rails Intro
Ruby On Rails IntroRuby On Rails Intro
Ruby On Rails Intro
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Mvc
MvcMvc
Mvc
 
Rails intro
Rails introRails intro
Rails intro
 
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
 
Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNext
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 

Plus de Eduard Tomàs

Kubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sKubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sEduard Tomàs
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAEduard Tomàs
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEduard Tomàs
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nuncaEduard Tomàs
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDAEduard Tomàs
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessEduard Tomàs
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y RendimientoEduard Tomàs
 
Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Eduard Tomàs
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Eduard Tomàs
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundoEduard Tomàs
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aksEduard Tomàs
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Eduard Tomàs
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosEduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbEduard Tomàs
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menosEduard Tomàs
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?Eduard Tomàs
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your deviceEduard Tomàs
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)Eduard Tomàs
 

Plus de Eduard Tomàs (20)

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

Dernier

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.pptxAlan779941
 
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 JUNITMaricarmen Sánchez Ruiz
 
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.pptxMiguelAtencio10
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
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 XXIhmpuellon
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
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 eyvanamcerpam
 
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 estossgonzalezp1
 
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.FlorenciaCattelani
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
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...JohnRamos830530
 
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 ASPECTOSpptxJorgeParada26
 

Dernier (12)

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
 
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
 
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
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
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
 
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
 
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.
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
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...
 
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
 

Novedades de ASP.NET MVC6

  • 1.
  • 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
  • 31.

Notes de l'éditeur

  1. DemoPaginas.sln
  2. Explicación de lo que son los View Components, qué rol juegan y como se usan
  3. Mencionar la versión asíncrona de Invoke (InvokeAsync)
  4. Mostrar DemoVC.sln Mencionar la inyección de dependencias en ViewComponents
  5. Enseñar los TagHelpers de formulario DemoTagHelper.sln -> Vista Home/Contact
  6. DemoTagHelper.sln -> Repeater
  7. DemoDual.sln Comentar código y mencionar serialización json / xml
  8. DemoPoco.sln
  9. DemoControllersLocation.sln