ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7

36
#ReConnect2015 ASP.NET 5: MVC 6 y EF 7

Transcript of ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7

Page 1: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#ReConnect2015

ASP.NET 5: MVC 6 y EF 7

Page 2: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#ReConnect2015 // @azuges @MsCodersMadrid @MadPoint @madriddotnet

Organizan:

Page 3: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#ReConnect2015

Luis Ruiz PavónSoftware DeveloperPlainConcepts

http://geeks.ms/blogs/lruizluisruizpavon

Page 4: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#ReConnect2015

Todo ha cambiado.Nada ha cambiado.

Page 5: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#ReConnect2015

Ecosistema .NET

Page 6: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#ReConnect2015

ASP.NET 5

Page 7: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#ReConnect2015

Page 8: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#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

#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

#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

#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

#ReConnect2015

Demo time

Page 13: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#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

#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

#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

#ReConnect2015

Demo time

Page 17: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#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

#ReConnect2015

TagHelpers

Page 19: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#ReConnect2015

Demo time

Page 20: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#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

#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

#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

#ReConnect2015

Demo time

Page 24: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#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

#ReConnect2015

Ecosistema JavaScript

Page 26: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#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

#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

#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

#ReConnect2015

Demo time

Page 30: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

#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

#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

#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

#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

#ReConnect2015

Demo time

Page 35: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

Q&A?

#ReConnect2015

Page 36: ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7

Thank you!#ReConnect2015