J'aimerais entrer dans le développement Web en utilisant C ++ comme "langage de script" côté serveur. Mon infrastructure de serveur étant * nix, le développement Web en C ++ sur Azure ne s'applique pas et C ++ / CLI ASP.NET ne s'applique pas non plus.
En dehors des applications CGI traditionnelles, le développement Web peut-il être réalisé en C ++?
web-development
c++
Scott Davies
la source
la source
,
are.
sont redirigés vers un socket.Réponses:
Absolument.
Il existe même plusieurs cadres pour les développer, notamment Wt , cppcms , CSP , etc. L'implémentation principale de FastCGI est en C et supporte directement plusieurs langages , dont le C ++.
Tout langage de programmation pouvant analyser des chaînes peut être utilisé dans CGI ou dans une servlet. Tout langage pouvant implémenter des liaisons avec des bibliothèques C peut également être utilisé pour développer des modules pour des serveurs compatibles ISAPI ou Apache.
Ce n'est pas particulièrement facile en C ++, et de bons moteurs de templates sont rares, mais cela peut être fait.
Bien sûr, la question de savoir s’il s’agit d’une bonne idée est un tout autre problème. :)
Remarque: les principaux sites Web tels qu'Amazon.com, eBay et Google utilisent le C ++ pour certaines parties de leur infrastructure. Sachez cependant que Google n'utilise le C ++ que pour les systèmes critiques en matière de vitesse et qu'Amazon.com n'est que relativement récemment sorti de Lisp (ce qui a provoqué la colère de certains de leurs cadres supérieurs :).
Facebook avait auparavant compilé PHP en C ++, mais leur compilateur HipHop (écrit en partie en C ++) a depuis été réaménagé en machine virtuelle bytecode.
la source
Pourquoi pas?
Le site de rencontres OkCupid est créé avec C ++. Il y a probablement d'autres exemples.
Il existe également une boîte à outils inspirée de Qt pour le développement d'applications Web avec C ++ appelée Wt .
la source
Si vous envisagez d’écrire votre application Web en C ++, il serait totalement inutile de l’interfacer en tant que CGI.
Ma suggestion serait de le construire de manière asynchrone en utilisant ASIO (Asynchronous I / O). Avec cela, vous pouvez créer un service Web ultra rapide (combinez-le avec nginx en tant que serveur proxy inverse et statique pour obtenir les meilleurs effets); Combinez cela avec une bibliothèque de modèles comme Wt et vous êtes prêt à traiter des dizaines de milliers de requêtes par seconde à partir d'un serveur unique.
La question de savoir s'il s'agit d'une alternative pratique au framework web de langage dynamique est un autre problème.
la source
En bref, ANYTHING peut être utilisé pour écrire une page Web, à condition qu’il puisse lire l’entrée, écrire une sortie interprétable et qu’il soit exécutable par le serveur Web.
Techniquement, toute langue peut être utilisée comme script CGI à condition:
Il y a aussi d'autres moyens. Perl a la capacité d'être construit comme un wrapper autour du code c / c ++, agissant comme une couche d'interprétation entre les deux (et cela n'inclut pas les modules Perl qui sont compilés à plat en C).
la source
au début, c'était assez courant - les premiers sites Web sur lesquels j'ai travaillé à la fin des années 90 étaient des extensions ISAPI écrites en C ++, et ils fonctionnaient assez bien.
la source
Il semble que Microsoft le pense aussi. Découvrez Casablanca qui est un nouvel ensemble d’outils pour Azure (apparemment) utilisant C ++.
la source
Pour PHP, vous pouvez écrire vos propres extensions C / C ++ et obtenir ainsi de bons avantages en termes de performances. Si mon application Web nécessitait beaucoup de ressources en temps processeur, je créerais probablement une petite bibliothèque C ++ qui aurait déchargé ce traitement sur l'extension, puis renvoyé le résultat à PHP, qui le renvoie ensuite au navigateur.
L’autre chose que les gens ne considèrent pas souvent est de décharger certains traitements de la CPU du côté client, par exemple JavaScript / jQuery. Si j'ai un serveur Web, j'ai peut-être besoin d'un processeur 3Ghz pour effectuer un traitement gourmand en ressources CPU pour une fonction particulière (peut-être un traitement de données). Mon entreprise paie de l'argent pour ce serveur chaque mois pour le maintenir en fonctionnement. Si je souhaite augmenter les opérations pour 100 utilisateurs simultanés exécutant simultanément cette tâche gourmande en ressources processeur, j'ai peut-être besoin de plusieurs processeurs et serveurs, ce qui augmente les coûts pour mon entreprise. Si je délègue cette tâche gourmande en ressources processeur du côté client, chaque utilisateur qui visite le site Web peut effectuer son propre traitement des données et je n'ai pas à augmenter la capacité de mon serveur, ce qui me permet d'économiser de l'argent.
Après tout, avec la puissance collective de plus de 100 ordinateurs de bureau / tablettes / mobiles, le traitement pour vous est beaucoup plus puissant que votre serveur installé dans un centre de données, ce qui coûte de l'argent à votre entreprise chaque mois. Potentiellement, tout ce que votre serveur ferait serait de récupérer des données de la base de données, de fournir du contenu, ainsi qu'un peu de pré / post traitement et de validation des données avant de les stocker dans la base de données. Évidemment, vous ne feriez pas un code client trop gourmand en ressources processeur qui bloquerait / gèlerait l'interface utilisateur du navigateur Web, vous pourriez envoyer une requête AJAX au serveur, récupérer les données puis traiter les données de manière asynchrone côté client, en laissant le site Web. -interface utilisateur complètement utilisable.
la source
Oui, il peut être utilisé. Les autres ont mentionné diverses approches. Voici ma propre approche. L’avantage est qu’elle est totalement portable et autonome. Toutes les bibliothèques sélectionnées dépendent uniquement de ANSI C. Pour le configurer, il suffit de disposer du noyau Linux et d’un compilateur C et un compilateur), pas de bibliothèques supplémentaires sont nécessaires, pas de grandes installations de fantaisie.
Le résultat est un programme unique qui est à la fois un serveur Web et un générateur de page dynamique (remplace à la fois "apache" et "php"), il disposera également d'un accès à la base de données via sqlite.
Bibliothèques utilisées:
createElement
Le reste de cette réponse est un guide complet de configuration pour Linux. SQlite et MiniXML sont facultatifs, mais le guide couvre l’installation complète. Il vous appartient de commenter les parties inutiles si vous souhaitez désactiver sqlite ou MiniXML.
1. Téléchargez les 3 bibliothèques
2. Préparez votre dossier
sqlite3.c , sqlite3.h
mongoose.c , mongoose.h
mxml.h
3. Compiler le mxml
Vous avez peut-être remarqué que mxml.c est manquant, car nous devons créer une bibliothèque statique mxml. Accédez au dossier de téléchargement du fichier .txz tar.gz et effectuez les opérations suivantes:
Une fois la compilation terminée, de nombreux fichiers seront générés. Le seul fichier qui nous intéresse est de
libmxml.a
copier ce fichier dans le dossier principal.3.1 Doublecheck
Vérifiez que le dossier principal présente les éléments suivants:
mongoose.c, mongoose.h
libmxml.a, mxml.h
sqlite.c, sqlite.h
4. main.c
Créons le programme actuel, créons un
main.c
fichier dans le dossier principal, voici un squelette pour vous aider à démarrer.Enfin, compiler!
Compilons.
cd
dans votre dossier principal et exécutez ceux-ci:Maintenant, exécutez server.out avec
/server.out
et naviguez jusqu’àlocalhost:8080/hello
Terminé :)
la source
Je suppose que plusieurs systèmes embarqués (par exemple, routeurs, imprimantes, ...) ont un serveur Web piloté par C ++.
En particulier, vous pouvez utiliser une bibliothèque de serveur HTTP telle que libonion pour ajouter des fonctionnalités Web à certains programmes C ou C ++, ou pour développer un serveur léger avec une interface Web.
Certaines personnes codent leur serveur Web ou leur interface HTTP dans Ocaml à l’aide de Ocsigen . Tous les sites Web ne sont pas PHP. Et avec FastCGI, vous pouvez bénéficier d’ un traitement Web dynamique dans / pour votre application.
la source