2008-09-26 6 views
2

Je suis en train de concevoir une application qui va se composer de 3-4 services qui fonctionnent comme des processus séparés et sont reliés par un IPC approprié. Le système va avoir une interface web et je veux utiliser n'importe quel serveur web.Existe-t-il des alternatives au CGI (et en ai-je vraiment besoin)?

L'interface Web doit être accessible sous une URL qui permet d'avoir d'autres URL sur le même serveur web en faisant des choses totalement différentes. Je prévois d'utiliser le chemin en dessous de cette URL pour spécifier ce que l'interface Web doit faire. Il a des installations pour l'utilisation par d'autres applications sur le net et pour les humains d'interagir avec un navigateur.

Off le brassard, je travaille comme suit:

  • faire le serveur Web feu un processus de CGI pour chaque demande qu'il reçoit (comme SetHandler dans Apache)
  • laisser le CGI se connecter à l'IPC
  • obtenir ce qu'il nous a besoin des services de back-end
  • laisser le HTML/XML de retour CGI et quel que soit l'état HTTP basé sur les réponses des services

Maintenant, ce que je veux vraiment, c'est d'éviter les deux premières étapes, ou si je ne peux pas, éviter la seconde, parce que j'ai peur de gaspiller de la performance sur un overhead inutile (les demandes venant d'autres applications être fréquent). PHP, par exemple, peut ouvrir des connexions persistantes à une base de données MySQL qui survit à l'exécution du script et n'a pas besoin d'être recréée la prochaine fois, bien que je ne sache pas comment ils le font réellement. Aussi, si je comprends bien, les modules Apache sont chargés une fois au démarrage du serveur, ce qui pourrait supprimer la première étape, mais me lierait à Apache. Alors, quels sont les bons moyens de connecter un gestionnaire pour des URL spécifiques dans différents serveurs Web? Je ne veux pas gérer le HTTP, sinon je pourrais juste utiliser une configuration de proxy sur un second serveur, mais cela semble être réinventer la roue. Si vous croyez, CGI va bien et a des exemples où il traite un grand nombre de demandes d'une structure similaire, s'il vous plaît faites le moi savoir.

Répondre

4

OK, j'ai oublié cela précédemment. L'explication de ma question ici m'a amené dessus:

Au lieu de créer un nouveau processus pour chaque requête, FastCGI peut utiliser un seul processus persistant qui gère de nombreuses requêtes au cours de sa durée de vie. - Wikipedia: FastCGI

3

Même sous des charges modérées, CGI est une bête assez non scalable. FastCGI est une option, mais vous trouverez probablement aussi un paquetage mod_XXXX où XXXX est le nom de votre langue. Il y a un mod pour ruby, perl et python par exemple et probablement un peu d'autres.