reconnect 2015 - asp.net 5: mvc 6 y ef 7
Post on 08-Jan-2017
772 Views
Preview:
TRANSCRIPT
#ReConnect2015
ASP.NET 5: MVC 6 y EF 7
#ReConnect2015 // @azuges @MsCodersMadrid @MadPoint @madriddotnet
Organizan:
#ReConnect2015
Luis Ruiz PavónSoftware DeveloperPlainConcepts
http://geeks.ms/blogs/lruizluisruizpavon
#ReConnect2015
Todo ha cambiado.Nada ha cambiado.
#ReConnect2015
Ecosistema .NET
#ReConnect2015
ASP.NET 5
#ReConnect2015
#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
#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.
#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
#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!
#ReConnect2015
Demo time
#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.
#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
#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
#ReConnect2015
Demo time
#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
#ReConnect2015
TagHelpers
#ReConnect2015
Demo time
#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
#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();
#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
#ReConnect2015
Demo time
#ReConnect2015
Archivos estáticos• Cambia la raiz de la aplicación• Carpeta wwwroot
• Archivos estáticos no se sirven por defecto!• app.UseStaticFiles();
#ReConnect2015
Ecosistema JavaScript
#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.
#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
#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)
#ReConnect2015
Demo time
#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
#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.
#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
#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.
#ReConnect2015
Demo time
Q&A?
#ReConnect2015
Thank you!#ReConnect2015
top related