Moose est un cadre d'objet fantastique. Le problème est que, pris avec ses dépendances, c'est très em> gros. Notre profilage indique que sur notre plate-forme, le simple chargement de l'orignal entraînera une surcharge de 5 à 6 secondes sur des scripts d'application CGI non persistants. Ce n'est tout simplement pas acceptable pour ces applications unique. P>
En revanche, lorsque nous utilisons un système de processus persistant (tel que FCGI), ces frais de démarrage sont éliminés (ou plutôt, une seule fois) et tout va bien. Le problème que nous avons est que nous ne pouvons pas garantir que tout notre code fonctionnera toujours sous un processus persistant. p>
Nous avons étudié avec Mouse en tant que remplacement drop-in-remplacement de l'orignal , mais comme il s'avère (comme mentionné dans Cette réponse ) Ce n'est pas une option viable. Toutes les bibliothèques que nous écrivons au travail avec Moose ne manqueront pas de travailler avec la souris de manière subtile mais importante. Et nous vraiment em> ne veulent pas fourcher tous nos modules afin que nous puissions soutenir à la fois l'orignal dans un environnement persistant et la souris pour "vanille" CGI. P>
Étant donné que, nous avons les options suivantes: p>
Quelle option est la meilleure? Nous sommes penchés vers 2 en ce moment, et nous allons simplement le sucer si nous devons avoir quelque chose de courir en tant que CGI de Vanilla. Que diriez-vous d'autres cadres? Y a-t-il quelque chose de plus léger que nous devrions regarder? P>
6 Réponses :
Il y a aussi une autre option - pperl . P>
Je ne l'ai jamais utilisé, mais cela semble certainement intéressant. Et la personne qui l'a écrit (sergent mat) - cela vous donne une garantie pratiquement du code de bonne qualité. P>
PPERL est écrit par Matt Sergent (Baud) Pas de truite mat (MST).
Ce n'est pas que Baud écrit moins de code de qualité que MST ... Juste qu'ils ne sont pas la même personne.
Si c'est une erreur, pourquoi ne réparez-vous pas votre réponse?
Ma préférence serait de supprimer le soutien de Vanilla CGI. L'hébergement FCGI est vraiment bon marché de nos jours et il n'y a aucune raison de placer à Vanilla CGI (OMI), car elle renforce simplement l'opinion que Perl est lent. Mais si vous ne pouvez pas éviter cela, vous pouvez utiliser quelque chose comme objet :: Tiny A >. Mais si vous avez besoin de rôles, de contraintes, de méta-programmation et de toute autre beauté que Moose fournit, vous n'avez pas de chance, à moins que vous ne déposiez à Vanilla CGI. P>
Vous pouvez écrire une application de serveur de back-end à l'aide de Moose, puis écrivez de très petits scripts CGI qui interrogent l'arrière-plan.
+-------+ +--------------+ | Small |===>| Persistent | | CGI |<===| Moose Server | +-------+ ^ +--------------+ | Socket Connection
Ma suggestion est d'aller avec l'option n ° 2 puis de nous aider à refacteur à l'orignal de sorte que CGI devienne viable. Few travaille actuellement sur la suite d'essais Moose afin de permettre au projet Moosex :: Antlers qui devrait réduire la plupart des frais généraux qui signifie que l'orignal est inutilisable pour un environnement CGI. P>
Truite mat (MST), l'homme actuellement derrière Moosex :: Antlers, a exprimé le désir de pouvoir exécuter des applications dans un environnement CGI si nécessaire. Je suggérais de rester avec FCGI pour l'instant et de lui pesser pour ce que vous pouvez faire pour aider! P>
Jonathan Rockway a écrit sur App :: Peristent (qui, curieusement , n'est pas dans CPAN) il y a quelques mois. Je ne l'ai pas utilisé, mais sur la base de son poteau de blog à lien ci-dessus, il semble fournir une architecture de client-serveur assez transparente que vous pourriez envelopper le traitement réel de votre CGI. P>
Oui, vous pourriez l'utiliser. Mais pourquoi pas seulement utiliser FastCGI ou MOD_PERL? App :: persistant est pour les applications de ligne de commande.
L'idée de base de App :: persistant code>
, pperl code>
, speedycgi code>
et probablement d'autres est que le processus de compilation de votre programme PERL au code d'octet n'est effectué qu'une seule fois et Une sorte de mise en cache est utilisée sur des invocations après cela. Depuis que Moose aurait une pénalité de temps compilée, j'essayais d'abord cette approche. P>
J'ai utilisé avec succès pperl code> pour dessiner beaucoup de graphiques MRTG Sur un autre système d'environ 2001. Le programme PERL a été exécuté pour chaque graphique qui était une fois de plus en plus - cela probablement comparable à votre scénario CGI. P>