2009-08-29 5 views
0

Je cherchais un moyen d'optimiser la vitesse dans mon application Web. Entré à travers une application intéressante appelée CSP. Avez-vous déjà entendu parler d'eux? Ils prétendent que vous pouvez programmer une application web en C++. Est-ce que ça vaut le coup?Avez-vous entendu parler de CSE Server Pages?

http://www.micronovae.com/CSP.html

+0

À quels types de problèmes de vitesse es-tu confronté? – jonnii

+0

Aucun vraiment .. Im juste expérimenter avec des choses différentes. Aimeriez-vous savoir s'il est possible de faire tourner un site aussi grand que digg.com sur un ordinateur portable 733MHZ. – user161433

+0

** @ luke101: ** Une question qui n'est guère plus qu'un lien vers un produit commercial sent un peu de viande transformée, même si vous êtes complètement sérieux. Quelque chose d'un peu plus général ---- dire demander après frameworks c et C++ web - aurait pu être * les deux * plus approprié, et plus susceptible de vous obtenir ce que vous recherchez. – dmckee

Répondre

3

... Est-ce que ça vaut le coup?

Cela dépend de ce que vous essayez de faire. La plupart des applications Web sont construites avec peu ou pas de considération pour les performances. La majorité des pages n'ont pas besoin de CGI du tout. L'utilisation d'une base de données et d'un code pour produire/modifier la page est logique, mais diffuser des pages aux clients en générant chaque fois n'est pas optimal. Comme indiqué par d'autres, la création de la conception, de la mise en page, du contenu, de l'infrastructure et du maintien de l'exécution prend généralement le pas sur la vitesse de génération de la page. Les méthodes actuelles utilisées pour les performances sont la mise en cache inversée, la mise en cache latérale, l'équilibrage de charge, le clustering, etc. Le système web est alimenté par un framework standard (java, php, python, ruby, perl, etc.) rencontré en répartissant la charge sur plusieurs boîtes et la mise en cache. Tout CGI, même C++, sera plus lent que les fichiers statiques servis par un serveur statique optimisé (ex: nginx) ou des fichiers statiques servis depuis la mémoire à l'aide d'un cache inversé (ex vernis).Cela étant dit, la plupart des gens hésitent à utiliser un langage de niveau inférieur pour le service Web en raison du manque de connaissances dans les langues de niveau inférieur et de la masse de code et de cadres disponibles dans les langages de script. Ayant travaillé sur des projets où la direction a dicté qu'aucun code source libre ne devait être utilisé, je ne suis pas d'accord que cela prend plus de temps à développer en utilisant des langages de niveau inférieur. Si vous avez écrit "tout" le code en PHP, cela vous prendra aussi longtemps mais la plupart ne le font pas. La plupart des gens utilisent le code des autres et prétendent que c'est plus rapide que d'écrire tout votre propre code dans une langue de niveau inférieur.

Les applications Web sont généralement très simplistes et au fil du temps, vous (ou votre entreprise) développerez un ensemble de bibliothèques pour faire des routines Web standard. Une fois écrite, une page Web CGI peut être construite aussi rapidement en C ou C++ que dans n'importe quel langage de script. Mais si vous avez besoin d'un fichier json importé dans votre sortie AJAX, vous trouverez probablement une certaine quantité de code de démarrage dans un langage de script plutôt qu'un langage de niveau inférieur.

Les applications web sont-elles construites avec C et C++? Absolument. Beaucoup de ces serveurs publicitaires "diaboliques" sont codés en C pour la performance. De nombreuses «applications» basées sur le Web sont construites en utilisant C ou C++, comme la console virtuelle basée sur le Web de VMware.

Si vous recherchez des performances supérieures, pensez à votre application Web en deux applications distinctes. L'un est un gestionnaire de contenu et de la page. L'autre est le cadre de service. Les pages entières et les fragments de page peuvent être pré-générés ou générés à la demande et servis de fichiers statiques, augmentant ainsi les performances bien au-delà de tout changement dans le langage de programmation. Même si une page ne dure que deux requêtes, il peut y avoir une différence de charge et de vitesse de 100 à 1. Traiter les sessions, l'authentification et l'autorisation devient la partie délicate. Comment découpler des sessions de pages et maintenir la sécurité. Cela est souvent fait en utilisant des modules basés sur C dans le serveur Web. La même chose est faite pour le décryptage SSL, la compression GZIP, le contrôle de flux, etc.

Si vous écrivez un serveur de jeu basé sur le Web ou une application web complexe, alors commencez par construire une bibliothèque C ou C++. Si vous souhaitez accélérer un blog, apprenez et utilisez des techniques de mise en cluster et de mise en cache.

+0

Wow ... très bien dit. – user161433

+0

Très bien dit ... à certains moments c'est juste à propos de fans c qui accueillent leur drapeau sur la dernière frontière ... – amar

2

C'est vraiment rien de nouveau. Tout comme CGI .... vous exécutez une application qui peut être écrite dans pratiquement n'importe quel langage qui se connecte à un pipeline HTTP.

0

J'ai écrit récemment un site Web en utilisant C, en utilisant libcgic. Cela a fonctionné, et était probablement assez rapide, mais c'était difficile à maintenir parce qu'il n'était pas écrit dans un langage très convivial. Pour presque toutes les utilisations, la maintenabilité du code fourni par un langage de script l'emporte de loin sur le léger avantage de l'utilisation d'un langage comme C ou C++. Si une fonction particulière nécessitait une optimisation, vous pourriez coller du C++ à un langage de script plus normal pour cette partie seulement.

4

Vous pouvez programmer votre site Web dans l'assemblage si vous le souhaitez. Le point est que la langue n'est généralement pas le point de ralentissement, c'est votre conception qui compte lors de la mise à l'échelle d'un site Web.

L'heure d'exécution du code n'est pas vraiment pertinente pour traiter des demandes de retour ou simplement pour sortir du code HTML; cela peut être pertinent en fonction du type d'analyse de données que vous devez effectuer, mais dans ce cas, vous l'appelez simplement via la langue que vous choisissez.

Nous vous conseillons de choisir un framework prenant en charge la distribution sur les serveurs et de concevoir votre application (et votre base de données) pour y remédier. C'est ainsi que vous obtiendrez de réels avantages.

+0

Je suis d'accord. La conception de l'application, la base de données et l'optimisation HTTP sont souvent négligées et plus importantes que «la langue * x * est assez rapide». –

+0

Quels livres recommanderiez-vous pour appliquer une bonne conception de programme? – user161433

+0

luke101: Je ne saurais pas, je ne lis pas vraiment les livres :) –

0

Vous pouvez également considérer ATL Server (si votre plate-forme est Windows). C'est un framework web C++ couvrant les applications web (et plus) que Microsoft a proposé puis abandonné le support pour. Mais ils sortent ce qu'ils avaient sous licence pas tout à fait open source (MS-LPL, ce qui limite l'utilisation uniquement à Windows):

Je n'ai aucune expérience avec elle, mais Si je devais faire une application web en C++, je regarderais.

1

Si vous avez besoin de la vitesse de C++ dans une application Web, il est TOUJOURS plus logique de créer le frontal en utilisant un langage Web commun et d'avoir cette interface avec l'application C++.

Questions connexes