Question

Je me demande s’il existe une chose comme la facilité de développement d’applications Web de type Django, associée à un bon déploiement, un débogage et d’autres outils?

Django est un cadre très productif pour la création de sites contenant beaucoup de contenu. le meilleur que j'ai essayé et une bouffée d'air frais comparé à certaines monstruosités de Java. Cependant, il est écrit en Python, ce qui signifie qu’il existe très peu de prise en charge en termes de déploiement / conditionnement, de débogage, de profileurs et autres outils facilitant la création et la maintenance des applications.

Ruby a des problèmes similaires et bien que j'aime bien Ruby beaucoup mieux que j'aime Python, j'ai l'impression que Rails est à peu près dans le même bateau que Django lorsqu'il s'agit de gérer / soutenir l'application. .

Quelqu'un ici at-il essayé à la fois Django et Grails (ou d’autres frameworks Web) pour des projets non triviaux? Comment ont-ils comparé?

Était-ce utile?

La solution

Vous avez demandé à quelqu'un d'utiliser à la fois Grails et Django. J'ai travaillé sur les deux pour de grands projets. Voici mes pensées:

IDE's: Django fonctionne vraiment bien dans Eclipse et Grails fonctionne très bien dans IntelliJ Idea.

Débogage: Pratiquement le même (en supposant que vous utilisez IntelliJ pour Grails et Eclipse pour Python). Le débogage par étape, l'inspection de variables, etc ... n'a jamais besoin d'instruction print. Parfois, les messages d'erreur django peuvent être inutiles, mais les messages d'erreur Grails sont généralement assez longs et difficiles à analyser.

Il est temps d'exécuter un test unitaire: Django: 2 secondes. Grails: 20 secondes (les tests s’exécutent tous les deux en une fraction de seconde, c’est la partie sur le chargement du framework pour les exécuter qui prend le reste ... comme vous pouvez le voir, Grails est extrêmement lent à charger).

Déploiement: Django: copier & amp; collez un fichier dans une configuration apache, et pour le redéployer, il suffit de changer le code et de recharger apache. Grails: créez un fichier .war, déployez-le sur tomcat, rincez et répétez l'opération pour le redéployer.

Langages de programmation: Groovy est TOTALEMENT génial. Je l'aime plus que Python. Mais je n'ai certainement aucune plainte.

Plugins: Grails: beaucoup de plugins cassés (et peuvent utiliser toutes les librairies java). Django: quelques plugins stables, mais suffisamment pour faire tout ce dont vous avez besoin.

Base de données: Django: migrations de schéma utilisant les relations Sud et généralement intuitives. Grails: pas de migration de schéma, et par défaut, la base de données est supprimée au démarrage ... WTF

Utilisation: Django: startups (en particulier dans l'espace Gov 2.0), boutiques de développement Web indépendantes. Grails: entreprise

J'espère que ça aide!

Autres conseils

  

Cependant, il est écrit en Python qui   signifie qu'il y a peu de soutien réel dans   le mode de déploiement / conditionnement,   débogage, profileurs et autres outils   qui font la construction et l'entretien   applications beaucoup plus faciles.

Python a:

  1. un excellent débogueur interactif , qui fait un très bon usage de Python REPL .
  2. easy_install et virtualenv pour la gestion des dépendances, le packaging et le déploiement.
  3. fonctionnalités de profilage comparables à d'autres langues

Donc, à mon humble avis, vous ne devriez pas vous inquiéter de cela, utilisez Python et Django et vivez heureux: -)

Heureusement pour vous, la dernière version de Django fonctionne sur Jython , vous n’avez donc pas besoin de laisser tout votre écosystème Java.

En parlant de frameworks, j’ai évalué cette année:

  1. Pylônes (Python)
  2. Webpy (Python)
  3. Symfony (PHP)
  4. CakePHP (PHP)

Aucun de ces environnements n’est aussi proche de la puissance de Django ou de Ruby on Rails. Selon mon opinion de collègue, je pourrais vous recommander le kohana . L’inconvénient est qu’il est écrit en PHP et, autant que je sache, PHP n’a pas d’excellents outils de débogage, de profilage et d’emballage des applications.

Modifier: Voici un très bon article sur le packaging et le déploiement d'applications Python (spécifiquement les applications Django). C'est un sujet d'actualité dans la communauté Django maintenant.

La déclaration selon laquelle Grails supprime la base de données au démarrage est complètement fausse. Son comportement au démarrage est complètement configurable et facile à configurer. J'utilise généralement create-drop lors de l'exécution d'une application en mode dev. J'utilise update lorsque je lance le test et la production.

J'aime aussi le traitement de démarrage qui me permet de préconfigurer les utilisateurs de test, les données, etc., par environnement dans Grails.

J'aimerais voir quelqu'un qui a vraiment construit et déployé des projets commerciaux commenter les avantages / inconvénients. Soyez une lecture vraiment intéressante.

Grails.

Grails ressemble à Rails (Ruby), mais il utilise du groovy, qui est plus simple que java. Il utilise la technologie Java et vous pouvez utiliser n’importe quelle librairie Java sans problème.

J'ai aussi choisi Grails plutôt que la simplicité et il y a beaucoup de java lib (comme jasper report, jawr, etc.) et je suis heureux qu'ils se joignent maintenant à SpringSource, qui renforce leur base.

J'ai deux amis qui ont commencé à écrire une application à l'aide de Ruby on Rails, mais qui ont rencontré un certain nombre de problèmes et de limitations. Après environ huit semaines de travail, ils ont décidé d’envisager d’autres solutions.

Ils ont opté pour le Framework Catalyst et Perl. C'était il y a environ 4 mois, et ils ont à plusieurs reprises parlé de l'amélioration de l'application et de leur souplesse.

Avec Perl, vous avez tous les CPAN à votre disposition, ainsi que la grande quantité d’outils inclus. Je suggérerais d'y jeter un coup d'œil, au moins.

Le "bon déploiement" problème - pour Python - n’a pas l’importance profonde qu’il a pour Java.

Le déploiement de Python pour Django consiste essentiellement à "déplacer les fichiers". Si vous le souhaitez, vous pouvez exécuter directement à partir du répertoire de lignes de la sous-version.

Vous pouvez, sans transpirer beaucoup, utiliser le distutils de Python et construisez vous-même un kit de distribution qui place vos applications Django dans les paquets de sites de Python. Je n'en suis pas un grand fan, mais c'est vraiment facile à faire.

Étant donné que mes fichiers fonctionnent sous Linux, le fichier "install.py" est simple. les scripts qui déplacent des éléments des répertoires Subversion vers les répertoires / opt / this et / opt / that . J'utilise des paramètres de chemin explicites dans ma configuration Apache pour nommer les répertoires dans lesquels les applications résident.

Les correctifs peuvent être effectués en modifiant les fichiers en place. (Une mauvaise politique.) Je préfère éditer à l’emplacement du SVN et relancer ma petite installation pour vérifier que tous les fichiers sont sous contrôle.

cakephp.org

Cakephp est vraiment bon, très proche de ruby ??on rails (1.2). Il est en php, fonctionne très bien sur les hôtes partagés et est facile à mettre en œuvre.

Le seul inconvénient est que la documentation manque quelque peu, mais vous l'obtenez rapidement et vous commencez rapidement à faire des choses sympas.

Je recommande totalement cakephp.

Personnellement, j'ai fait quelques projets assez gros avec Django, mais je ne peux comparer que ce qui est dit "montrosities". (Spring, EJB) et des trucs vraiment bas comme Twisted.

Les cadres Web utilisant des langages interprétés en sont pour la plupart à leurs balbutiements et tous (activement maintenus) s’améliorent de jour en jour.

Par "bon déploiement" comparez-vous avec les fichiers EAR de Java, qui vous permettent de déployer des applications Web en téléchargeant un seul fichier sur un serveur J2EE? (Et, dans une moindre mesure, les fichiers WAR; les fichiers EAR peuvent avoir des fichiers WAR pour les projets dépendants)

Je ne pense pas que Django ou Rails en soient encore à ce stade, mais je peux me tromper ... zuber a souligné un article avec plus de détails sur le côté Python.

Capistrano peut apporter une aide précieuse du côté Ruby.

Malheureusement, je n'ai pas vraiment travaillé avec Python ou Ruby, je ne peux donc pas aider les profileurs ni les débogueurs.

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