SlideShare una empresa de Scribd logo
24.01.2017
ASP.NET MVC
Core
{
“title”: “Developer”,
“awards”: [“mvp”],
“twitter”: “@eiximenis”,
“blog”: “http://geeks.ms/etomas”
“work” : {
“name”: “Plain Concepts”,
“office”: “BCN”,
“url”: “http://www.plainconcepts.com”
}
}
Eduard Tomàs
#NETCore2017 2
• MVC Core mantiene el mismo modelo de desarrollo que MVC5
• Vistas (Razor), Controladores, Acciones, Resultados de acción
• Convenciones
• Enrutamiento (tabla de rutas + enrutamiento por atributos)
• Si sabes MVC5 el salto inicial a MVC Core no es muy complejo
• Misma filosofía
Lo que es (casi) igual
#NETCore2017 3
(COMPARÁNDOLO CON MVC5, CLARO)
• Razor Tag Helpers
• Razor View Components
• Unificación MVC – WebApi
• Convenciones personalizadas
Algunas cosas que son distintas
#NETCore2017 4
(Y LO QUE VEREMOS HOY)
• MVC Core se alinea con las tendencias front modernas
• Directorio wwwroot donde se despliega la app
• Ciclo de trabajo usando npm, gulp, bower, …
• Visual Studio 2015/2017 tiene gran soporte para esas herramientas
• Fácil uso con herramientas externas
La gran diferencia
#NETCore2017 5
(Y LO QUE DEBERÍAS IR VIENDO INCLUSO EN MVC5)
• Muchas de las diferencias son de ASP.NET Core, no de MVC Core:
• Seguridad
• Logging
• Gestión de errores
• Configuración
• …
MVC Core es un middleware core
#NETCore2017 6
(¡SI CONOCES OWIN/KATANA ESTÁS DE SUERTE!)
Los Tag Helpers son etiquetas Razor
personalizadas que permiten encapsular
código Razor
Parecidos a los helpers tradicionales, pero
más potentes
Razor TAG
HELPERS
#NETCore2017 7
INTEGRANDO HELPERS CON MÁS FACILIDAD
Demo: Creando
un Tag Helper
8
• Mayor integración con herramientas de diseño
• Heredan de la clase TagHelper
• Se pueden redefinir etiquetas HTML existentes
• Una etiqueta HTML puede ser o no un Tag Helper en función de sus
atributos
• Tienen conocimiento de su contenido
• Directiva @addTagHelper para importarlos
Razor Tag Helpers
#NETCore2017 9
(LAS CLAVES)
Formularios más claros
#NETCore2017 10
YA NO MÁS @HTML…. (CASI)
<form asp-controller="Account" asp-action="Login" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" class="form-
horizontal">
<h4>Use a local account to log in.</h4>
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Email" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Email" class="form-control" />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="Password" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Password" class="form-control" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
</div>
<p>
<a asp-action="ForgotPassword">Forgot your password?</a>
</p>
</form>
Demo: Tag
Helper repeater
11
Los view components son el equivalente a las
acciones hijas de MVC5
Invocadas desde Razor
Muestran UI parcial con lógica de negocio
VIEW
COMPONENTS
#NETCore2017 12
YA NO MÁS ACCIONES HIJAS
• Heredar de ViewComponent
• Definir método Invoke (o InvokeAsync) que retorna IViewComponentResult
• Parámetros libres (método Invoke no es override).
• Vista Default.cshml en /Views/Shared/Components/<Componente>
• Invocar desde Razor
• @Component.Invoke(“nombre”, new {<parámetros>})
View Components
#NETCore2017 13
(LAS CUATRO COSAS A SABER)
• Bonus 1.1: Invocar view component como tag helper
• <vc:nombre attr=“value” …></vc:nombre>
Demo: View
Components
14
WebApi desaparece y se integra en MVC
Core
No más ApiController ni clases duplicadas
El model binding de MVC Core es una
mezcla del de MVC5 y WebApi 2
MVC Y WEBAPI
UNIFICADOS
#NETCore2017 15
¡NO MÁS WEBAPI Y MVC!
1. Si el controlador es un controlador de API:
1. Un solo parámetro complejo con [FromBody]
2. N parámetros simples que irán en URL
2. Si el controlador es un controlador de Web:
1. Tantos parámetros simples o complejos como se quiera
2. No usar [FromBody]
Model binding unificado
#NETCore2017 16
(LAS REGLAS PARA NEWBIES)
Demo: Model
Binding
17
• El content-type de la petición determina el model binding a usar
• Usar application/x-www-form-urlencoded usa model binding a lo MVC
• Usar application/json o text/xml usa model binding a lo WebApi
• Otros content-types usarán el model binding especificado por el
desarrollador
Model binding unificado
#NETCore2017 18
(LAS CLAVES AVANZADAS)
• Parámetros son leídos por value providers
• Parámetros son enlazados por model binders
• Un mismo parámetro puede ser enlazado múltiples veces
• Un mismo parámetro puede ser enlazado desde URL o desde el cuerpo de
la petición
• Se puede enlazar más de un parámetro desde la URL
• Se puede enlazar más de un parámetro desde el cuerpo de la petición
Model binding a lo MVC
#NETCore2017 19
(LO QUE DEBEMOS SABER)
• Parámetros de URL son leídos por value providers
• Parámetros de URL son enlazados por model binders
• Se puede enlazar más de un parámetro desde la URL
• Un mismo parámetro de URL puede ser enlazado varias veces
• Solo un parámetro puede ser enlazado desde el cuerpo de la petición
• Leído y enlazado a partir de un InputFormatter
• El parámetro enlazado a partir del cuerpo de la petición debe estar
marcado con [FromBody]
Model binding a lo WebApi
#NETCore2017 20
(LO QUE DEBEMOS SABER)
Demo: Custom
InputFormatter
21
• Integrada en aquellos action results que heredan de ObjectResult
• Usa la cabecera Accept de la petición
• Se puede forzar un formato con [Produces]
• La respuesta es generada por un OutputFormatter
• Podemos crear OutputFormatters nuevos para dar soporte a nuevos
formatos
Negociación de contenido
#NETCore2017 22
(O COMO DARLE AL CLIENTE LO QUE PIDE)
• Si no hay un OutputFormatter para el tipo especificado el fallback por
defecto es JSON
• Se puede añadir el HttpNotAcceptableOutputFormatter que devolverá un
406
Negociación de contenido
#NETCore2017 23
(UN PAR DE COSILLAS MÁS…)
services.AddMvc().Configure<MvcOptions>(options =>
{
options.OutputFormatters.Insert(0, new HttpNotAcceptableOutputFormatter());
}
• En MVC5 / WebApi2 si se devolvía un null ese era serializado
Un poco más restful
#NETCore2017 24
(DOS DETALLITOS…)
• En MVC Core eso devuelve un 204 (No Content)
• Las cadenas son devueltas usando text/plain
• Podemos modificar las convenciones por defecto y agregar
convenciones nuevas
• ¿Es buena idea modificar las convenciones? …
• Habilita escenarios interesantes
• Implementar IApplicationModelConvention
• Podemos agregar restricciones implementando
IActionConstraintMetadata
Convenciones propias
#NETCore2017 25
(UN GRAN PODER CONLLEVA UNA GRAN RESPONSABILIDAD)
Demo: Convenciones
propias
26
• Empieza ya a usar npm, gulp y similares.
• Olvida los bundles de MVC
• Usa los IHttpResult de WebApi2.
• Olvida el enrutado por verbo de WebApi.
• Usa enrutado por atributos en WebApi.
• Usa WebApi en modo OWIN.
• Usa inyección de dependencias
• Evita devolver datos desde MVC5. Usa WebApi.
De MVC5 a MVC Core
#NETCore2017 27
(CONSEJOS BÁSICOS PARA AYUDARTE A DAR EL SALTO)
• Sustituye Razor Helpers por Tag Helpers
• Sustituye acciones hijas por View Components
• Elimina [FromUri] en ApiControllers y verifica los bindings
• Y por supuesto: Valora si vale la pena migrar. ¡Recuerda todo lo que no
es realmente MVC Core pero sí ASP.NET Core!
De MVC5 a MVC Core
#NETCore2017 28
(CONSEJOS BÁSICOS PARA AYUDARTE A DAR EL SALTO)
¡GRACIAS!
@eiximenis
etomas@plainconcepts.com
www.plainconcepts.com
MADRID
Paseo de la Castellana 163, 10º
28046 Madrid. España
T. (+34) 91 5346 836
BILBAO
Nervión 3 , 6º
48001 Bilbao. España
T. (+34) 94 6008 168
BARCELONA
Av. Josep Tarradellas 10, 6º 1ª
08029 Barcelona. España
T. (+34) 93 3607 114
SEVILLA
Avenida de la innovación s/n
Edificio Renta Sevilla, 3º A
41020 Sevilla. España
DUBAI
Dubai Internet City. Building 1
73030 Dubai. EAU
T. (+971) 4 551 6653
LONDON
Impact Hub Kings Cross
24B York Way, N1 9AB
London. UK
SEATTLE
1511, Third Ave
Seattle WA 98101. USA
T. (+1) 206 708 1285

Más contenido relacionado

La actualidad más candente

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
Eduard Tomàs
 
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
Rodolfo Finochietti
 
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
 
Azure 360º para Desarrolaldores
Azure 360º para DesarrolaldoresAzure 360º para Desarrolaldores
Azure 360º para Desarrolaldores
Germán Küber
 
SpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con GrailsSpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con Grails
Domingo Suarez Torres
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)
Ernesto Anaya
 
NodeJS
NodeJSNodeJS
NodeJS
IBM
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
Domingo Suarez Torres
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk   AWS Roadshow Bogota MexicoIntroduccion a Elastic Beanstalk   AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Hermann Pais
 
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring BootSOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
Domingo Suarez Torres
 
Azure Bootcamp 2017 - Azure functions
Azure Bootcamp 2017 - Azure functionsAzure Bootcamp 2017 - Azure functions
Azure Bootcamp 2017 - Azure functions
Diego Bersano
 
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
Eduard Tomàs
 
Web matrix razor_aspnetmvc_finalv2_techdays2010
Web matrix razor_aspnetmvc_finalv2_techdays2010Web matrix razor_aspnetmvc_finalv2_techdays2010
Web matrix razor_aspnetmvc_finalv2_techdays2010
Gonzalo C.
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
Jorge Pacheco Mengual
 
Backbeam
BackbeamBackbeam
Backbeam
betabeers
 
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoWeb matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Gonzalo C.
 
Creando APIs REST con Spring Boot
Creando APIs REST con Spring BootCreando APIs REST con Spring Boot
Creando APIs REST con Spring Boot
José Antonio Escobar García
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
Carlos Landeras Martínez
 
Grails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta cargaGrails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta carga
Domingo Suarez Torres
 

La actualidad más candente (19)

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
 
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
 
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)
 
Azure 360º para Desarrolaldores
Azure 360º para DesarrolaldoresAzure 360º para Desarrolaldores
Azure 360º para Desarrolaldores
 
SpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con GrailsSpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con Grails
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)
 
NodeJS
NodeJSNodeJS
NodeJS
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk   AWS Roadshow Bogota MexicoIntroduccion a Elastic Beanstalk   AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
 
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring BootSOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
 
Azure Bootcamp 2017 - Azure functions
Azure Bootcamp 2017 - Azure functionsAzure Bootcamp 2017 - Azure functions
Azure Bootcamp 2017 - Azure functions
 
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
 
Web matrix razor_aspnetmvc_finalv2_techdays2010
Web matrix razor_aspnetmvc_finalv2_techdays2010Web matrix razor_aspnetmvc_finalv2_techdays2010
Web matrix razor_aspnetmvc_finalv2_techdays2010
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Backbeam
BackbeamBackbeam
Backbeam
 
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoWeb matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
 
Creando APIs REST con Spring Boot
Creando APIs REST con Spring BootCreando APIs REST con Spring Boot
Creando APIs REST con Spring Boot
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
 
Grails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta cargaGrails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta carga
 

Destacado

Puzles C#
Puzles C#Puzles C#
Puzles C#
lantoli
 
5 to reportaje
5 to reportaje5 to reportaje
5 to reportaje
Eduardo Tomas
 
Functional Reactive Programming
Functional Reactive ProgrammingFunctional Reactive Programming
Functional Reactive Programming
Olav Haugen
 
The algebra of library design
The algebra of library designThe algebra of library design
The algebra of library design
Leonardo Borges
 
Prism Navigation
Prism NavigationPrism Navigation
Prism Navigation
Eyal Vardi
 
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su APIDotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
Roberto Luis Bisbé
 
Models
ModelsModels
Models
Eyal Vardi
 
ASP.NET MVC The Begining
ASP.NET MVC The BeginingASP.NET MVC The Begining
ASP.NET MVC The Begining
Simon Huang
 
Una visión multiplataforma con aspnet v next
Una visión multiplataforma con aspnet v nextUna visión multiplataforma con aspnet v next
Una visión multiplataforma con aspnet v next
Eduard Tomàs
 
Thiet ke co so du lieu
Thiet ke co so du lieuThiet ke co so du lieu
Thiet ke co so du lieu
ma giam gia
 
Azure functions
Azure functionsAzure functions
Azure functions
Eduard Tomàs
 
Functional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event SystemsFunctional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event Systems
Leonardo Borges
 
What is Reactive programming?
What is Reactive programming?What is Reactive programming?
What is Reactive programming?
Kevin Webber
 
DotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactDotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + react
Chen-Tien Tsai
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
Cellenza
 
Microservices: Architecture for the Real-time Organization
Microservices: Architecture for the Real-time OrganizationMicroservices: Architecture for the Real-time Organization
Microservices: Architecture for the Real-time Organization
Kevin Webber
 
Introduction to .NET Core
Introduction to .NET CoreIntroduction to .NET Core
Introduction to .NET Core
Marco Parenzan
 
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
Brand Xanh
 
Getting Started with ASP.net Core 1.0
Getting Started with ASP.net Core 1.0Getting Started with ASP.net Core 1.0
Getting Started with ASP.net Core 1.0
joescars
 
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPTBài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
MasterCode.vn
 

Destacado (20)

Puzles C#
Puzles C#Puzles C#
Puzles C#
 
5 to reportaje
5 to reportaje5 to reportaje
5 to reportaje
 
Functional Reactive Programming
Functional Reactive ProgrammingFunctional Reactive Programming
Functional Reactive Programming
 
The algebra of library design
The algebra of library designThe algebra of library design
The algebra of library design
 
Prism Navigation
Prism NavigationPrism Navigation
Prism Navigation
 
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su APIDotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
 
Models
ModelsModels
Models
 
ASP.NET MVC The Begining
ASP.NET MVC The BeginingASP.NET MVC The Begining
ASP.NET MVC The Begining
 
Una visión multiplataforma con aspnet v next
Una visión multiplataforma con aspnet v nextUna visión multiplataforma con aspnet v next
Una visión multiplataforma con aspnet v next
 
Thiet ke co so du lieu
Thiet ke co so du lieuThiet ke co so du lieu
Thiet ke co so du lieu
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Functional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event SystemsFunctional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event Systems
 
What is Reactive programming?
What is Reactive programming?What is Reactive programming?
What is Reactive programming?
 
DotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactDotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + react
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
 
Microservices: Architecture for the Real-time Organization
Microservices: Architecture for the Real-time OrganizationMicroservices: Architecture for the Real-time Organization
Microservices: Architecture for the Real-time Organization
 
Introduction to .NET Core
Introduction to .NET CoreIntroduction to .NET Core
Introduction to .NET Core
 
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
 
Getting Started with ASP.net Core 1.0
Getting Started with ASP.net Core 1.0Getting Started with ASP.net Core 1.0
Getting Started with ASP.net Core 1.0
 
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPTBài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
 

Similar a ASP.NET MVC Core

Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6
Eduard Tomàs
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVC
Sebastián Rocco
 
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
SibilinoAndante
 
Todomir
TodomirTodomir
Todomir
Arturo Guzman
 
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
Oscar Gensollen
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
Jose Juan R. Zuñiga
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVC
Danae Aguilar Guzmán
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
Senior Dev
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
Carlos A. Iglesias
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
Rodolfo Finochietti
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
Raúl Palacios López
 
Iniciación Con CakePHP
Iniciación Con CakePHPIniciación Con CakePHP
Iniciación Con CakePHP
Victor San Martin
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corporacion de Industrias Tecnologicas S.A.
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
Juan Carlos Prieto
 
Mvc4 Intro
Mvc4 IntroMvc4 Intro
Mvc4 Intro
Fernando Cuevas
 
Transforma tu Monolito con HMVC
Transforma tu Monolito con HMVCTransforma tu Monolito con HMVC
Transforma tu Monolito con HMVC
Ortus Solutions, Corp
 
Seminario html5
Seminario html5Seminario html5
Seminario html5
UDECI
 
Java web 01 - servlets
Java web 01 - servletsJava web 01 - servlets
Java web 01 - servlets
Eric Gustavo Coronel Castillo
 
PHP_Mysql.pptx
PHP_Mysql.pptxPHP_Mysql.pptx
PHP_Mysql.pptx
YasserQuispe
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
jjegonzalezf
 

Similar a ASP.NET MVC Core (20)

Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVC
 
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
 
Todomir
TodomirTodomir
Todomir
 
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
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVC
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Iniciación Con CakePHP
Iniciación Con CakePHPIniciación Con CakePHP
Iniciación Con CakePHP
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Mvc4 Intro
Mvc4 IntroMvc4 Intro
Mvc4 Intro
 
Transforma tu Monolito con HMVC
Transforma tu Monolito con HMVCTransforma tu Monolito con HMVC
Transforma tu Monolito con HMVC
 
Seminario html5
Seminario html5Seminario html5
Seminario html5
 
Java web 01 - servlets
Java web 01 - servletsJava web 01 - servlets
Java web 01 - servlets
 
PHP_Mysql.pptx
PHP_Mysql.pptxPHP_Mysql.pptx
PHP_Mysql.pptx
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 

Más de Eduard 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 KEDA
Eduard 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 Keda
Eduard 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 nunca
Eduard 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 KEDA
Eduard 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 Serverless
Eduard Tomàs
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
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 mundo
Eduard 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 aks
Eduard 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 quisieramos
Eduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDb
Eduard 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 device
Eduard 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
 
React native - t3chfest 2016
React native - t3chfest 2016React native - t3chfest 2016
React native - t3chfest 2016
Eduard Tomàs
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
Eduard Tomàs
 
JavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbJavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDb
Eduard Tomàs
 
Winobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOSWinobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOS
Eduard Tomàs
 
EcmaScript unchained
EcmaScript unchainedEcmaScript unchained
EcmaScript unchained
Eduard Tomàs
 

Más de Eduard Tomàs (20)

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
 
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
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
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)
 
React native - t3chfest 2016
React native - t3chfest 2016React native - t3chfest 2016
React native - t3chfest 2016
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
JavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbJavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDb
 
Winobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOSWinobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOS
 
EcmaScript unchained
EcmaScript unchainedEcmaScript unchained
EcmaScript unchained
 

Último

Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptxDiapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
GnesisOrtegaDeLen
 
590248542-Pruebas-de-auditoria-informatica.pdf
590248542-Pruebas-de-auditoria-informatica.pdf590248542-Pruebas-de-auditoria-informatica.pdf
590248542-Pruebas-de-auditoria-informatica.pdf
ivanbrito1105
 
_Manejo de Riesgos en el Laboratorio.pdf
_Manejo de Riesgos en el Laboratorio.pdf_Manejo de Riesgos en el Laboratorio.pdf
_Manejo de Riesgos en el Laboratorio.pdf
correodetareas
 
Generaciones de Computadoras .
Generaciones de Computadoras                 .Generaciones de Computadoras                 .
Generaciones de Computadoras .
gregory760891
 
DE LO HUMANO Y LO COMUNITARIO PROYECTO INTEGRADOR (2).docx
DE LO HUMANO Y LO COMUNITARIO PROYECTO INTEGRADOR (2).docxDE LO HUMANO Y LO COMUNITARIO PROYECTO INTEGRADOR (2).docx
DE LO HUMANO Y LO COMUNITARIO PROYECTO INTEGRADOR (2).docx
lourdesuribe6
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
Katia Reyes
 
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
Rubén Cortes Zavala
 
Informe_mc_bombas_Warman_001-WEIR vulco.pdf
Informe_mc_bombas_Warman_001-WEIR vulco.pdfInforme_mc_bombas_Warman_001-WEIR vulco.pdf
Informe_mc_bombas_Warman_001-WEIR vulco.pdf
Rubén Cortes Zavala
 
Evolución, características, aplicación, ventajas y desventajas de las TIC
Evolución, características, aplicación, ventajas y desventajas de las TICEvolución, características, aplicación, ventajas y desventajas de las TIC
Evolución, características, aplicación, ventajas y desventajas de las TIC
Henry W. Zavala
 
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docxSEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
Eddy Nathaly Jaimes Villamizar
 
11. Legislación Aplicada a la Informática.pdf
11. Legislación Aplicada a la Informática.pdf11. Legislación Aplicada a la Informática.pdf
11. Legislación Aplicada a la Informática.pdf
PanchoChangue
 
DN Consultores | Una mirada al mercado de fibra en Perú
DN Consultores | Una mirada al mercado de fibra en PerúDN Consultores | Una mirada al mercado de fibra en Perú
DN Consultores | Una mirada al mercado de fibra en Perú
estudios22
 
Conceptos y definiciones de Antenas y propagación
Conceptos y definiciones de Antenas y propagaciónConceptos y definiciones de Antenas y propagación
Conceptos y definiciones de Antenas y propagación
edgarcalle8
 
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
ADELAIDA90
 
Catalogo-Voxtech- accesorios radios RF.pdf
Catalogo-Voxtech- accesorios radios RF.pdfCatalogo-Voxtech- accesorios radios RF.pdf
Catalogo-Voxtech- accesorios radios RF.pdf
walter729637
 
bomba-koomey -Todo sobre sus istema y conexiones
bomba-koomey -Todo sobre sus istema y conexionesbomba-koomey -Todo sobre sus istema y conexiones
bomba-koomey -Todo sobre sus istema y conexiones
JessAdrinGonzlezCade
 
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Telefónica
 
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
241578066
 

Último (18)

Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptxDiapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
Diapositiva sobre Tecnologia de la Información y Telecomunicaciones.pptx
 
590248542-Pruebas-de-auditoria-informatica.pdf
590248542-Pruebas-de-auditoria-informatica.pdf590248542-Pruebas-de-auditoria-informatica.pdf
590248542-Pruebas-de-auditoria-informatica.pdf
 
_Manejo de Riesgos en el Laboratorio.pdf
_Manejo de Riesgos en el Laboratorio.pdf_Manejo de Riesgos en el Laboratorio.pdf
_Manejo de Riesgos en el Laboratorio.pdf
 
Generaciones de Computadoras .
Generaciones de Computadoras                 .Generaciones de Computadoras                 .
Generaciones de Computadoras .
 
DE LO HUMANO Y LO COMUNITARIO PROYECTO INTEGRADOR (2).docx
DE LO HUMANO Y LO COMUNITARIO PROYECTO INTEGRADOR (2).docxDE LO HUMANO Y LO COMUNITARIO PROYECTO INTEGRADOR (2).docx
DE LO HUMANO Y LO COMUNITARIO PROYECTO INTEGRADOR (2).docx
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
400816850-Mantenimiento-de-Equipos-de-Espesamiento-pdf.pdf
 
Informe_mc_bombas_Warman_001-WEIR vulco.pdf
Informe_mc_bombas_Warman_001-WEIR vulco.pdfInforme_mc_bombas_Warman_001-WEIR vulco.pdf
Informe_mc_bombas_Warman_001-WEIR vulco.pdf
 
Evolución, características, aplicación, ventajas y desventajas de las TIC
Evolución, características, aplicación, ventajas y desventajas de las TICEvolución, características, aplicación, ventajas y desventajas de las TIC
Evolución, características, aplicación, ventajas y desventajas de las TIC
 
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docxSEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
SEGUNDA GENERACIÓN xxxxxxxxxxxxxxxx.docx
 
11. Legislación Aplicada a la Informática.pdf
11. Legislación Aplicada a la Informática.pdf11. Legislación Aplicada a la Informática.pdf
11. Legislación Aplicada a la Informática.pdf
 
DN Consultores | Una mirada al mercado de fibra en Perú
DN Consultores | Una mirada al mercado de fibra en PerúDN Consultores | Una mirada al mercado de fibra en Perú
DN Consultores | Una mirada al mercado de fibra en Perú
 
Conceptos y definiciones de Antenas y propagación
Conceptos y definiciones de Antenas y propagaciónConceptos y definiciones de Antenas y propagación
Conceptos y definiciones de Antenas y propagación
 
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
 
Catalogo-Voxtech- accesorios radios RF.pdf
Catalogo-Voxtech- accesorios radios RF.pdfCatalogo-Voxtech- accesorios radios RF.pdf
Catalogo-Voxtech- accesorios radios RF.pdf
 
bomba-koomey -Todo sobre sus istema y conexiones
bomba-koomey -Todo sobre sus istema y conexionesbomba-koomey -Todo sobre sus istema y conexiones
bomba-koomey -Todo sobre sus istema y conexiones
 
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
 
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
"El uso de las TIC en la vida cotidiana". SantanaMartinez_Alejandra
 

ASP.NET MVC Core

  • 2. { “title”: “Developer”, “awards”: [“mvp”], “twitter”: “@eiximenis”, “blog”: “http://geeks.ms/etomas” “work” : { “name”: “Plain Concepts”, “office”: “BCN”, “url”: “http://www.plainconcepts.com” } } Eduard Tomàs #NETCore2017 2
  • 3. • MVC Core mantiene el mismo modelo de desarrollo que MVC5 • Vistas (Razor), Controladores, Acciones, Resultados de acción • Convenciones • Enrutamiento (tabla de rutas + enrutamiento por atributos) • Si sabes MVC5 el salto inicial a MVC Core no es muy complejo • Misma filosofía Lo que es (casi) igual #NETCore2017 3 (COMPARÁNDOLO CON MVC5, CLARO)
  • 4. • Razor Tag Helpers • Razor View Components • Unificación MVC – WebApi • Convenciones personalizadas Algunas cosas que son distintas #NETCore2017 4 (Y LO QUE VEREMOS HOY)
  • 5. • MVC Core se alinea con las tendencias front modernas • Directorio wwwroot donde se despliega la app • Ciclo de trabajo usando npm, gulp, bower, … • Visual Studio 2015/2017 tiene gran soporte para esas herramientas • Fácil uso con herramientas externas La gran diferencia #NETCore2017 5 (Y LO QUE DEBERÍAS IR VIENDO INCLUSO EN MVC5)
  • 6. • Muchas de las diferencias son de ASP.NET Core, no de MVC Core: • Seguridad • Logging • Gestión de errores • Configuración • … MVC Core es un middleware core #NETCore2017 6 (¡SI CONOCES OWIN/KATANA ESTÁS DE SUERTE!)
  • 7. Los Tag Helpers son etiquetas Razor personalizadas que permiten encapsular código Razor Parecidos a los helpers tradicionales, pero más potentes Razor TAG HELPERS #NETCore2017 7 INTEGRANDO HELPERS CON MÁS FACILIDAD
  • 9. • Mayor integración con herramientas de diseño • Heredan de la clase TagHelper • Se pueden redefinir etiquetas HTML existentes • Una etiqueta HTML puede ser o no un Tag Helper en función de sus atributos • Tienen conocimiento de su contenido • Directiva @addTagHelper para importarlos Razor Tag Helpers #NETCore2017 9 (LAS CLAVES)
  • 10. Formularios más claros #NETCore2017 10 YA NO MÁS @HTML…. (CASI) <form asp-controller="Account" asp-action="Login" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" class="form- horizontal"> <h4>Use a local account to log in.</h4> <div asp-validation-summary="All" class="text-danger"></div> <div class="form-group"> <label asp-for="Email" class="col-md-2 control-label"></label> <div class="col-md-10"> <input asp-for="Email" class="form-control" /> <span asp-validation-for="Email" class="text-danger"></span> </div> </div> <div class="form-group"> <label asp-for="Password" class="col-md-2 control-label"></label> <div class="col-md-10"> <input asp-for="Password" class="form-control" /> <span asp-validation-for="Password" class="text-danger"></span> </div> </div> <p> <a asp-action="ForgotPassword">Forgot your password?</a> </p> </form>
  • 12. Los view components son el equivalente a las acciones hijas de MVC5 Invocadas desde Razor Muestran UI parcial con lógica de negocio VIEW COMPONENTS #NETCore2017 12 YA NO MÁS ACCIONES HIJAS
  • 13. • Heredar de ViewComponent • Definir método Invoke (o InvokeAsync) que retorna IViewComponentResult • Parámetros libres (método Invoke no es override). • Vista Default.cshml en /Views/Shared/Components/<Componente> • Invocar desde Razor • @Component.Invoke(“nombre”, new {<parámetros>}) View Components #NETCore2017 13 (LAS CUATRO COSAS A SABER) • Bonus 1.1: Invocar view component como tag helper • <vc:nombre attr=“value” …></vc:nombre>
  • 15. WebApi desaparece y se integra en MVC Core No más ApiController ni clases duplicadas El model binding de MVC Core es una mezcla del de MVC5 y WebApi 2 MVC Y WEBAPI UNIFICADOS #NETCore2017 15 ¡NO MÁS WEBAPI Y MVC!
  • 16. 1. Si el controlador es un controlador de API: 1. Un solo parámetro complejo con [FromBody] 2. N parámetros simples que irán en URL 2. Si el controlador es un controlador de Web: 1. Tantos parámetros simples o complejos como se quiera 2. No usar [FromBody] Model binding unificado #NETCore2017 16 (LAS REGLAS PARA NEWBIES)
  • 18. • El content-type de la petición determina el model binding a usar • Usar application/x-www-form-urlencoded usa model binding a lo MVC • Usar application/json o text/xml usa model binding a lo WebApi • Otros content-types usarán el model binding especificado por el desarrollador Model binding unificado #NETCore2017 18 (LAS CLAVES AVANZADAS)
  • 19. • Parámetros son leídos por value providers • Parámetros son enlazados por model binders • Un mismo parámetro puede ser enlazado múltiples veces • Un mismo parámetro puede ser enlazado desde URL o desde el cuerpo de la petición • Se puede enlazar más de un parámetro desde la URL • Se puede enlazar más de un parámetro desde el cuerpo de la petición Model binding a lo MVC #NETCore2017 19 (LO QUE DEBEMOS SABER)
  • 20. • Parámetros de URL son leídos por value providers • Parámetros de URL son enlazados por model binders • Se puede enlazar más de un parámetro desde la URL • Un mismo parámetro de URL puede ser enlazado varias veces • Solo un parámetro puede ser enlazado desde el cuerpo de la petición • Leído y enlazado a partir de un InputFormatter • El parámetro enlazado a partir del cuerpo de la petición debe estar marcado con [FromBody] Model binding a lo WebApi #NETCore2017 20 (LO QUE DEBEMOS SABER)
  • 22. • Integrada en aquellos action results que heredan de ObjectResult • Usa la cabecera Accept de la petición • Se puede forzar un formato con [Produces] • La respuesta es generada por un OutputFormatter • Podemos crear OutputFormatters nuevos para dar soporte a nuevos formatos Negociación de contenido #NETCore2017 22 (O COMO DARLE AL CLIENTE LO QUE PIDE)
  • 23. • Si no hay un OutputFormatter para el tipo especificado el fallback por defecto es JSON • Se puede añadir el HttpNotAcceptableOutputFormatter que devolverá un 406 Negociación de contenido #NETCore2017 23 (UN PAR DE COSILLAS MÁS…) services.AddMvc().Configure<MvcOptions>(options => { options.OutputFormatters.Insert(0, new HttpNotAcceptableOutputFormatter()); }
  • 24. • En MVC5 / WebApi2 si se devolvía un null ese era serializado Un poco más restful #NETCore2017 24 (DOS DETALLITOS…) • En MVC Core eso devuelve un 204 (No Content) • Las cadenas son devueltas usando text/plain
  • 25. • Podemos modificar las convenciones por defecto y agregar convenciones nuevas • ¿Es buena idea modificar las convenciones? … • Habilita escenarios interesantes • Implementar IApplicationModelConvention • Podemos agregar restricciones implementando IActionConstraintMetadata Convenciones propias #NETCore2017 25 (UN GRAN PODER CONLLEVA UNA GRAN RESPONSABILIDAD)
  • 27. • Empieza ya a usar npm, gulp y similares. • Olvida los bundles de MVC • Usa los IHttpResult de WebApi2. • Olvida el enrutado por verbo de WebApi. • Usa enrutado por atributos en WebApi. • Usa WebApi en modo OWIN. • Usa inyección de dependencias • Evita devolver datos desde MVC5. Usa WebApi. De MVC5 a MVC Core #NETCore2017 27 (CONSEJOS BÁSICOS PARA AYUDARTE A DAR EL SALTO)
  • 28. • Sustituye Razor Helpers por Tag Helpers • Sustituye acciones hijas por View Components • Elimina [FromUri] en ApiControllers y verifica los bindings • Y por supuesto: Valora si vale la pena migrar. ¡Recuerda todo lo que no es realmente MVC Core pero sí ASP.NET Core! De MVC5 a MVC Core #NETCore2017 28 (CONSEJOS BÁSICOS PARA AYUDARTE A DAR EL SALTO)
  • 30. www.plainconcepts.com MADRID Paseo de la Castellana 163, 10º 28046 Madrid. España T. (+34) 91 5346 836 BILBAO Nervión 3 , 6º 48001 Bilbao. España T. (+34) 94 6008 168 BARCELONA Av. Josep Tarradellas 10, 6º 1ª 08029 Barcelona. España T. (+34) 93 3607 114 SEVILLA Avenida de la innovación s/n Edificio Renta Sevilla, 3º A 41020 Sevilla. España DUBAI Dubai Internet City. Building 1 73030 Dubai. EAU T. (+971) 4 551 6653 LONDON Impact Hub Kings Cross 24B York Way, N1 9AB London. UK SEATTLE 1511, Third Ave Seattle WA 98101. USA T. (+1) 206 708 1285