2010-02-25 2 views
3

Je suis en train de planifier un service Web, qui sera écrit en C++. L'objectif est de pouvoir sélectionner plus ou moins n'importe quel serveur web pour piloter le service. Pour que cela devienne vrai, je dois évidemment choisir une interface standardisée entre les serveurs web et les applications.Quelle interface serveur web choisir?

méthodes bien connues que je l'ai entendu parler sont:

  • CGI
  • FastCGI
  • WSGI

Maintenant, comme je l'ai absolument aucune expérience sur l'utilisation de ces interfaces, je Je ne sais pas vraiment quoi choisir. J'ai quelques exigences cependant.

  • doit être raisonnablement rapide (ce que j'ai entendu parler, ces règles à peu près sur CGI)
  • devrait être facilement utilisable dans un pur C/C++ environnement (par exemple, il devrait y avoir des bibliothèques disponibles)
  • doit fournir un soutien pour le protocole HTTP 1.1 (je sais pas si cela importe)

Merci pour toutes suggestions :)

Répondre

5

WSGI est pour les applications Python; Si votre langage est C++ ce n'est pas une option.

FCGI est un bon choix. Un FCGI peut être appelé en tant que CGI standard, pratique pour le débogage et les tests, puis exécuté en tant que FCGI en production. Les performances de CGI par rapport à FCGI dépendent beaucoup de ce que vous essayez de faire et de la quantité de trafic que vous attendez. Les tâches qui ont beaucoup de frais généraux de démarrage bénéficient le plus de FCGI; le contrôleur FCGI peut être configuré pour engendrer des processus supplémentaires pour gérer des charges lourdes. Pratiquement n'importe quel serveur Web exécutera CGI avec une configuration minimale; vous aurez probablement besoin d'un module supplémentaire pour exécuter FCGI mais cela dépend du serveur web.

http://en.wikipedia.org/wiki/FastCGI

+0

Bon à savoir, FCGI est maintenant en tête de liste: p – Milan

1

il n'y a rien "lent" à propos de CGI, il est tout simplement pas extensible. FCGI est plus évolutif mais vous ne pouvez pas facilement développer dans cet environnement car le processus est de longue durée et fait du débogage un cauchemar. HTTP/1.1 n'est pas un problème à ce niveau d'abstraction. Si vous êtes préoccupé par la vitesse et à ce stade sans aucun profilage ou test, vous ne devriez pas l'être, mais ces interfaces ne sont pas sur la vitesse, ils sont sur la compatibilité. La vitesse dépend du conteneur à partir duquel vous exécutez votre code.

1

Il ne devrait pas y avoir beaucoup de problèmes avec CGI/fastCGI. Si vous implémentez fastcgi, votre programme peut toujours fonctionner en tant que CGI normal. et la plupart des serveurs Web prennent en charge cgi/fastcgi.

Questions connexes