7
votes

C ++ Server-Scrips

Pour une fois, j'ai rencontré beaucoup de choses à propos de l'utilisation de C ++ n'étant pas souhaitable pour SSS et de recommander l'utilisation de langues interprétées telles que Perl et PHP pour la même chose. Mais j'ai besoin des fonctionnalités OO avancées et de la flexibilité de C ++ pour assurer un code évolutif et plus gérable.

J'ai essayé de nombreux articles et recherches sur Internet et aucun où il est utile du point que je n'ai toujours aucune idée s'il est possible d'écrire des scripts SS en C ++ et si oui, comment.

J'ai pensé aux idées de couple, y compris à écrire un serveur Web en C ++ et à répondre en conséquence après l'analyse de la demande HTTP. Mais ce serait réinventer la roue et je finirais de me dévier de mon projet principal et de consacrerait beaucoup de travail pour assurer un serveur HTTP fonctionnel-sécurisé.

J'ai également considéré des extensions PHP, mais à nouveau, l'approche vient également avec son propre bagage et ses frais généraux.

Mes questions sont:

  • est-il possible de programmer SSS en C ++?
  • Si oui, alors quelles sont les approches à ma disposition?

    Merci!


11 commentaires

Pourquoi Python ne fonctionne-t-il pas pour vous?


Définir "Script de côté serveur"


@Brian: SSS fonctionne avec le système de serveur et le niveau de la base de données.


@HONK: Je suis à peine en python et je suis impérié, le temps me contraint à développer davantage mes compétences en python.


C'est vraiment ne pas répondre à la question. Qu'est-ce que vous essayez de faire cela que vous ressentez les langues que tout le monde utilise pour "script de côté serveur" ne fonctionnera pas pour vous? Que pensez-vous que "Scrips du côté serveur" signifie? (surtout donné C ++ n'est pas une langue "script")


D'accord! Confessez: la fonctionnalité fournie par des langues interprétées est assez adéquate pour moi. Ce sont les hiérarchies de la classe où je trouve PHP beaucoup plus restrictif que c ++.


@check en fait, il est possible d'écrire un bon code OO assez agréable à PHP. Et vous avez d'autres options, telles que Python. Mais j'éditionnerais plus loin PHP en premier - il n'en est nulle part aussi mauvais que certaines connaissances de savoir-noeud.


@unapersson: Oui, vous avez raison sur PHP, c'est une excellente langue pour les SSS, mais d'une manière ou d'une autre, elle ne correspond pas à mes besoins.


Comment ne correspond pas à vos besoins? Encore une fois ... Si vous expliquez ce que vous faites, vous ne faites pas d'autre langue, mais C ++ peut résoudre, nous pourrions peut-être aider. Sinon, cette question n'est pas responsable et que vous recherchez simplement une validation. Fondamentalement, C ++ est votre choix pire , sauf si vous avez des besoins très spécifiques.


@Brian: Je ne dis pas de langue, mais C ++ suffira, .Net est un autre fw je peux regarder. Et d'une manière ou d'une autre, je peux peut-être générer des fonctionnalités de OO avancées dans d'autres langues également, mais je suis faible sur les ressources du serveur (qui ne sont accentuées que pour que les calculs étendus doivent être effectués sur le serveur sur de grands ensembles de données extraites de DB) et Vous devez mieux contrôler le système serveur, y compris la mémoire. En outre, chaque langage de programmation a son propre temps d'apprentissage, qui à nouveau je suis à court de temps.


J'écris un service Web qui permet d'analyser les données sur le marché croisé de manière à identifier des modèles et d'autres analyses quantitatives.


6 Réponses :


3
votes

Je ne le recommanderais pas, mais vous pouvez certainement écrire scripts CGI en C ++ (ou en C, ou en fortran). Mais pourquoi déranger? Des langues comme PHP font un bien meilleur travail plus facilement, et ils semblent bien augmenter pour certains sites assez importants.


0 commentaires

2
votes

CGI est le moyen "standard" d'avoir des demandes Web de gestion de code C ou C ++, mais Vous pouvez également examiner l'écriture d'un module qui est lié au serveur Web au moment de l'exécution. Google pour "Apache Module API" (si vous utilisez Apache) ou "Module IIS" (si vous utilisez IIS).


5 commentaires

Celui-ci semble bon, j'ai pensé à essayer d'adopter Apache à mes besoins.


@check ce n'est pas bon. Écrire des modules Apache n'est pas du tout simple, en particulier en C ++ - vous ne voulez vraiment pas y aller.


@unapersson, serait heureux que vous puissiez jeter plus de lumière.


@check Apache est assez résolument résolument C. personnellement, j'ai écrit tout le code C (lots!) que j'ai jamais l'intention de. Et le flux de travaux de construction / installation / test du module Apache est plutôt horrible.


Hmm ... mais j'aimerai toujours y regarder s'il ne l'adopte pas comme une solution finale.



0
votes

Pouvez-vous vous permettre 10 fois autant de temps de développement? Toutes les bits d'infrastructure-ish que vous prenez pour acquis dans PHP, PERL, Python sont inexistants ou beaucoup plus difficiles à utiliser en C ++. Je ne vois que deux raisons valables de faire ceci: 1. Vous n'avez que C ++ sur votre plate-forme. 2. Le serveur a vraiment des besoins très performants qui bénéficieraient d'optimisations spécifiques à problèmes.


5 commentaires

@Torp À propos de vos deux points: 1. J'ai un bon nombre de technologies à ma disposition. 2. Sinon très élevé, il a plus de besoins de performance habituels.


Si vous êtes sûr de cela, vous pourriez aussi bien faire un serveur personnalisé. Selon votre problème, vous n'aurez probablement pas besoin d'écrire un serveur HTTP complet, seul un sous-ensemble limité. Appelez-le simplement 'Server sur le serveur personnalisé' et non "Scrips du côté serveur" :)


Yup, cela sonne une jolie bonne idée, juste que je suis un peu paranoïaque à propos de la sécurité et que mon manque d'expérience avec la programmation de serveur pourrait me laisser exposé.


@check en aucun cas, vous écrivez votre propre serveur! Si vous pensez avoir besoin d'un serveur personnalisé, jetez un coup d'œil à des alternatives légères telles que Mongoose à Code.google.com / P / Mongoose - beaucoup plus facile de personnaliser que de vous écrire ou d'écrire un module Apache.


Eh bien, de l'expérience personnelle, je suis allé de cette façon (code C ++ personnalisé pour tout) sur le projet en cours. Mon excuse est qu'il n'y avait pas de langage de script disponible sur ma plate-forme (bras personnalisé exécutant Android) lorsque j'ai commencé. Dans le recul, j'aurais dû passer au service du serveur reporté jusqu'à ce qu'un port python soit disponible, ou il suffit de prendre le temps de compiler le mien :)



0
votes

Vous pouvez écrire une application CGI en C ++ en utilisant un cadre approprié (comme Celui-ci ). Mais je recommanderais juste d'aller avec Perl ou PHP. Cela vous fera économiser beaucoup de temps. Ces outils sont tout simplement mieux adaptés à ce type de travail.

EDIT : corrigé le lien


1 commentaires

Merci! J'y reviens.



8
votes

Ignorer, pour le moment, l'opportunité d'utiliser C ++ pour SSS, votre premier choix serait probablement WT . Contrairement aux implications dans certaines des autres réponses, aucun délai de développement n'est pas susceptible d'augmenter de 10 fois (ou n'importe où près de celui-ci). Non, vous ne manquez pas toutes les belles caractéristiques d'infrastructure que vous attendez des choses comme PHP, Perl ou Python non plus.

En fait, ma propre expérience est plutôt le contraire: tandis que PHP (par exemple) le rend assez facile à obtenir un site Web en cours d'exécution assez rapidement, produisant un site Web qui est vraiment stable, Sécurisé et réactif est une histoire complète. Avec WT, le contraire semble être le cas (au moins dans mon, certes limitée, expérience). Obtenir le site initial vers le haut et l'exécution prendra probablement un petit plus longtemps - mais à peu près dès que cela semble, agit et ressentez la façon dont vous voulez, il risque de ne pas nécessiter que des modifications plus mineures pour être prêtes à être prêtes. pour un usage public.

Recommencement à la question de l'opportunité: Développement en C ++ peut être un peu plus complexe que dans certaines langues qui sont plus courantes dans le marché de la SSS - mais c'est toujours un morceau de gâteau par rapport à bien faire la sécurité. Si quelqu'un a même la moindre difficulté à écrire C ++ (par exemple, suivi et libérant la mémoire quand il n'est plus nécessaire), je définitivement ne veut pas qu'ils se rapprochent du code de mon site Web.


13 commentaires

Le temps de développement peut ne pas augmenter de 10 fois (bien que je ne serais pas surpris si cela le faisait), mais cela augmentera - le cycle Compile / Link / Link / Installation C ++ va être considérablement plus long pour les modifications apportées au code C ++ que pour les modifications. à un script php.


@unapersson: Vous semblez prendre pour acquis que le cycle de compilation sera la différence seulement (ou même une significative). Au moins IME, ce n'est même pas proche de corriger.


@ Jerry IME Le temps nécessaire à l'interprète PHP de faire ses trucs est nettement plus court que celui du compilateur et de la liaison C ++ (n'oublions pas le lien de liaison) de faire ses affaires. Mais ymmv.


@unapersson: Il vous manque toujours le point: la grande majorité du temps de développement est la conception et la rédaction de code. Compilateurs, interprètes, etc., ne constituent qu'une minorité mineure du temps.


@Jerry vous manquez le fait que je peux (et que j'ai fait) écrire un code bien conçu, modulaire et oo dans PHP. Il n'y a pas de surcharge supplémentaire pour le codage PHP vs C ++ ou la conception que j'ai jamais rencontrée, à l'exception de la vérification de type statique, qui est à la fois un avantage et un moins. Avez-vous réellement écrit quelque chose de significatif dans PHP?


@unapersson: Oui. Avez-vous écrit quelque chose de significatif avec WT? La différence significative ici n'est pas vraiment c ++, mais wt. Si vous avez utilisé (par exemple) WTUBY ou JWT, cela ne changerait pas la situation de manière drastique.


@Jerry non, je n'ai pas. Mais je ne pense pas que le fait que je n'ai pas utilisé le cadre X m'empêche de commenter la langue que X est écrit dans et sur les effets qu'il aura sur le processus de développement. Supposons, par exemple, X a été écrit dans Assembleur et m'avésible d'écrire dans Assembleur afin de l'utiliser :-)


@unapersson: Vous semblez manquer à un certain nombre de points. D'abord et avant tout, que vous ne devez-vous développer en C ++ pour l'utiliser (j'aurais pensé que la mention de JWT et de WTUBY aurait rendu cette clair). Deuxièmement, comme je l'ai déjà essayé de souligner, vous ignorez les principaux facteurs en faveur de la mise au point de la Minutiae. Votre «Supposons» n'a tout simplement rien à voir avec la réalité.


@Jerry je voudrais souligner que cette question concerne C ++. Et mes "minuties" sont aussi importants pour moi que vos "facteurs majeurs". Et vous semblez avoir manqué le :-) à la fin de mon dernier commentaire.


@unapersson: Oui, il a demandé à propos de C ++, j'ai donc répondu à propos de C ++. Vous avez ensuite pris "Cela peut être utilisé à partir de C ++", et semblait interprété comme «IT peut seulement être utilisé à partir de C ++» - un mensonge complet. Oui, votre "smiley" a été enveloppé de ligne, donc ce n'était pas particulièrement visible - mais même si je l'ai vu, je ne pense pas que le sourire n'excuse pas la propagation de mensonges. En ce qui concerne les "facteurs importants", cela me semble que vous * n'a pas travaillé sur un projet important (dans une langue). Même de retour lorsque la compilation était une affaire de nuit, c'était toujours des minutiae sur un grand projet.


Vous parlez d'un OP qui ne peut pas sembler expliquer exactement ce qu'il veut faire et allait écrire son propre serveur Web plutôt que simplement utiliser Apache. Pensez-vous vraiment que tout cela est applicable? Vous ne savez même pas ce qu'il veut construire une application Web, peu importe l'utilisation d'un cadre.


@unapersson: La première station de l'incompétent est la violence - ou sur Internet, l'attaque de l'annonce d'hominem. Toutes nos félicitations.


Je suppose que les choses ont assez chauffé ici. Quelqu'un veuillez basculer sur le climatiseur. Quoi qu'il en soit, la discussion fait remarquer quelques points intéressants et @jerry, il semble en effet assez intéressant. Va regarder et peser des avantages et des inconvénients.