6 votes

Conception d'une interface web pour un système embarqué

OS : Linux.

J'essaie de trouver des solutions pour mettre en place une interface web pour mon système embarqué. Actuellement, il y a un shell (basé sur du texte) et un petit ensemble de commandes est implémenté pour interroger l'appareil.

Je suis novice en matière de développement web, mes questions sont les suivantes :

  1. Quel serveur web dois-je utiliser ? (J'ai installé apache sur ma configuration de développement et j'ai essayé d'utiliser CGI pour récupérer quelques pages, mais il semble que ce ne soit pas le bon choix pour les systèmes embarqués).

  2. En supposant que j'utilise une CGI, quelle stratégie peut être utilisée pour transmettre des données entre la CGI et l'application principale ? J'avais l'intention de créer un thread dans l'application principale pour traiter la requête de CGI script. Ce thread appellerait des interfaces dans l'application principale, récupèrerait les données et les transmettrait à CGI.

9voto

fvu Points 21471

Nous utilisons Lighttpd sur nos systèmes embarqués, il est petit et très facile à intégrer. Il existe également des serveurs web spécialisés dotés de fonctions spécialement adaptées à l'intégration, tels que AppWeb qui, à mon avis, est également un très bon produit.

Pour la communication entre l'application principale et les CGI, vous pouvez utiliser des sockets ou des files de messages System V si elles sont disponibles sur votre plate-forme intégrée. L'avantage des files de messages SYSV est qu'elles sont très faciles à utiliser et à gérer, et que les messages qu'elles contiennent survivent aux redémarrages des applications, mais elles ont aussi quelques particularités (comme le fait qu'on ne peut pas y sélectionner()).

4voto

gsempe Points 2516

En tant que serveur web, un autre choix est thttpd . Je l'utilise avec succès dans un produit industriel.

Pour la communication entre CGI et l'application principale, les sockets sont le bon choix.

0voto

Michael O'Brien Points 261

Vous n'êtes pas obligé d'utiliser un serveur web, mais il existe de meilleurs choix qu'Apache pour les serveurs embarqués. Apache est conçu pour l'embarqué et est plus gros et plus lent.

Je ne recommanderais pas la CGI. Elle est lente à mettre en œuvre et lente à développer. Je peux parler pour Appweb dont je suis l'un des développeurs. Appweb a deux bons frameworks web :

  • Ejscript qui est un framework Javascript côté serveur pour Appweb
  • ESP qui est un cadre web MVC en langage C

ESP est extrêmement rapide et permet de lier facilement les contrôleurs aux URL. Ejscript est plus grand et dispose d'une bibliothèque de classes plus étendue. Les deux sont conçus pour être intégrés. Les deux sont bien meilleurs que CGI et s'exécutent plus de 20 fois plus vite que CGI.

0voto

MichaelWang Points 195

Je travaille sur LuCI, qui est une CGI légère pour les appareils embarqués. En fait, c'est pour openwrt qui est un projet open source de routeur sans fil.

Le serveur est uhttpd , léger et puissant.

Le script CGI est Lua dont l'interpréteur ne dépasse pas 10k, délicat, non ? Et il est développé par C et peut communiquer avec C, puissant.

Voici donc ce que je propose.

0voto

user2826084 Points 415

Nous utilisons JUCI avec openwrt. Il est écrit en javascript qui tourne sur le navigateur du client et communique avec le serveur web via l'api json rest. Le backend peut être implémenté dans n'importe quel langage, mais nous utilisons des composants réutilisables écrits en C qui se branchent sur le bus système (ubus). Cela signifie que les services pertinents exposent leurs fonctionnalités à travers l'ubus qui peut être utilisé à la fois par le client et par l'api rest. C'est en fait assez agréable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X