Un nouveau WebBrowser embarqué dans WinForms

L’intégration d’un navigateur embarqué dans une application native Windows est un excellent moyen de faire de la migration progressive d’interface, en implémentant progressivement des écrans en web tout en les rendant utilisables dans une application Windows. Moyennant quelques efforts de programmation finalement assez légers, une authentification correcte peut être gérée, des évènements du DOM peuvent être récupérés et on arrive à un bon niveau d’interop.

Seulement, voila, le contrôle WinForms WebBrowser est assez vieux et on était loin d’avoir toute la puissance des navigateurs modernes… jusqu’à ce que Microsoft nous fasse la surprise d’intégrer Awesomium dans les contrôles WinForms de Visual Studio 2017 ! Et ça change tout ; pour preuve, un petit benchmark très simple en appelant http://lemonde.fr sur le WebBrowser (à gauche) et sur le navigateur embarqué Awesomium (à droite). Dans les deux cas, il n’y a qu’une ligne de code pour naviguer sur le contenu dans le code derrière le bouton respectif…

image001

A gauche, donc, 100 Mo de mémoire consommés pour arriver à un affichage lent et inutilisable, avec des erreurs de script à n’en plus finir. Bref, un résultat pourri. A droite, seulement 30 Mo de mémoire consommés et le résultat saute aux yeux comme bien meilleur.

Je dois avouer que je n’avais pas vu ce contrôle arriver dans ma veille ni sur aucun blog ni sur les annonces de Microsoft. C’était donc une surprise de tomber là-dessus en faisant un test de WinForms dans Visual Studio 2017, mais pour le coup, c’est vraiment une excellente surprise !

About JP Gouigoux

Jean-Philippe Gouigoux est Architecte Logiciel, MVP Connected Systems Developer. Il intervient régulièrement à l'Université de Bretagne Sud ainsi qu'à l'Agile Tour. Plus de détails sur la page "Curriculum Vitae" de ce blog.
This entry was posted in Uncategorized and tagged . Bookmark the permalink.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha Captcha Reload