Nouvelles fonctionnalités et améliorations de .Net Framework 4.5

Microsoft .Net Framework a beaucoup évolué ces dernières années. De nouvelles fonctionnalités et améliorations ont été introduites en abondance pour l'optimiser et le rendre rapide, sécurisé, plus stable et performant. Dans cet article, je voudrais présenter une vue d'ensemble des améliorations significatives de .Net Framework 4.5.x.

Les redoutées exceptions Out of Memory

C'est une erreur redoutée et peut bien devenir un cauchemar pour vous. Les exceptions de mémoire insuffisante peuvent mettre fin au flux de contrôle de votre application même si vous disposez d'une mémoire physique suffisante. Est-ce que vous plaisantez? En aucune façon! Laissez-moi vous expliquer pourquoi cela peut se produire et comment ce problème a été résolu dans .Net Framework 4.5.

Les objets créés par l'environnement géré sont stockés dans le tas. Au fil du temps, le tas peut devenir fragmenté en raison de la création et de la suppression d'objets. La fragmentation fait référence aux trous de mémoire (mémoire libre) qui sont dispersés. Dans un tel cas, vous observerez souvent des exceptions de mémoire insuffisante si votre application utilise une grande quantité de mémoire et parce que le moteur d'exécution serait incapable d'allouer de l'espace quand et si nécessaire, même s'il y a de l'espace disponible.

Cela semble bizarre? Eh bien, la somme des trous de mémoire peut suffire pour cette requête, mais comme ces trous de mémoire sont dispersés, le runtime ne peut pas les utiliser.

Compaction de tas de gros objets à la demande

Le compactage du tas d'objets volumineux à la demande a été récemment introduit pour compacter le tas et éliminer la fragmentation du tas. Le compactage implique de compacter tous ces trous de mémoire dispersés en un seul bloc. Cette fonctionnalité est disponible (à la demande uniquement) à partir de .Net Framework 4.5.1 pour atténuer les problèmes d'exception de mémoire insuffisante. Pour activer cette fonctionnalité, vous devez définir la propriété LargeObjectHeapCompactionMode.

Incidemment, cette propriété peut avoir l'une des deux valeurs suivantes: Default et CompactOnce. Le premier, s'il était défini, ignorerait le compactage du tas d'objets volumineux pendant un cycle GC. Si vous utilisez ce dernier, le tas d'objets volumineux sera compacté au cours du cycle suivant.

Prise en charge de la résilience de connexion ADO.Net

Vous n'avez plus besoin d'écrire du code pour implémenter la résilience de connexion afin d'établir des connexions inactives ou interrompues. .Net Framework 4.5.1 est livré avec cette fonctionnalité intégrée pour recréer les connexions interrompues à la base de données.

Temps de démarrage amélioré: optimisation du profil

L'optimisation de profil est une fonctionnalité qui a été introduite dans .Net Framework 4.5 qui minimise le temps de démarrage de l'application. Comment cela marche-t-il? Un profil est un fichier qui contient les méthodes dont l'application aurait besoin au moment de son démarrage. Lorsque l'application démarre, le Just in Time Compiler (JIT) s'exécute dans un thread d'arrière-plan et sur plusieurs processeurs pour générer du code natif à partir du code IL.

Améliorations du nettoyage de la mémoire: Server GC introduit

L'environnement géré de .Net utilise le garbage collection pour nettoyer les objets inutilisés ou non référencés - objets qui ne sont plus nécessaires. Dans les versions antérieures de .Net Framework, le GC suspendait les threads de l'application lorsqu'il était occupé à nettoyer la mémoire. Il s'agissait d'un goulot d'étranglement majeur en termes de performances car votre application devait attendre que le GC ait terminé son travail.

Avec .Net Framework 4.5, ce n'est plus un problème; Le serveur GC a été récemment introduit pour faciliter le nettoyage des objets de deuxième génération à l'aide d'un thread d'arrière-plan et, par conséquent, minimiser la charge sur le thread GC principal car les threads d'application sont beaucoup moins fréquemment suspendus. Avec .Net Framework 4.5, le garbage collection en arrière-plan est pris en charge dans le GC de serveur et de poste de travail. Le garbage collection simultané est également pris en charge maintenant; un thread dédié effectue le garbage collection lorsque cela est nécessaire.

Améliorations notables de .Net Framework 4.5.2

Microsoft a récemment publié .Net Framework 4.5.2. La sortie a été annoncée par Microsoft dans le blog .Net Framework. Voici le lien: //blogs.msdn.com/b/dotnet/archive/2014/05/05/announcing-the-net-framework-4-5-2-release.aspx

Outre les améliorations apportées au profilage et au débogage, il existe des améliorations notables dans ASP.Net dans .Net Framework 4.5.2. Vous pouvez désormais utiliser les méthodes HostingEnvironment.QueueBackgroundWorkItem pour planifier de petites tâches d'arrière-plan de manière asynchrone. Pour inspecter et modifier les en-têtes de réponse et les codes de réponse, vous pouvez utiliser les méthodes HttpResponse.AddOnSendingHeaders et HttpResponseBase.AddOnSendingHeaders. Vous pouvez consulter cet article MSDN pour en savoir plus: //msdn.microsoft.com/en-us/library/ms171868%28v=vs.110%29.aspx

Que se passe-t-il ensuite?

Microsoft a publié une version préliminaire de .Net Framework 4.6 en novembre dernier. Vous pouvez télécharger une copie de .Net Framework 4.6 à partir d'ici: //www.microsoft.com/en-us/download/details.aspx?id=44928

Le géant du logiciel a également annoncé qu'il révoquerait sa prise en charge des versions 4.x à 4.5.1 de .Net Framework après janvier 2016. Pour en savoir plus, cliquez ici: //blogs.msdn.com/b/dotnet/archive/2014/08 /07/move-to-the-net-framework-4-5-2.aspx