asp.net 5 & mvc 6 (rc1)

29
ASP.NET 5 & MVC 6 Release Candidate 1

Upload: jose-maria-aguilar

Post on 14-Apr-2017

2.246 views

Category:

Software


1 download

TRANSCRIPT

Page 1: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6Release Candidate 1

Page 2: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

José M. Aguilar• Microsoft MVP desde 2011• Desarrollador & consultor independiente• Autor y tutor de cursos online de MVC (CampusMVP)• Autor de “SignalR programming in Microsoft ASP.NET”

(Microsoft Press)

• Contacto:• Blog: www.variablenotfound.com• Twitter: @jmaguilar

Page 3: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Qué vamos a ver• Un poco de contexto• Lo nuevo de ASP.NET 5• Lo nuevo de MVC 6

Page 4: ASP.NET 5 & MVC 6 (RC1)

El ContextoDe dónde venimos, a dónde vamos

Page 5: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

¡Casi 15 años de ASP.NET!

Un poco de historia…

Page 6: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

ASP.NET Web stack hoySites

Web Forms Web Pages MVC

ServicesWeb API Signal R

ASP.NET 4.xSystem.Web, aka “el monolito”

.NET Framework 4.x

Windows

Page 7: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

¿Y si partimos de cero?• Modularidad Solo lo que usamos• Más productividad F5 en browser• Mejor aprovechamiento del servidor

• Más rápido (muy rápido!)• Reducción de memoria (90%)

• Cloud-ready by default• Configuración, sesión, cache, file system• Debugging/tracing/logging local&cloud

• Más control sobre la evolución• Paquetes Nuget para features y framework• Sin breaking changes por actualizaciones• Actualizaciones rápidas (zero-day fixes)

• Libertad de editores y herramientas:• Visual Studio, Sublime, Notepad, Code,

Editores en cloud…• Command line

• Integración con 3rd party tools (npm, bower, gulp…)

• Cross-platform• Windows, Linux & Mac• En desarrollo y explotación

• Open source con contribuciones Microsoft Open Source

Microsoft Mac & Linux

Page 8: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

ASP.NET 5 Web stackSites and services

MVC Web Pages

RealtimeSignalR

.NET Framework 4.x

Windows

.NET Core

Cross-platform (Windows, Linux, Mac)

ASP.NET 5

Page 9: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 RC1Principales novedades

Page 10: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Novedades principales• Actual: RC1. Licencia “go-live” • RTM (prev) 1er trimestre 2016• Estructura del proyecto:• Nuevos archivos y carpetas• R.I.P. Web.config & Global.asax• Project.json• Clase Startup• Referencias a paquetes Nuget

• Pipeline y middlewares• Inyección de dependencias• Configuración• Y mucho más:

logging, sesiones, cache, I18N, Kestrel/hosting, Antiforgery, file system, CORS, Webhooks, Identity, Node services, Web sockets, User secrets, command line tools…

Page 11: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Demo: Estructura del proyecto

Page 12: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Proceso de peticiones: pipeline y middlewares• Proceso de peticiones a través del pipeline de ASP.NET. • Pipeline = “tubería”

Request

Response

• Ascienden las peticiones• Descienden las respuestas

Page 13: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Pipeline y middlewares•Middleware = “filtro”

• Observan peticiones y respuestas• Pueden alterarlas• Dejan pasar (o no) las peticiones• Dejan pasar (o no) las respuestas• ¡El orden importa!

Request

Response

Middleware

Middleware

Middleware

Page 14: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Demo: middleware “Hello world!”

Page 15: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Pipeline y middlewares• Añadimos solo los middlewares que necesitamos• Aplicaciones reales varios middlewares• ASP.NET proporciona los más comunes

Similar a lo que teníamos en ASP.NET <= 4.x: sesiones, seguridad, diagnóstico & control de errores, globalización…

•Mecanismo extensible custom middlewares, comunidad

Page 16: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Demo: middlewares

Page 17: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

MyApplication

Error Handlingmiddleware

Authmiddleware

ASP.NET MVCframework

Static Filesmiddleware

Request

ResponseIIS Platform Handler

¿Dónde encajan los frameworks?

Los frameworks también añaden middlewares al pipeline: app.UseMvc();

Page 18: ASP.NET 5 & MVC 6 (RC1)

MVC 6 RC1Principales novedades

Page 19: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Novedades principales• Actual: RC1. Licencia “go-live” • RTM (prev) 1er trimestre 2016• Construido sobre ASP.NET 5

(sin dependencias a System.Web)• Los principios siguen intactos• Casi todo lo que sabemos nos vale• Principalmente compatible a nivel de

código

• Algunas cosas que desaparecen:• Framework Web API• Child actions• Web forms view engine• Bundles frameworks de frontend

• Características nuevas:• Derivadas de la nueva infraestructura:

• Inyección de dependencias, configuration, application start, logging…

• View components• Tag helpers• Y mucho más:

• POCO controllers, IActionResult, convenciones, filtros asíncronos, flush parciales, vistas asíncronas, object results…

Page 20: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Dependency injection en MVC• La “D” de los principios SOLID Desacoplar componentes• Por defecto se usa el dependency resolver de ASP.NET 5• Puede usar contenedores externos (Ninject, Autofac, Unity, StructureMap…)

• Uso:• Registramos dependencias en ConfigureServices() de Startup• Consumimos desde componentes instanciables por el framework:

• Controladores• Middlewares• Filtros• Vistas• …

Page 21: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Demo Dependency injection

Page 22: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

View components• Objetivo: facilitar la construcción de elementos de vista con lógica reutilizables• Escenarios de uso: widget de información del usuario, cesta de la compra,

últimas noticias, actividad reciente, etc.• Sustituyen a los helpers Action() y RenderAction() y las child actions• Mini-controlador especializado, con una única acción que retorna contenido• Implementación:

• La clase que hereda de ViewComponent (en lugar de Controller)• La vista que retorna (también puede ser JSON, un string…)• La invocación desde las vistas/layouts con @Component.Invoke /InvokeAsync

Page 23: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Demo View component

Page 24: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Tag helpers• Objetivo: vistas más sencillas de escribir y de leer• Pueden sustituir a los HTML helpers• Sintaxis declarativa:

• Procesado en servidor, antes de enviar el HTML al cliente• Permite:

• Crear nuevas etiquetas• “Potenciar” etiquetas existentes

• ASP.NET proporciona ~15 tag helpers

<a asp-action="about" asp-controller="home" asp-protocol="https"> Ir a About</a>

Page 25: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Tag helpers: ejemplosHTML Helpers (MVC <=5) Tag Helpers (MVC >= 6)@Html.ActionLink("Enlace", "Index", "Home")

<a asp-action="index" asp-controller=“home”> Enlace</a>

@Html.ActionLink("Edit", "edit", "products", new { id=Model.Id }, new { id="mylink", @class="productlink", style="font-weight: bold" } )

<a asp-controller="products" asp-action="edit" asp-route-id="@Model.Id" id="mylink" class="productlink" style="font-weight: bold">Edit</a>

@using (Html.BeginForm("Create", "Customer", FormMethod.Post,         new { id = "logoutForm", @class = "navbar-right" })){    @Html.AntiForgeryToken() @Html.LabelFor(model => model.Name) @Html.TextBoxFor(model => model.Name) ... <!– Resto del formulario }

<form asp-controller="Account" asp-action="LogOff" method="post" id="logoutForm" class="navbar-right">

<label asp-for="Name"></label> <input type="text" asp-for="Name"> ... <!– Formulario

</form>

¡No son los <asp:tag runat=“server”>

de Web Forms!

Page 26: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Demo tag helpers• Algunos tag helpers básicos:• <a>• <environment>• <link>• <script>• <cache>

• Tag helpers personalizados• Más ejemplos: https://github.com/dpaquette/TagHelperSamples

Page 27: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Próximos pasos• Instalar:

http://get.asp.net • Leer:

https://docs.asp.net/• Seguir de cerca:

http://github.com/aspnet

• Visitar mi blog http://www.variablenotfound.com

Page 28: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

Page 29: ASP.NET 5 & MVC 6 (RC1)

ASP.NET 5 & MVC 6 RC1

That’s all, folks!

http://wallpapercave.com/w/LCTg3vr