04 janvier 2023

WebAssembly et Blazor : le couple gagnant pour développer des applications multi-devices

Qu'est-ce que WebAssembly ou WASM ?

Si on regarde de près l’évolution du web depuis ses débuts, il peut sembler qu’on ait changé de dimension. En effet, comparer IE 5.5 et Chrome 108, c’est comme comparer une Ford T avec la dernière Audi à moteur V8 ! Et pourtant, ces deux voitures évoluent grâce à un moteur à explosion et la modernité de l’Audi réside dans l’optimisation des technologies au cours du siècle passé. Mais on parle toujours de pistons qui coulissent dans un cylindre, mus par une explosion....

Il en va de même pour le Web. IE 5.5 / chrome 108 : même technologie de base. Un client, un serveur, le protocole http qui véhicule du texte est réinterprété par les acteurs de cet échange. 

Pourtant, en 2015, une vraie mutation technologique a vu le jour : WebAssembly (nom de code WASM). L’objectif est simple : exécuter du langage machine au sein du navigateur. 

Il ne s’agit pas là d’un énième framework JS, à l’instar de Vue.js ou d’Angular. Il s’agit bien d’un standard nouveau, spécifié par le W3C et qui permet d’écrire des applications puissantes, compilées en langage machine, s’exécutant sur le navigateur. 

Ces applications peuvent être écrites en c#, en C++ ou en python, en Rust ou en Go, le code est compilé et envoyé au navigateur. 

Quel est l’intérêt réel de WebAssembly ?

C’est d’abord une question évidente de performance. A l’instar d’une application de bureau traditionnelle, tout ou partie de l’algorithmie métier peut être déportée sur le poste client, soulageant ainsi grandement la charge serveur et permettant des économies d’infrastructure. Ce benchmark très complet observe des gains de performance allant jusqu’à un facteur 16 par rapport à V8.

Pour autant, WASM n’a pas pour but d’évincer Javascript. En effet, en fonctionnant sur un navigateur, WASM tire parti de la richesse et de la facilité de mise en œuvre de HTML et CSS. WebAssembly ne permettant pas l’interaction avec le dom, il existe de nombreuses passerelles entre WASM et Javascript afin de mettre en œuvre des interfaces fluides et performantes. 

Evidemment, les temps de chargement initiaux de l’application sont un peu plus longs. Il faut en effet charger toutes les assembly avant de pouvoir les exécuter. La notion de cache revêt donc toute son importance. D’ailleurs, WASM propose de nombreuses solutions afin de gérer les données locales, notamment au moyen d’indexedDB.

Les développeurs, eux, restent sur leur aire de jeu habituelle. Ils peuvent réutiliser leurs bibliothèques favorites et mettre en œuvre des architectures solides afin de produire des applications complexes.  

Les éditeurs de n’y sont pas trompés. Figma et Lightroom sont développés en WASM pour leurs versions en ligne. La logique d’édition des images se trouve implémentée sur le navigateur. WebAssembly fait également réfléchir les éditeurs de jeux vidéo qui peuvent désormais utiliser des solutions telles que Unity directement sur le navigateur. Les perspectives sont énormes ! En mars 2019, Solomon Hykes, le créateur de Docker, avait déclaré sur Twitter : « Si WASM avait existé en 2008, nous n’aurions pas eu besoin de créer Docker, c’est dire à quel point c’est important ».

Goweb choisit Blazor, le framework WebAssembly de Microsoft

Dans la galaxie Microsoft, l’outil qui permet d’accéder à WASM est Blazor. Ce framework offre aux développeurs .NET un environnement complet et homogène afin de compiler du code en WASM. 

Développer des applications complexes et puissantes et les faire tourner sur un navigateur, c’est déjà la promesse de pouvoir déployer des solutions sur tous les supports, ou presque. Les devices mobiles restent spécifiques et présentent un grand nombre de particularités.

En 2022, en complément de Blazor, Microsoft sort MAUI (Interface Utilisateur d’Application Multiplateforme). La promesse est simple : faire tourner le même code sur TOUS les devices ! Et la bonne nouvelle réside dans le fait que MAUI intègre Blazor. Par conséquent, avec Blazor et MAUI, il est possible de faire tourner des applications complexes, puissantes, qui prennent en charge le offline sur Androïd,  MacOs, Linux et Windows. Et ce sur n’importe quel navigateur, avec le même code. Blazor est donc idéal pour le développement mobile. Il est aussi très facile de transformer une application existante en PWA (Progressive Web App).

Goweb s’engage sur la voie du développement WASM avec Blazor et MAUI. Fort de son expertise dans le développement d’interfaces et de son expérience dans le développement d’applications web métier, Goweb propose des solutions puissantes et scalables utilisables sur tous les supports.

Vous souhaitez en savoir plus sur WASM et Blazor ? Contactez-nous !