7
votes

Recommandation mise à jour (actuelle) sur les rails vs django?

(Avertissement: J'ai posé cette question hier sur Hacker Nouvelles . Alors que les réponses étaient bons, il y avait un manque notable de discussion technique et plus d'un « vous devez utiliser des rails parce que c'est ce que vous savez ». Depuis Joel et Jeff indiquent clairement qu'ils ne me dérange pas de questions reposts d'autres sites ... et depuis que j'apprécie vraiment les réponses que je trouve ici ... ici va)

Je sais que ce poste est un infâme « et » question, et sans doute redondant avec des messages plus anciens. Cependant, la plupart des informations que je trouve sur Rails par rapport à Django est obsolète et basée sur des versions beaucoup plus anciennes des cadres, donc s'il vous plaît pardonnez-moi.

D'abord et avant tout ... Je suis un gars Rails. Je suis venu il y a trois ans et vraiment apprécié beaucoup de ce qu'il a apporté à la table. Je ne suis pas seulement un gars Ruby ... J'ai environ 11 ans d'expérience totale, y compris Java, C / C ++, Perl, Tcl, (un peu) Python, et plus encore.

Quoi qu'il en soit, j'ai une idée, je crois, de dominer le monde. Je l'ai déjà convaincu quelques personnes il sera aussi bien et avoir des amis et le financement de la famille à prendre certains développeurs offshore et l'obtenir en version bêta le plus rapidement possible.

Maintenant, cependant, je reste à la décision de ce que la technologie à utiliser. Alors que je l'ai vraiment apprécié Ruby ... Je suis de plus en plus fatigué de la magie, et l'abus des classes ouvertes. Il est très agréable quand vous avez besoin d'injecter un comportement rapidement, mais il peut devenir une vraie douleur quand vous devez maintenir votre projet, ou l'un des plug-ins dont il dépend. Personnellement, je préfère Ruby sur Python (en grande partie en raison de blocs), mais j'envie de la clarté, première attitude de la communauté Python. Compte tenu de cette frustration, je considère sérieusement une profonde plongée dans Django et de l'utiliser pour ce projet.

Les points positifs que je vois sur le côté Rails sont:

  1. Taille de la communauté (qui, étant donné une partie de cette « communauté » inclut les réfugiés PHP, n'est pas nécessairement un plus)
  2. Ma connaissance et de l'expérience
  3. Nombre d'entreprises qui l'utilisent et qui cherchent à améliorer
  4. Disponibilité des ressources en mer

    Rails de drawbacks comprennent:

    1. Trop magique
    2. Documentation continue d'être terrible dans des endroits
    3. API Incohérence
    4. Ai-je mentionné la magie?

      Les avantages perçus) (sur le côté Django:

      1. Clarté
      2. Performance ... Je crois que hirondel va vraiment changer le paysage Python et lui donner un avantage concurrentiel
      3. Le soutien de Google de la langue elle-même (voir # 2)

        de Django Désavantages:

        1. courbe d'apprentissage
        2. petite communauté
        3. cycle de développement plus lent du projet lui-même?
        4. (un) La disponibilité des ressources en mer

          Alors, ceci est mon processus de pensée à ce jour. Je suis assez à l'aise que je pourrais venir à la vitesse rapidement Django, et je les bases de Python encore dans ma mémoire quelque part. Mais je voulais connaître votre opinion que je respecte vraiment la vision et l'expérience de beaucoup de gens que je lis ici.

          Je vous remercie de votre aide. Je pense vraiment que cette idée prendra son envol, il est donc très important pour moi de prendre la décision de bonne technologie.

          Et dire choisir Rails simplement parce que j'ai l'expérience là-bas juste ne sonne pas juste. Si tel était le cas, je serais encore en utilisant Perl ou C.

          Merci!


1 commentaires

4 Réponses :


7
votes

Vous avez oublié au moins un avantage des rails - Testabilité améliorée via RSPEC / concombre. Vraiment, l'avantage principal (supplémentaire) est l'attention sur Ruby / Rails de la communauté des tests agiles. L'utilisation de tests de langue naturelle devrait améliorer considérablement la capacité de raisonner de vos tests et de promouvoir la compréhensibilité. À certains égards, cela compenserait la "magie" que vous vous abhorez en le documentant via des tests facilement lisibles.

Au-delà de cela, je suggérerais qu'un nouveau projet que vous dépensez de l'argent de vos amis et de votre famille n'est probablement pas la situation idéale pour apprendre une nouvelle langue / cadre. Pourquoi ajouter le risque supplémentaire à une entreprise déjà risquée?


1 commentaires

+1 pour le deuxième paragraphe. Très bon point.



6
votes

Je vais simplement discuter avec beaucoup de vos déclarations:

  • Django peut avoir moins de magie que les rails, mais il y en reste encore là-bas. Python est plus clair cependant que vous obtiendrez de la clarté.
  • Django est réputé pour être facile à apprendre, alors je ne pense pas que la courbe d'apprentissage de Djangos est un problème.
  • SANCHEEN L'hirondelle est si loin de la vapeur. Ne jamais effectuer jamais de décisions logicielles basées sur la promesse que certains logiciels seront disponibles à l'avenir.

    Depuis que vous connaissez déjà des rails, vous devez vous en tenir à moins que vous sachiez que cela va être douloureux. En outre, si vous n'êtes pas satisfait des rails, je vous recommanderais de passer à travers des tutoriels pour certaines des autres frameworks Python existant, comme les turbogears 2, BFG et Grok. Il se peut que vous préfériez quelque chose de moins monolithique ou plus complet que les rails / django.

    http://bfg.repoze.org/ http://grok.zope.org/ http://turbogesears.org/


1 commentaires

La déclaration à propos de l'hirondelle d'ALDENDEN est extrêmement valide - ne prenez jamais de décisions de développement basées sur la technologie pouvant pantalonner, à moins que votre développement ne soit bien sûr de cette technologie ...



8
votes

[republie de HN, même lien que question que je voudrais entendre votre (vous n'avez pas répondu à HN) et ainsi de réponse.]

Je suis évidemment biaisé, alors que je gère une société de développement de Django. Cela dit, je vais commencer par répondre aux inconvénients de Django,

  1. courbe d'apprentissage.: Pas plus que tout autre cadre. De plus, la documentation est Top Notch. (La documentation était ce qui m'a vendu quand j'évaluais.)

  2. La communauté plus petite: Certainement vrai. Mais au-delà d'une taille critique, la taille de la communauté n'a pas d'importance. Django est bien au-dessus de cette taille. (IRC: Tout temps donné ~ 200 Devs. Google Group: plus de 14000 utilisateurs)

  3. cycle de développement plus lent du projet lui-même?: Pourquoi? Si vous donnez plus de détails, je peux répondre à cela.

  4. (ONU) DISPONIBILITÉ DES RESSOURCES OFFSHORE: Certainement moins que des rails, mais toujours pas aussi mauvais que vous auriez pensé. Une très petite liste, http://uswaretech.com/blog/2009/03 / Développement Web-Sociétés ...

    C'est dit, étant donné les informations que vous avez, je choisirais des rails. Même si la plupart des travaux que vous recherchez à l'étranger, votre expérience des rails existantes serait un avantage énorme, ce qui vous aidait à évaluer les fournisseurs, à garder une piste.

    sur une note semi-liée, Django est moins mature / la plus petite communauté est trop détériorée, certaines figures,

    1. ans en cours de développement. ROR: 5 / DJANGO 5
    2. Membres du plus grand groupe Google: ROR 18000 + / DJANGO 14000 +
    3. Membres en IRC Actuellement: ROR 436 / DJANGO 401
    4. s'engage à repo: ror? / Django 11000 +

1 commentaires

Merci. J'apprécie votre réponse (je n'ai pas répondu à hn parce que quelqu'un de la grosse frappe mon mot de passe deux fois lors de la création du compte, et ils ne vous donnent aucun moyen de récupérer). Je me penche en fait maintenant vers Django, même si beaucoup ont recommandé que je ne le fais pas. Je vous en suis reconnaissant.



6
votes

J'ai une perspective différente de ces deux cadres sur la façon dont ils se comparent. Je suis toujours noob dans ces deux comme je suis un développeur Java à la recherche de quelque chose de plus excitant à faire sur ma spareme. J'ai observé ces deux cadres de près et j'ai trouvé cela:

Rails

Comme vous le savez, les rails sont nés à partir d'une application Web faite par 37Signaux, qui affecte l'architecture de si. Je n'ai pas vraiment utilisé des rails dans une application réelle, mais je pense que je pourrais l'utiliser pour mon prochain projet d'animal de compagnie.

  1. Fondamentalement ce que je peux voir des rails, c'est qu'il s'agit d'un type de cadre monolithique (bien que cela change dans les rails 3, comme il adoptera une architecture Merb). Cette architecture de Mon point de vue affectera également la façon dont vous fournissez / emballer votre projet. Monolith type de projet que je pense est bon si vous souhaitez livrer toute l'application dans un ensemble à votre client.
  2. Selon l'architecture, les rails utilisent le plug-in si vous souhaitez étendre ou ajouter une autre fonctionnalité. Je pense que c'est bien si vous souhaitez avoir un produit basé sur la communauté où l'utilisateur peut ajouter un plugin.
  3. Ils ont dit que Ruby est lent, mais si vous souhaitez emballer des applications de rails en tant que produit, il est assez forcé de l'emballer en tant que fichier de guerre avec Jruby et Varhage. E.g: Mingle de réflexion Utilisez cette approche.
  4. Dans cet esprit, IMHO (Eh bien dhh a également dit cela dans la conférence Ruby VS Snakes Trop) Les rails conviennent à une application Web.
  5. Rails a un bon support Ajax intégré (RJS). Django Personnes Il est facile d'ajouter un support Ajax sur Django, mais une abstraction comme dans les rails la rend toujours la peine que je pense.

    Django

    Django Né d'un site de journal, donc d'une manière et d'une manière qui affecte également l'architecture de Django elle-même. Je n'ai utilisé que Django dans mon site Web Sandbox et j'aime beaucoup, j'aime vraiment la construction de sites Web avec elle.

    1. La plupart des travaux sales ont été effectués pour vous (cadre flux RSS, vue générique, administrateur, cadre commentaig, etc.)
    2. Django a une architecture d'une application "pluggable". Ce qui est bon si vous souhaitez brancher déjà des applications Django effectuées par la Communauté, ou partagez cette application sur plusieurs de vos sites.
    3. Comme je l'ai dit s'il s'agit d'un site Web interne / interne, je pense qu'il est vraiment bon d'utiliser Django car vous pouvez réutiliser ces applications sur plusieurs sites Web. Mais il serait vraiment difficile de le livrer dans une application de type de paquet car, généralement (bien la meilleure pratique que je dirais), ces applications Django vivent dans un pythonPath au lieu de grouper tout ensemble dans votre demande. Bien que Pinax distribue toutes les applications dans un seul paquet, et je suis curieux de savoir comment Ellington le fait.
    4. Comme le python actuel est plus rapide que le rubis actuel (1,8), qui rend Django même plus vite que les rails (il y a beaucoup de référence à ce sujet sur le Web). Avec ce type de performance, IMHO DJANGO convient vraiment aux sites Web élevés de trafic (pensez à Twitter comme des sites Web de la circulation)

      Certaines personnes pourraient ne pas être d'accord pour moi, car ils peuvent trouver de la solution de contournement pour utiliser des rails comme sites Web et Django en tant qu'application Web. Mais c'est ce que je pense distingua les deux sur la base de leur architecture. Ainsi, cela définira également ce qu'est-ce qu'ils sont bons. N'hésitez pas à être en désaccord avec moi: -)

      acclamations.


0 commentaires