Question

Il existe de nombreux frameworks d'application Web disponibles pour la plupart des langues. . D'après votre expérience, quelles sont leurs forces, leurs faiblesses et leurs caractéristiques uniques? En supposant le luxe du choix, quels facteurs vous inciteraient à considérer l’un plutôt que l’autre?

Je suis plus intéressé par l'expérience directe des utilisateurs avec un ou plusieurs frameworks que par une comparaison exhaustive de tout ce qui existe. Espérons que la communauté SO a des programmeurs qui ont de bonnes et mauvaises expériences avec des choses telles que Rails , ASP.NET , Django , TurboGears , ou JSF . Il serait également intéressant de savoir si quelqu'un utilise l'un des cadres moins classiques tels que Seaside ou Weblocks .

Le langage de programmation est une différence évidente, mais un Java vs Ruby flamewar ne sera pas très amusant, et la plupart de ces frameworks semblent au moins autant investir dans la technologie, les outils et la complexité que le langage de leur choix; donc je suis plus intéressé par des choses comme:

  • Vitesse de développement et commodité
  • Obstacles à l'entrée - à la fois en termes de formation des développeurs et d'infrastructures nécessaires
  • Lock-in - combien de code pourriez-vous conserver si vous deviez changer de framework?
  • Flexibilité - le cadre dicte-t-il votre architecture ou votre conception? (Que ce soit une bonne ou une mauvaise chose est probablement préférable de laisser une discussion séparée.)
  • Performances, évolutivité et stabilité - évidemment en fonction des développeurs!
Était-ce utile?

La solution

Je vais aborder brièvement chaque domaine pour trois frameworks Python populaires. Ceci est uniquement basé sur mes expériences et observations personnelles.

Vitesse de développement et commodité

Pour TurboGears , Pylônes et Django , la vitesse de développement est à peu près égale. Étant des frameworks modernes, il est facile de se lancer sur un nouveau site et de commencer à jeter des pages ensemble. Python est réputé pour sa rapidité de développement et de débogage, et je dirais que tout framework Python a un temps de développement plus court que toute autre configuration avec laquelle j'ai travaillé (y compris PHP, Perl, Embedded Perl et C # / ASP.Net).

Barrières à l'entrée - Formation des développeurs et infrastructure

Si vous connaissez Python et souhaitez visionner un didacticiel vidéo de 20 minutes , vous peut créer un site de type wiki assez complet à partir de zéro. Ou vous pouvez parcourir le tutoriel du site de bookmarking social en 30 minutes (installation comprise). ). Ce sont des exemples de TurboGears mais les deux autres frameworks ont aussi des tutoriels presque identiques.

L’infrastructure de test / développement fournie avec ces frameworks suffit généralement à compléter la plupart des sites. Vous pouvez à tout moment permuter des composants pour répondre aux exigences de votre environnement de production. Par exemple, SQLite convient parfaitement à la configuration de vos modèles et au chargement de données de test, mais vous souhaiterez installer MySQL (par exemple) avant de le mettre en production ou de stocker de grandes quantités de données.

Dans tous les cas, les exigences sont très faibles et entièrement dictées par vos exigences en matière d’évolutivité et non par les particularités du cadre. Si vous êtes à l'aise avec un certain langage de modèle ou ORM, celui-ci se connectera probablement directement.

Verrouillage

Il s'agit d'un problème généralisé dans tous les cadres. Lorsque vous sélectionnez une langue, vous limitez vos options de réutilisation du code. Lorsque vous sélectionnez un modèle, vous êtes à nouveau verrouillé (bien que cela soit plus facile à changer, en général, que d’autres choses). Il en va de même pour votre ORM, votre base de données, etc. Ces frameworks ne font rien qui puisse aider ou entraver le verrouillage.

Flexibilité

Tout est une question de MVC avec ces trois cadres. Comme vous l'avez dit, c'est une discussion très différente!

Performances, évolutivité et stabilité

Eh bien, si vous écrivez du bon code, votre site fonctionnera bien! Là encore, il s’agit d’un problème qui concerne tous les cadres traités par différentes techniques de développement et dépasse probablement le cadre de cette répondre.

Autres conseils

Django vs Struts.

Vitesse de développement et commodité.

Django - est opérationnel dans le temps requis pour construire le modèle (en Python), définir les mappages de l'administrateur (2 à 3 lignes de code par classe de modèle) et créer des modèles HTML pour fonctionner avec les vues maître-détail par défaut.

Struts - doit définir une base de données en SQL, puis définir des mappages ORM dans iBatis. Puis définissez, testez et construisez divers composants d’application, à l’aide de classes d’action et de pages de modèles JSP. Oh, et je dois définir des EJB pour déplacer des données d'application vers des JSP. Tout doit être compilé et je dois travailler à travers de nombreux détails pour obtenir quelque chose qui respecte les règles de compilation.

Obstacles à l'entrée - à la fois en termes de formation des développeurs et d'infrastructure nécessaire

Constante dans tous les cadres et toutes les langues. C'est à peu près un élément qui ne compte pas. Aucune langue ou structure n'est par nature facile à former. Tous les environnements Web ont des exigences d’infrastructure similaires.

Verrouillage : combien de code pouvez-vous conserver si vous deviez changer de framework?

Cela n’a pas beaucoup de sens. Si vous passez de Tomcat à l’un des dérivés de Tomcat, vous pouvez conserver beaucoup de code Java. Sinon, vous ne conservez généralement pas beaucoup de code lorsque vous changez de structure.

Flexibilité : le cadre détermine-t-il votre architecture ou votre conception? (Que ce soit une bonne ou une mauvaise chose est probablement préférable de laisser une discussion séparée.)

En fait, ce n'est pas une discussion séparée. C'est le but. Les frameworks dictent votre architecture - et c'est une bonne chose. En effet, le framework est un code que vous n'avez pas à écrire, tester, déboguer ou supporter. C’est une bonne chose que votre application soit confinée par le cadre à une structure éprouvée et opérationnelle.

Performances, évolutivité et stabilité , cela dépend évidemment des développeurs!

La performance est un langage (pas un framework). C'est du design. Dans une certaine mesure, sa configuration également de mise en œuvre.

L’évolutivité est un cadre (pas un langage). C'est la conception et la configuration.

La stabilité est omniprésente: système d'exploitation, langage, infrastructure, conception, programmation, assurance qualité et configuration de la mise en œuvre.

C’est une question incroyablement subjective… et c’est un tag que vous devez ajouter à votre question. Comme plusieurs commentaires l'ont déjà suggéré, vous avez déjà spécifié un très bon guide; que demandes-tu réellement? Il y a un milliard d'opinions sur ce genre de chose et certainement pas de bonne réponse!

Personnellement, j’ai commencé à utiliser le fichier .html, je suis passé à php, j’ai essayé ruby ??(je le détestais), j’ai découvert Python / DJango .. et je suis heureux depuis. C’est un chemin tout à fait unique à prendre (probablement) pour que votre kilométrage puisse varier:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top