Développez votre site Web en C++, c’est possible !

Il y a de nombreux personnes qui m’ont demandé s’il existe des framework Web pour programmer des sites Web en C++.
Pour ma part je ne trouve pas une bonne idée de créer un site avec un langage compilé pour de nombreuses raisons.
1) Vous devez recompiler votre script à chaque modification.
2) Vous devez recompiler la totalité de vos fichiers pour chaque processeur différent, machine différente à moins de faire de la compilation croisée (cross compiler en anglais).
3) C++ est un langage de bas niveau et donc plus complexe (pointeur, etc.) et pas assez productif pour créer de nombreux sites Web en un temps limité.

Donc les langages les plus populaires sont des langages interprétés comme le Perl, Ruby ou bien compilé avec une en ByteCode puis lu par une machine virtuelle comme c’est le cas pour Java, le Framework .Net de Microsoft ou encode Python, pour ce qui est de PHP c’est encore un peu différent puisqu’il est compilé à la volée en Opcode mais à la différence des autres c’est qu’il est compiler à chaque demande d’un fichier même si ce fichier n’a pas été modifié, c’est pour cette raison qu’il est plus lent et que de nombreuses personnes disent qu’il est interprété même s’il se trompe.
Et puis ce problème peut être résolu grâce aux caches d’opcode comme APC, eAccelerator, XCache.

Bon revenons au développement d’un site Web en C++ puisque c’est le but de cet article ;).
Car c’est vrai qu’écrire un site en C++ sans framework c’est pas très productif…

Alors, voici un exemple simple du célèbre Hello World sans framework avec C++ en CGI (ou encore mieux FastCgi !).

Code en C++ :

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
string firstName;
string firstNameVal;

// La variable GET "firstName", Vous devez simplement indiquer votre prénom
firstName = getenv("QUERY_STRING");  
firstNameVal = (!firstName.empty()) ? firstName : '';

// Obligatoire sinon comment peut-il savoir que c'est un document html 
// et votre serveur va répondre l'erreur 500.
cout << "Content-Type: text/html;\n\n";

cout << "<!DOCTYPE html><html><head><meta charset='utf-8'>\n";
cout << "<title>Hello World, My Web Site writing with C++ programming language</title>\n";
cout << "</head><body>\n";

if(firstName.empty()) {
  cout << "<p>Bonjour\t" << firstName << "\t comment allez vous ?</p>";
} else {
  cout << "<p>Éh bien tu ne me dis pas bonjour..." << endl;
  cout << "Éh bien, alors un petit célèbre \"Hello World\"</p>" << endl;
}

cout << "<form action='' method='get'>\n"
cout << "<input type='text' name='firstName' value='" << firstNameVal << "' required />\n";
cout << "<input type='submit' />\n";
cout << "</form>\n";

cout << "</body></html>";
    
return 0;
}

Et avec un Web Framework C++ :

<%args>
firstName;  // La variable GET "firstName", Vous devez simplement indiquer votre prénom
</%args>
<!DOCTYPE html>
<html>
 <head>
 <meta charset="urf-8">
  <title>Hello World, My Web Site writing with C++ programming language</title>
 </head>
 <body>
  <p>
  <$ if(firstName.empty()) $>
   Éh bien tu ne me dis pas bonjour... Éh bien, alors un petit célèbre "Hello World"
   <$ else $>
    Bonjour  <$ firstName $> comment allez vous ?
    
    </p>

  <form action ="" method ="get">
   Quel est votre prénom ?
   <input type="text" name="firstName" value="<$name$>" required /> <br>
   <input type="submit" />
  </form>

 </body>
</html>

Voici les frameworks C++ pour le développement Web les plus aboutit pour le moment :

CppCMS (Attention, malgré le nom il ne s’agit pas d’un CMS mais bien d’un framework).

Web Tool Kit (Attention, la licence n’est pas très permissive, pour des projet commerciale, vous devez acheter une licence).

OKWS est le serveur Web qui a été écrit par les développeurs du site de rencontre OkCupid pour permettre de le construire facilement en C++.
Il dispose également d’un puissant moteur de template nommé OkPub. OKWS est disponible sous licence GPL.

Tntnet Tntnet est un système modulaire, multi-thread de haute performance pour C+ +. C’est un modèle de langue appelée ECCP similaire à PHP, JSP, ASP où vous pouvez intégrer du code C++ à l’intérieur d’une page html afin de générer du contenu dynamique.

TreeFrog C++ Web Framework

TreeFrog Framework est un framework qui facilicite le développement Web en C++.

01Script.com