Forum Programmation.web Des retour de l'utilisation du framework web Wt (C++) ?

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
Étiquettes : aucune
5
4
juil.
2013

Hello,

En phase de lancement d'un projet web, je me pose la question d'utiliser le framework Wt. Ce qui me plaît particulièrement dans ce framework :

  • le langage C++ fortement typé (ce que je recherche)
  • le développement avec une approche "GUI" (on ne programme qu'en C++, avec des callback et des "évènements", les aspects asynchrone / JS sont masqués)
  • la performance a priori (liée au langage C++)
  • l'intégration "native" de Bootstrap pour les CSS

Ce qui me fait douter :
* beaucoup de requêtes HTTP, donc potentiellement charge côté serveur ?
* pas de gros projet utilisant cette techno (à ma connaissance en tout cas)
* réactivité de l'interface (étant donné le nombre de requêtes HTTP)

Quelqu'un sur LinuxFR connait Wt ? l'utilise ? aurait un retour d'expérience ?

  • # framework C++ plus "classique"

    Posté par  (site web personnel) . Évalué à 2.

    Il y a cppcms qui offre un framework plus classique,

    [mode auto-pub pour mon projet open-source]

    après au dessus de cela, pour générer du code plus en "MVC" et sans prise de tête, j'ai créé cppcms-skeleton, qui permet d'avoir directement un projet structuré et automatiser certaines taches (création du CMake, création d'un nouveau contrôleur etc.)

    Je l'utilise déjà sur plusieurs projets:

    après pour l'instant je n'ai pas encore masse de documentation comme je suis encore plus à peaufiner le code, mais je suis plutot reactif et ça me motiverai à écrire des tutos etc.

    • [^] # Re: framework C++ plus "classique"

      Posté par  (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 05 juillet 2013 à 12:36.

      J'ai regardé ton blog, ça a l'air effice en perf :) Ceci dit, cppcms semble plus orienté "site web" par rapport à Wt qui est plus orienté "application".

      Ce qui différencie Wt (à son avantage) par rapport à cppcms :

      • pas de génération de code automatique : tout est basé sur des templates C++
      • un ORM contrairement à CppDB qui offre une couche de connexion à des bases de données mais visiblement sans mapping objets / tables
      • MVC natif dans Wt : tu développes une application web comme une application classique, sans te préopccuper de l'aspect réseau / déconnecté

      Le dernier point est à double tranchant, puisque du coup cela évite de faire une API propre (et donc de fait limite les interactions possibles avec d'autres frontend).

      A ce propos, un "getting started" serait le bienvenu… Par exemple en supposant que je veuille développer une api REST/JSON, est-ce que cppcms serait adapté ? (la question n'est pas "est-ce qu'on peut le faire", mais "est-ce que cppcms est une solution appropriée compte-tenu de ce qui existe par ailleurs")

  • # Mon opinion : fuir

    Posté par  (site web personnel) . Évalué à 2.

    À mon avis si aucun projet connu utilise la techno, alors que la techno existe depuis très longtemps, c'est qu'il y a une raison.

    Pour moi ce framework est l'exemple parfait de ce qu'il ne faut pas faire dans le web.

    On peut cependant avoir une certaine nostalgie, comme faire ses interfaces en GTK ou utiliser Wt pour du web. Mais si on a un temps de développement beaucoup plus élevé pour un résultat médiocre ce n'est très intéressant.

    Si tu recherches un langage typé dans le monde du web, tu peux regarder du cotés de TypeScript et compagnie. C++ c'est un peu overkill.

    Je n'ai pas compris ton histoire de C++ avec des callbacks et des évènements car c'est exactement pareil en JavaScript.

    Pour les performances, un programme écrit en C++ et compilé en ASM.js avec emscripten est très efficace. Mais je ne pense pas que ce soit le cas de Wt. À mon avis tu perds en performances pures pour les gros traitements.

    De manière générale, on ne fait plus des IHM aujourd'hui comme on les faisait il y a 20 ans. Le web a changé beaucoup de choses dans ce domaine.

    Pour ma part je conseillerais AngularJS qui contient beaucoup d'innovations et qui est très efficace en terme de développement. Notamment du cotés du TestDrivenDevelopment.

    • [^] # Re: Mon opinion : fuir

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      À mon avis si aucun projet connu utilise la techno, alors que la techno existe depuis très longtemps, c'est qu'il y a une raison.

      Hm… ça ne veut pas dire que ce n'est pas bon, ça veut dire - par exemple que peu de projets "à la mode" utilisent des technos telles que C/C++.

      Pour moi ce framework est l'exemple parfait de ce qu'il ne faut pas faire dans le web.

      Tu peux argumenter ?

      On peut cependant avoir une certaine nostalgie, comme faire ses interfaces en GTK ou utiliser Wt pour du web. Mais si on a un temps de développement beaucoup plus élevé pour un résultat médiocre ce n'est très intéressant.

      Bah, le temps de développement est une chose, la maintenabilité en est une autre. Je ne vois pas en quoi utiliser Wt est "avoir une certaine nostalgie".

      Si tu recherches un langage typé dans le monde du web, tu peux regarder du cotés de TypeScript et compagnie. C++ c'est un peu overkill.

      Hm… TypeScript, à part que c'est développé par M$, je sais pas qui l'utilise spécialement ; des sites comme le bon coin, par exemple, pour ne citer que lui utilise du C pour son backend.

      Je n'ai pas compris ton histoire de C++ avec des callbacks et des évènements car c'est exactement pareil en JavaScript.

      Tout à fait. Sauf qu'en Javascript, c'est côté client uniquement : ensuite il faut que tu gères la synchronisation des données avec le serveur. Là, avec Wt, c'est "full package" : tu ne te préoccupes pas de l'API et de la synchronisation client/serveur puisque c'est encapsulé dans Wt justement.

      Pour les performances, un programme écrit en C++ et compilé en ASM.js avec emscripten est très efficace. Mais je ne pense pas que ce soit le cas de Wt. À mon avis tu perds en performances pures pour les gros traitements.

      Tu parles d'une seule partie du sujet : le côté utilisateur.

      De manière générale, on ne fait plus des IHM aujourd'hui comme on les faisait il y a 20 ans. Le web a changé beaucoup de choses dans ce domaine.

      Arguments ?

      Pour ma part je conseillerais AngularJS qui contient beaucoup d'innovations et qui est très efficace en terme de développement. Notamment du cotés du TestDrivenDevelopment.

      Je connais AngularJS. Comme pour beaucoup d'autres framework MVC Javascript, j'aimerais que tu m'expliques un peu plus ce qui les différencie des méthodes de développement d'IHM d'il y a 20 ans. Les mécanismes que tous ces framework implémentent sont ceux qui existaient déjà il y a 20 ans. La différence c'est que les technos à la mode ne sont plus les même.

      Le TDD c'est une bonne pratique, mais ça n'empêche qu'un langage fortement typé et compilé évite beaucoup d'erreurs avant même que tu aies besoin de lancer le moindre test.

      • [^] # Re: Mon opinion : fuir

        Posté par  (site web personnel) . Évalué à 1.

        À mon avis si aucun projet connu utilise la techno, alors que la techno existe depuis très longtemps, c'est qu'il y a une raison.

        Hm… ça ne veut pas dire que ce n'est pas bon, ça veut dire - par exemple que peu de projets "à la mode" utilisent des technos telles que C/C++.

        On est d'accord, mais en général c'est un bon indicateur de départ. Voir qui sont les utilisateurs d'un projet permet de se rassurer. Si il y a Google ou Facebook qui sont utilisateurs je sais que le projet a une carrière assurée pour quelques années. C'est toujours plus risqué de partir sur un projet sans trop savoir si on ne va pas galérer à le maintenir seul.

        On peut cependant avoir une certaine nostalgie, comme faire ses interfaces en GTK ou utiliser Wt pour du web. Mais si on a un temps de développement beaucoup plus élevé pour un résultat médiocre ce n'est très intéressant.

        Bah, le temps de développement est une chose, la maintenabilité en est une autre. Je ne vois pas en quoi utiliser Wt est "avoir une certaine nostalgie".

        Ma remarque est sur le cotés très bas niveau de C++. Selon moi il n'est pas nécessaire de descendre aussi bas niveau pour réaliser une IHM, d'où le cotés nostalgique. Dans l'embarqué ça peut cependant être nécessaire, mais dans ce cas on ne fait pas du Web avec un gros framework comme Wt au dessus.

        Si tu recherches un langage typé dans le monde du web, tu peux regarder du cotés de TypeScript et compagnie. C++ c'est un peu overkill.

        Hm… TypeScript, à part que c'est développé par M$, je sais pas qui l'utilise spécialement ; des sites comme le bon coin, par exemple, pour ne citer que lui utilise du C pour son backend.

        Je pensais plus à la partie frontend, même si tu peux tenter de l'utiliser cotès backend avec Node.js (et là il y en a des utilisateurs en Node.JS).

        Pour ceux qui utilisent TypeScript effectivement c'est assez difficile à savoir. Le langage a cependant profité d'une bonne couverture médiatique et est créé/soutenu par Microsoft. C'est possible que ça soit assez utilisé à l'avenir il faut voir.

        Je n'ai pas compris ton histoire de C++ avec des callbacks et des évènements car c'est exactement pareil en JavaScript.

        Tout à fait. Sauf qu'en Javascript, c'est côté client uniquement : ensuite il faut que tu gères la synchronisation des données avec le serveur. Là, avec Wt, c'est "full package" : tu ne te préoccupes pas de l'API et de la synchronisation client/serveur puisque c'est encapsulé dans Wt justement.

        Pour les performances, un programme écrit en C++ et compilé en ASM.js avec emscripten est très efficace. Mais je ne pense pas que ce soit le cas de Wt. À mon avis tu perds en performances pures pour les gros traitements.

        Tu parles d'une seule partie du sujet : le côté utilisateur.

        Désolé quand je pense web je pense surtout cotés utilisateur. C'est vrai que c'est un gros avantage d'avoir le client/serveur dans le même code source avec le même framework.

        Cependant cela peut avoir aussi des inconvénients, car le client et le serveur sont dépendants. Un serveur (développé en C++ par exemple) fournissant une API REST permet d'avoir des clients développés facilement dans n'importe quelle technologie.

        Pour les évènements temps réel ça existe avec Socket.IO pour Node.JS par exemple et là aussi c'est indépendant du client.

        De manière générale, on ne fait plus des IHM aujourd'hui comme on les faisait il y a 20 ans. Le web a changé beaucoup de choses dans ce domaine.

        Arguments ?

        Juste pour prendre l'exemple de l'évolution chez Microsoft :
        https://www.google.fr/search?hl=fr&site=imghp&tbm=isch&source=hp&q=windows+3.1
        https://www.google.fr/search?hl=fr&site=imghp&tbm=isch&source=hp&q=microsoft+pixelsense

        Et le site web d'apple :
        http://web.archive.org/web/19970404064444/http://www.apple.com/
        http://www.apple.com/

        Je connais AngularJS. Comme pour beaucoup d'autres framework MVC Javascript, j'aimerais que tu m'expliques un peu plus ce qui les différencie des méthodes de développement d'IHM d'il y a 20 ans. Les mécanismes que tous ces framework implémentent sont ceux qui existaient déjà il y a 20 ans. La différence c'est que les technos à la mode ne sont plus les même.

        Je dirais que la différence se situe surtout au niveau du code source. En C++ tu dois gérer la mémoire et les types de tes données, avec AngularJs tu t'occupes plus de tes composants et comment les faire interagir. Je pense que le développement est plus efficace.

        Le TDD c'est une bonne pratique, mais ça n'empêche qu'un langage fortement typé et compilé évite beaucoup d'erreurs avant même que tu aies besoin de lancer le moindre test.

        Le langage fortement typé évite pas mal d'erreurs on est d'accord, mais surtout cotés serveur. Cotés client la plupart des problèmes viendront avec les interactions des utilisateurs, qui font toujours des choses bizarres.

        Après tout, développer en C++ cotés serveur n'est pas une mauvaise idée si il y a de gros traitements à réaliser (car si c'est pour attendre la BDD ou les IOs en permanence c'est moins intéressant aujourd'hui).

        Cotés client c'est selon moi beaucoup moins avantageux mais si tu ne souhaite pas séparer le code source du client et du serveur, tu peux effectivement avoir un intérêt à utiliser Wt, mais je ne le conseillerais pas.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.