Download - ASP.NET 5 & MVC 6 (RC1)
![Page 1: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/1.jpg)
ASP.NET 5 & MVC 6Release Candidate 1
![Page 2: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/2.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/3.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/4.jpg)
El ContextoDe dónde venimos, a dónde vamos
![Page 5: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/5.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/6.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/7.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/8.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/9.jpg)
ASP.NET 5 RC1Principales novedades
![Page 10: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/10.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/11.jpg)
ASP.NET 5 & MVC 6 RC1
Demo: Estructura del proyecto
![Page 12: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/12.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/13.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/14.jpg)
ASP.NET 5 & MVC 6 RC1
Demo: middleware “Hello world!”
![Page 15: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/15.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/16.jpg)
ASP.NET 5 & MVC 6 RC1
Demo: middlewares
![Page 17: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/17.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/18.jpg)
MVC 6 RC1Principales novedades
![Page 19: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/19.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/20.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/21.jpg)
ASP.NET 5 & MVC 6 RC1
Demo Dependency injection
![Page 22: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/22.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/23.jpg)
ASP.NET 5 & MVC 6 RC1
Demo View component
![Page 24: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/24.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/25.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/26.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/27.jpg)
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)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/28.jpg)
ASP.NET 5 & MVC 6 RC1
![Page 29: ASP.NET 5 & MVC 6 (RC1)](https://reader034.vdocument.in/reader034/viewer/2022050613/5880925e1a28ab9d738b499f/html5/thumbnails/29.jpg)
ASP.NET 5 & MVC 6 RC1
That’s all, folks!
http://wallpapercave.com/w/LCTg3vr