Nuevas funciones y mejoras en .Net Framework 4.5

Microsoft .Net Framework ha madurado mucho en los últimos años. Se han introducido en abundancia nuevas funciones y mejoras para optimizarlo y hacerlo más rápido, seguro, más estable y de alto rendimiento. En este artículo me gustaría presentar una vista panorámica de las mejoras significativas en .Net Framework 4.5.x.

Las temidas excepciones por falta de memoria

Este es un error terrible y puede convertirse en una pesadilla para usted. Las excepciones por falta de memoria pueden interrumpir el flujo de control de su aplicación incluso cuando tenga suficiente memoria física instalada. ¿Estás bromeando? ¡De ninguna manera! Permítanme explicar por qué puede ocurrir esto y cómo se ha abordado este problema en .Net Framework 4.5.

Los objetos creados por el entorno administrado se almacenan en un montón. Durante un período de tiempo, el montón puede fragmentarse debido a la creación y eliminación de objetos. La fragmentación se refiere a los agujeros de memoria (memoria libre) que están dispersos. En tal caso, a menudo observará las excepciones de memoria insuficiente si su aplicación usa una gran cantidad de memoria y porque el tiempo de ejecución sería incapaz de asignar espacio cuando y si fuera necesario, incluso si puede haber espacio disponible.

¿Suena raro? Bueno, la suma de los agujeros de memoria puede ser suficiente para esta solicitud, pero como estos agujeros de memoria están dispersos, el tiempo de ejecución no puede usarlos.

Compactación de la pila de objetos grandes a pedido

La compactación de montón de objetos grandes bajo demanda se ha introducido recientemente para compactar el montón y eliminar la fragmentación del montón. La compactación implica compactar todos estos agujeros de memoria dispersos en un bloque. Esta función está disponible (solo bajo demanda) en .Net Framework 4.5.1 para mitigar los problemas de excepción de memoria insuficiente. Para habilitar esta función, debe establecer la propiedad LargeObjectHeapCompactionMode.

Por cierto, esta propiedad puede tener uno de dos valores: Default y CompactOnce. El primero, si se establece, ignoraría la compactación del montón de objetos grandes durante un ciclo de GC. Si usa este último, el montón de objetos grandes se compactará durante el siguiente ciclo.

Compatibilidad con la resistencia de la conexión ADO.Net

Ya no es necesario escribir código para implementar la resistencia de la conexión para establecer conexiones inactivas o rotas. .Net Framework 4.5.1 viene con esta función incorporada para volver a crear conexiones rotas a la base de datos.

Tiempo de inicio mejorado: optimización del perfil

La optimización del perfil es una característica que se ha introducido en .Net Framework 4.5 que minimiza el tiempo de inicio de la aplicación. ¿Como funciona esto? Un perfil es un archivo que contiene los métodos que la aplicación necesitaría en el momento de iniciarse. Cuando se inicia la aplicación, el compilador Just in Time (JIT) se ejecuta en un subproceso en segundo plano y en varios procesadores para generar código nativo a partir del código IL.

Mejoras en la recolección de basura: se introdujo Server GC

El entorno administrado de .Net utiliza la recolección de basura para limpiar objetos no utilizados o sin referencia, objetos que ya no son necesarios. En las versiones anteriores de .Net Framework, el GC suspendió los subprocesos de la aplicación cuando estaba ocupado limpiando la memoria. Este fue un cuello de botella importante en el rendimiento, ya que su aplicación tuvo que esperar hasta que el GC terminó su trabajo.

Con .Net Framework 4.5 esto ya no es un problema; El servidor GC se ha introducido recientemente para facilitar la limpieza de los objetos de generación dos utilizando un subproceso en segundo plano y, por lo tanto, minimizar la carga en el subproceso GC principal ya que los subprocesos de la aplicación se suspenden con mucha menos frecuencia. Con .Net Framework 4.5, la recolección de basura en segundo plano es compatible tanto en el servidor como en la estación de trabajo GC. La recolección de basura concurrente también es compatible ahora; un subproceso dedicado realiza la recolección de basura cuando es necesario.

Mejoras notables en .Net Framework 4.5.2

Microsoft lanzó recientemente .Net Framework 4.5.2. El lanzamiento fue anunciado por Microsoft en el blog .Net Framework. Aquí está el enlace: //blogs.msdn.com/b/dotnet/archive/2014/05/05/announcing-the-net-framework-4-5-2-release.aspx

Además de las mejoras en la creación de perfiles y la depuración, hay mejoras notables en ASP.Net en .Net Framework 4.5.2. Ahora puede usar los métodos HostingEnvironment.QueueBackgroundWorkItem para programar pequeñas tareas en segundo plano de forma asincrónica. Para inspeccionar y modificar los encabezados de respuesta y los códigos de respuesta, puede utilizar los métodos HttpResponse.AddOnSendingHeaders y HttpResponseBase.AddOnSendingHeaders. Puede consultar este artículo de MSDN para obtener más información: //msdn.microsoft.com/en-us/library/ms171868%28v=vs.110%29.aspx

¿Qué viene después?

Microsoft lanzó una versión preliminar de .Net Framework 4.6 en noviembre pasado. Puede descargar una copia de .Net Framework 4.6 desde aquí: //www.microsoft.com/en-us/download/details.aspx?id=44928

El gigante del software también anunció que revocaría su soporte para las versiones de .Net Framework 4.xa 4.5.1 después de enero de 2016. Lea más sobre esto aquí: //blogs.msdn.com/b/dotnet/archive/2014/08 /07/moving-to-the-net-framework-4-5-2.aspx