Développement d’applications web et mobiles qui consomment des données en temps réel

Introduction

Lors de l’AzureCamp qui s’est déroulé hier (mardi 24 Juin 2014) chez Microsoft France, j’ai eu le plaisir d’animer, avec Stéphane Goudeau, une session concernant le développement d’applications qui utilisent des données en temps réel. La problématique du temps réel peut être géré de différentes manières, et surtout à l’aide de différentes technologies.

Stéphane et moi-même avons décidé de partager notre réflexion sur ce sujet au travers d’une série d’articles de blogs, que nous posterons sur nos blogs respectifs, à tour de rôle :

  • Développement d’applications web et mobiles qui consomment des données en temps réel 
  • Utilisation de SignalR pour implémenter un service Backend Cloud (Sécurité, CORS, Scalabilité, Hébergement)
  • Consommer un hub SignalR depuis une application web cliente
  • Consommer un hub SignalR depuis une application native (Windows / Windows Phone)
  • Utilisation de Socket.IO et Node.JS pour implémenter un service Backend Cloud (Sécurité, CORS, Scalabilité, Hébergement)
  • Consommation d’un service socket.io depuis une application web cliente 
  • Implémenter une infrastructure IOT (AMQP, Service Bus,…)

Pour illustrer ces différents scénarios, nous avons choisi de développer une application orientée “IoT” (Internet Of Things), totalement hébergée sur la plateforme Cloud Microsoft Azure.

Une application universelle Windows 8.1 se connecte à un capteur BlueTooth LE pour récupérer des données de température et d’humidité ambiante. Ces données sont envoyées dans Azure pour historisation (via Socket.IO, SignlaR ou Service Bus) et sont également redirigées en temps réel sur un frontal web développé en ASP.NET MVC 5.

Si la température ou l’humidité dépasse un certain seuil, le serveur utilisera Azure Notification Hub pour envoyer une notification push à une application universelle Windows Phone 8.1.

Le schéma ci-dessous “résume” assez bien l’architecture globale que nous avons imaginée :

image

Pas de panique, nous allons profiter de cette série d’articles pour détailler chaque brique de cette architecture et surtout, quelles sont les technologies que nous avons choisi d’utiliser pour la mettre en place, mais aussi leurs avantages et/ou inconvénients !

Retour sur la problématique de temps réel dans les applications modernes

Bien qu’il soit de plus en plus courant de développer des applications web ou mobiles qui exploitent des données en temps réel, les problématiques que cela peut entraîner sont nombreuses. En effet, ce type d’applications, souvent distribuées et multi-composants / multi-tiers sont très souvent consommatrices de ressources : la scalabilité, la haute disponibilité et la rapidité d’exécution sont donc au coeur de notre réflexion, sinon on perd l’intérêt du temps réel.

Parmi les technologies qu’il est possible d’utiliser pour faire de la communication temps réel entre un serveur et un (des) client(s), on peut citer SignalR et Socket.IO. Il se trouve que ces deux technologies sont très simple à utiliser et surtout à intégrer dans un environnement hébergé sur Microsoft Azure. Du coup, pourquoi s’en priver ? Smile

Prochain article ?

Le prochain article de la série traitera de l’implémentation d’un backend Cloud avec Microsoft SignalR, et sera posté sur le blog de Stéphane.

D’ici là, si la partie Bluetooth LE évoquée en introduction vous intéresse, je vous invite à lire cet article de Michaël.

Stay tuned !

A+

Julien Winking smile

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus