Que trae de nuevo el .NET Framework 4.5?

El siguiente articulo es una traduccion del articulo de Rob Sanders, acerca de sus anotaciones de lo observado en el TechEd-Australia, contiene los elementos nuevos que trae el .NET Framework 4.5.

Introduccion

Arrancamos… un poco de discusion acerca de la historia del .NET Framework, el cual tiene ahora 10 anios. El panorama es bastante breve, los presentadores estan bastante relajados y trabajan fluidamente entre ambos.

  • Cuales son los elementos clave que trae la version 4.5?
  • Mejoras en la funcionalidad asincrona
  • Windows 8 y Windows 8 RT
  • Nuget y paquetes distribuibles
  • Un framework mas ligero con los paquetes Nuget.
  • Rendimiento
  • Usuarios y retroalimentacion de la comunidad

Core Framework

Asynchronous/Waits [Demo]

Mostrando el uso de async/await dentro del contexto de una interface WPF. Se requiere mucho menos codigo que lo que tradicionalmente se requeria, en especial con relacion al UI Thread Marshalling.

Estamos revisando el ensamblado, naturalmente usando .NET Reflector. Cuando utilizamos async/await el compilador genera una gran cantidad de codigo por debajo. Tenga esto en mente cuando piense usar async/await. No es ideal para pequenas aplicaciones.

Las clases base del namespace IO ahora son compatibles con async. Stream/TextReader/Writer/etc. Cambiando de tema…

Identity

Revision de los usos historicos de Iidentity, Iprincipal, etc. Capacidades basicas en membership y roles, ausencia de acceso a mas informacion (por ejemplo el email)

El framework 4.5 se convierte en mas claim-aware. Nueva clase ClaimsIdentity (la cual implementa IIdentity) , la cual permitira el uso de claim-tokens en las aplicaciones. Hay varios metodos helpers que ayudan en la navegabilidad. Otras clases Principals heredan de esta clase. Compatibilidad hacia atras para aplicaciones antiguas.

Active Directory en el Serve 2012 ahora puede exportar claims-tokens. Windows Identity Foundation ahora esta integrado en e. Framework 4.5 (no mas instaladores separados) [N.T: Al fin]

Librerias Portables de Clases

Aunque estoy bastante seguro de que esta caracteristica fue introducida en el Fx .NET 4.0?. Ah, Este fue separado del framework base en su version 4.0

[Demo]

El soporte esta incluido en los proyectos de Visual Studio. Evita la necesidad de definiciones de pre-compilador.

[N.T.: http://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-ToolboxPortable-Class-Libraries ]

Otras cosas

  • Optimizaciones del Profile y Multicore JIT
  • Timeout para expresiones regulares (regex) (probablement no es una mala idea)
  • Nuevo namespace para el nuevo soporte de compresion zip, supongo que los problemas de licencias estan resueltos?
  • Referencias debiles – cambios de tipo en caso de que un objeto sea destruido (disposed)
  • Internacionalizacion (cultura) dentro de un app-domain (bueno por unas pocas razones)

Cosas web

  • Modelo de programacion HTTP (lease aplicaciones RESTful)
  • Soporte completo para enrutamiento (MVC?)
  • Negociacion del contenido
  • Composicion de consultas (QueryString)
  • Aplicaciones auto-hospedadas (self hosted)

Las operaciones CRUD pueden ser mapeadas a verbos HTTP (GET/POST/etc). Soporte de programacion HTTP mejorado en el Fx .NET 4.5. Se incluye negociacion de contenido, de manera nativa. Filtrado de contenido al vuelo usando WebAPI [Demo]

Mehesh esta mostrando las peticiones/respuestas HTTP en tiempo real. Estamos viendo el flujo de datos JSON en la respuesta. Ahora esta mostrando como la respuesta puede ser cambiada para retornar un XML basico. Funcionalidad incorporada. Referencia al Sr. Philip Beadle (famoso por DotNet-Nuke)

Agregando un controlador, agrega el codigo de manejo apropiado. Se necesita tener un manejador de excepciones, por lo demas todo esta en su lugar.

HTTP Client

La clase HttpClient puede ser usada para instanciar programaticamente un objeto cliente Http, bastante util para ejecutar peticiones get y evaluar respuestas, etc.

Web Sockets

La tecnica de Polling ha sido usada durante mucho tiempo como una aproximacion de busquedas. Se puede mejorar? Establecer una conexion con una llamada normal. Comunicacion bi-direccional Full-duplex, Soporte para proxies integrado, Soporte binario, UTF-8.

Soporte en IIS 8, ASP.NET 4.5, WinRT, WCF 4.5 sobre Windows 8 y Windows Server 2012.

[Demo – Aplicacion de un chat usando Web-Sockets]

El mensaje es enviado al servidor, el servidor hace un broadcast a los usuarios.

Un poco decepcionante verlo ejecutandose en una sola computadora y con solo dos usuarios. Momento de ver codigo.

El HttpHandler verifica la peticion, se enruta al handler si la peticon es una peticion web-socket. Me gustaria ver que esto se concretase un poco mas.

ASP.NET Web Forms

  • Controles de datos fuertemente tipados (finalmente!)
  • Soporte mejorado para async
  • Minificacion integrada de js/css
  • Controles de servidor actualizados para generar HTML5

MVC

  • Mejoras en Razor
  • Cambios al template por defecto
  • Async, async!
  • Soporte para dispositivos moviles mejorado.

Viendo un demo de ASP.NET . Enlace de datos (Data-bindig) con controles fuertemente tipeados, bye bye eval(). La demostracion muestra validacion, enrutamiento (ya no se observa la extension .aspx en el URL) e interpretacion mejorada del query string. Aun se registran rutas en una forma que no es novedosa para los programadores MVC.

WCF

  • Simple de configurar (finalmente!) Los valores por defecto ahora son mas sensibles
  • Los proxies que se generan, ahora definen metodos async por defecto!
  • Se pueden crear tareas (tasks) basadas en operaciones asincronas.
  • Web-Sockets (como se menciono previamente), se requiere un paquete Nuget.
  • Soporte para el protocolo UDP (datagramas!)
  • Un API de control mejor expuesto a travez de codigo.
  • El uso de la operacion "Configure"para recuperar en tiempo de ejecucion la configuracion definida. (N.T. genial!)
  • Soporte WCF para aplicaciones Windows 8.

[Demo – WCF y una aplicacion Windows 8] Nota: Usando Entity Framework (buenisimo)

Observar que los metodos sync y async son generados en los proxy cliente. Los metodos async no estaban habilitados por defecto en el pasado. Los clientes Windows 8, no soportan operaciones sync – solamente operaciones async (debido a las consideraciones de bloqueo de las UI Metro o como se llamen ahora). No se ven archivos de configuracion para las aplicaciones Windows 8. El demo falla auch!

WPF

  • Los controles Ribbon ahora estan integrados
  • Validacion asincrona
  • El enlace de datos (data-binding) ha cambiado
  • Enlace retrazado – delay binding (tal vez por async)
  • Enlace a propiedades estaticas
  • Extensioes de marcado (XAML) para eventos

[N.T. Me pregunto si todo lo de XAML tambien se aplica a Windows Phone]

WF

  • Expresiones C# soportadas
  • Servicios Workflow con el modelo Contract-First
  • Versionamiento de Workflow (finalmente integrado). Se carga correctamente el workflow con la actividad.
  • Mejoras en los disenadores (de nuevo… finalmente!)
  • Soporte de comentarios y navegacion mejorada.

Otras cosas interesantes (Parte 2)

MEF 2.0

Esto se acerca a un framework IoC para mocking e inyeccion de dependencia.

  • Soporte para abrir partes genericas
  • Registro basado en reglas y convenciones
  • Construccion de reglas para importar/exportar sin declaraciones/atributos.
  • Mejoras de ambito
  • Mejoras en el diagnostico.
  • Pensadas para aplicaciones Web y Metro

Pensamiento rapido: Nada en el compilador en tiempo de ejecucion (Roslyn?)

El TPL (Task Parallel Library)

El Task Parallel Library… se ve bastante bien:

  • Mejoras en el rendimiento
  • Nuevos metodos:
    • Run
    • Delay
    • WhenAny
    • WhenAll
    • FromResult
  • La clase Progess<T>

TPL Data Flow

Mirando a los sistemas reactivos – flujos de datos en memoria, controles basados en agentes. Nueva libreria .Net.

Esto es algo en lo que voy a estar bastante interesado en probar. Para tener mas informacion acerca de TPL data Flow, mantengase atento a la Tecnologia Sanders

  • Conjunto de bloques (primitivas)
  • Queue/buffer/Task
  • EG ActionBlock/TransformBlock/BufferBlock

Demo rapido del nuevo TPL data Flow. Estamos llegando al final brevemente.

Conclusion

No es una version menor, tiene un gran soporte para Windows 8, async y mejoras de rendimiento. Aqui finalizamos.

[N.T.]

El articulo original pueden encontrarlo aqui: 

http://www.sanderstechnology.com/2012/whats-new-in-net-4-5/11488/#.UFUQL42PXiu

En aras de mantener el sentido de la traduccion mantuve algunos terminos en su version en ingles, sepan por favor disculpar esta mezcla Smile

Mi granito de arena: Un inclusion esperada en el Framework 4.5 es Code Contracts, al fin podemos usarlo sin tener que hacer referencias externas.

Gracias por la paciencia de leer hasta aqui.

Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *