Tout d’abord à tous les PROGRAMMERS [Today = Programmers day :)]
Deuxièmement, je travaille sur un projet où les spécifications nécessitent l’utilisation d’un serveur en tant que serveur frontal et d’une application en arrière-plan. Le projet est un système avancé de maison intelligente . Le serveur gérera les commandes provenant du client via Internet (disons comme une télécommande depuis l’extérieur de la maison) et les enverra (via un canal de communication) à l’application (en prévoyant d’utiliser l’application JAVA) qui gérera la logique principale comme le contrôle du matériel (lumières …), la lecture d’un microphone (micro local) et l’access à une firebase database pour agir comme un système de reconnaissance vocale (hors ligne).
Maintenant, je suis encore en phase de planification et je ne sais pas quelles technologies sont les meilleures pour ce projet. Je pense utiliser Node.js ou Apache comme serveur et une application JAVA comme back-end et toute base de données SQL pour le SRS de l’application.
J’espère que cette illustration montre clairement comment le système fonctionne:
La question principale est:
Quelle est la meilleure façon de faire en sorte que l’application Java communique avec le serveur (le canal de communication [doit être bidirectionnel])?
et recommandez-vous un serveur spécifique autre que ceux mentionnés pour ce travail?
Ce qui m’a traversé l’esprit jusqu’à présent:
1- JSP et servlets (rendre le serveur aussi l’application). Mais je ne veux pas qu’un serveur gère les données hors connexion et je ne suis pas sûr que les servlets Java puissent accéder à l’interface matérielle. Je souhaite également que le serveur soit distinct des décisions critiques (couche différente pour des raisons de sécurité et ne sera pas utilisée aussi souvent que le système local).
2- canal de communication:
A- Un fichier partagé , mais c’est une mauvaise idée car je ne veux pas que l’application vérifie si le contenu du fichier a changé (commande reçue) ou pas de temps en temps (opérations excessives).
B- Une communication inter-processus à travers un port ( communication par socket ) semble la meilleure solution mais je ne sais pas comment cela se produirait en termes de coût de fonctionnement et d’erreurs de communication.
Système d’exploitation utilisé: Linux Raspbian
MODIFIER:
Je suis sûr que ZMQ + Apache est suffisant pour cette tâche, mais comment se compare-t-il à WebServices (comme SOAP)? WebServices serait-il une meilleure solution en termes d’implémentation standard et de sécurité?
Toutes les suggestions connexes sont les bienvenues, TQ
ZeroMQ est idéal pour les communications internes ou toute autre solution de communication similaire.
Pour votre cas particulier, je peux voir que ZeroMQ serait le meilleur ajustement.
Les raisons:
Considérations:
Quelques points supplémentaires à considérer :
Pourquoi Java et qu’en est-il de l’approche modulaire? Par exemple, si vous souhaitez étendre et étendre votre activité – append plus de capteurs dans les solutions de maison intelligente, une seule application géante nécessiterait de la changer, il est donc plus difficile de maintenir et de maintenir différents clients avec leurs propres besoins. Pensez de manière modulaire – certaines fonctionnalités essentielles pour les fonctionnalités hors ligne, mais de nombreux processus d’agrégation communiquent avec différents capteurs. Cela facilite la prise en charge de différentes configurations et environnements, tout en maintenant le système dans son ensemble en améliorant les composants indépendants.