reconnect 2015 - asp.net 5: mvc 6 y ef 7
TRANSCRIPT
![Page 1: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/1.jpg)
#ReConnect2015
ASP.NET 5: MVC 6 y EF 7
![Page 2: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/2.jpg)
#ReConnect2015 // @azuges @MsCodersMadrid @MadPoint @madriddotnet
Organizan:
![Page 3: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/3.jpg)
#ReConnect2015
Luis Ruiz PavónSoftware DeveloperPlainConcepts
http://geeks.ms/blogs/lruizluisruizpavon
![Page 4: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/4.jpg)
#ReConnect2015
Todo ha cambiado.Nada ha cambiado.
![Page 5: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/5.jpg)
#ReConnect2015
Ecosistema .NET
![Page 6: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/6.jpg)
#ReConnect2015
ASP.NET 5
![Page 7: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/7.jpg)
#ReConnect2015
![Page 8: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/8.jpg)
#ReConnect2015
ASP.NET 5: Nuevo paradigma• Pipeline limpio por defecto• Añadimos lo que necesitamos: Middleware
• Inyección de dependencias integrada en el framework• Personalizamos la configuración de los servicios
![Page 9: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/9.jpg)
#ReConnect2015
Dot Net Version Manager – aka DNVM• ¿Qué es DNVM?
• Es una herramienta que nos va a permitir gestionar las diferentes versiones de los entornos de ejecución, versiones del Framework. Esta elección del entorno a ejecutar puede hacerse a nivel de proceso, usuario o maquina.• Se instala por defecto como un CMD o PS en %USERPROFILE%/.dnx de
usuario.
![Page 10: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/10.jpg)
#ReConnect2015
Dot Net Execution Environment – aka DNX• ¿Qué es DNX?• El SDK y el runtime para desarrollar aplicaciones multiplataforma
en .NET.• Diferentes versiones• .NET Full Framework• .NET Core
• OSS• Runtime y librerías modulares• Administrado por NUGET• Linux y OSX
• Mono• Linux y OSX
![Page 11: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/11.jpg)
#ReConnect2015
Dot Net Utilities – aka DNU• ¿Qué es DNU?• “Dot Net Environment Utilities”• Permite:• Administrar los paquetes de Nuget , instalar, restaurar etc• Empaquetar y publicar nuestra solución• Instalar y mantener comandos globales ( mas adelante lo veremos )• Listar dependencias• Y mucho mas… --help!
![Page 12: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/12.jpg)
#ReConnect2015
Demo time
![Page 13: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/13.jpg)
#ReConnect2015
Configuración• Sistema de configuración flexible• Sensible al concepto de entorno.• Archivos obligatorios y opcionales (.json, .ini, .xml)• Colecciones en memoria.• Argumentos de línea de comandos.• Variables de entorno.• User secret.
• Configurable como pipeline• Si la misma clave aparece en varios orígenes, la última gana.
![Page 14: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/14.jpg)
#ReConnect2015
Configuración• Agrupar las configuraciones por grupos lógicos• Clase POCO que representa el grupo• Registrarla como servicio
// Configuration typed objectsservices.AddOptions();services.Configure<Settings>(Configuration.GetSection("Settings"));
Startup.cs
public class Settings{ public string ExternalApiBaseUrl { get; set; } public string SuperSecret { get; set; }}
Settings.cs{ "Settings": { "ExternalApiBaseUrl": "https://example.com", "SuperSecret": “No definirlo aquí!" }}
Appconfig.json
![Page 15: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/15.jpg)
#ReConnect2015
https://www.humankode.com/security/how-a-bug-in-visual-studio-2015-exposed-my-source-code-on-github-and-cost-me-6500-in-a-few-hours
![Page 16: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/16.jpg)
#ReConnect2015
Demo time
![Page 17: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/17.jpg)
#ReConnect2015
Novedades en vistas• TagHelpers• Modifican el ouput• Custom TagHelpers• Sin output
• ViewComponentes• Reemplazan a las ChildActions (Html.Action)
• @inject y await en vistas razor
![Page 18: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/18.jpg)
#ReConnect2015
TagHelpers
![Page 19: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/19.jpg)
#ReConnect2015
Demo time
![Page 20: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/20.jpg)
#ReConnect2015
Localización• Pasa del web.config a un middleware especializado• app.UseRequestLocalization();
• ¿De dónde?1. El query string (?culture=es-ES&ui-culture=es-ES)2. Una cookie (ASPNET_CULTURE)3. De la cabecera Accept-Language4. De la propiedad DefaultRequestCulture de la clase
RequestLocalizationOptions5. De la cultura del hilo actual
![Page 21: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/21.jpg)
#ReConnect2015
Localización• A nivel de Framework (Microsoft.AspNet.Localization)• IStringLocalizer y IStringLocalizerFactory• services.AddLocalization();• La implementación por defecto usa .resx
• En MVC 6• IHtmlLocalizer y IViewLocalizer
services.AddMvc().AddViewLocalization(x => x.ResourcesPath = "").AddDataAnnotationsLocalization();
![Page 22: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/22.jpg)
#ReConnect2015
Localización• IViewLocationExpander• Mecanismo para personalizar dónde se buscan las vistas
• LanguageViewLocationExpander• Añadido por defecto al configurar localización de vistas en MVC • Escenarios:
• Views/Controller/Action.[culture]• Views/Controller/[culture]/Action
![Page 23: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/23.jpg)
#ReConnect2015
Demo time
![Page 24: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/24.jpg)
#ReConnect2015
Archivos estáticos• Cambia la raiz de la aplicación• Carpeta wwwroot
• Archivos estáticos no se sirven por defecto!• app.UseStaticFiles();
![Page 25: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/25.jpg)
#ReConnect2015
Ecosistema JavaScript
![Page 26: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/26.jpg)
#ReConnect2015
Bower• Gestor de paquetes para librerías de cliente.• Gran aceptación en el mundo del desarrollo web• Gran cantidad de librerías actualizadas.
![Page 27: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/27.jpg)
#ReConnect2015
Gulp• Reemplaza al Bundling de Mvc.• Automatización de tareas de desarrollo y despliegue• Análisis de código (linting) de javascript y css• Transformaciones de javascript, css o imágenes• Minimizado y concatenado de archivos• Automatización de ejecución de test• …
• Uso de herramientas multi-entorno y multi-plataforma• Mismas tareas con diferentes editores
![Page 28: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/28.jpg)
#ReConnect2015
Integración con Visual Studio• Task Runner Explorer• Ejecución de tareas de gulp y grunt en VS• Bindings
• Dependencias de Bower y Npm• Explorador de soluciones• Restauración de paquetes al guarder (bower.json y package.json)
![Page 29: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/29.jpg)
#ReConnect2015
Demo time
![Page 30: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/30.jpg)
#ReConnect2015
Servidores• Helios (in-process en IIS, ahora deprecado)• WebListener (HTTP.SYS based, solo en Windows)• Kestrel (basado en libuv, multiplataforma)
https://github.com/aspnet/benchmarks
![Page 31: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/31.jpg)
#ReConnect2015
Consideraciones para producciónKestrel a día de hoy se considera un servidor para desarrollo. Deberíamos tener en cuenta los siguientes consejos:• No expongas Kestrel directamente a internet, usa un servidor web que
delegue las peticiones a éste:• En Windows usa HttpPlatformHandler - UseIISPlatformHandler()• En Linux usar Nginx o Apache.
• Recuerda el principio de menor privilegio (don’t run as a root)• Tú aplicación corre como un proceso que debe ser lanzado, monitorizado y
debería continuar corriendo.
![Page 32: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/32.jpg)
#ReConnect2015
Entity Framework 7• Se registra como servicio• Los DbContext disponibles para inyección de dependencias.
• Diferentes proveedores• InMemory
• Herramientas de línea de comandos• Migraciones y actualizaciones de base de datos
![Page 33: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/33.jpg)
#ReConnect2015
Entity Framework 7• No disponible en la RC1
• Sproc mapping• Lazy loading• Complex/value types• Update model from database• Custom conventions• Non-relation providers
• Entonces, ¿Cuándo usar EF7?• Aplicaciones nuevas que no importen las limitaciones que hemos comentado antes y
donde no se requiere Full .NET• No migrar aplicaciones con EF6 a menos que se quieran usar las nueva caracterísiticas
de EF7.
![Page 34: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/34.jpg)
#ReConnect2015
Demo time
![Page 35: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/35.jpg)
Q&A?
#ReConnect2015
![Page 36: ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7](https://reader036.vdocuments.pub/reader036/viewer/2022081422/587122cd1a28abe4448b571d/html5/thumbnails/36.jpg)
Thank you!#ReConnect2015