python - site - django tutorial
Django-vs-Grails-vs-? (9)
Me pregunto si existe la facilidad de desarrollo de aplicaciones web similar a Django combinada con una buena implementación, depuración y otras herramientas.
Django es un marco muy productivo para construir sitios de contenido pesado; lo mejor que he probado y una bocanada de aire fresco en comparación con algunas de las monstruosidades de Java que hay. Sin embargo, está escrito en Python, lo que significa que hay poco apoyo real en la forma de implementación / empaquetado, depuración, perfiladores y otras herramientas que hacen que la construcción y el mantenimiento de las aplicaciones sea mucho más fácil.
Ruby tiene problemas similares y aunque me gusta Ruby mucho mejor de lo que me gusta Python, tengo la impresión de que Rails está más o menos en el mismo barco en Django cuando se trata de administrar / apoyar la aplicación.
¿Alguien ha intentado tanto con Django como con Grails (u otros marcos web) para proyectos no triviales? ¿Cómo se compararon?
Sin embargo, está escrito en Python, lo que significa que hay poco apoyo real en la forma de implementación / empaquetado, depuración, perfiladores y otras herramientas que hacen que la construcción y el mantenimiento de las aplicaciones sea mucho más fácil.
Python tiene:
- un gran depurador interactivo , que hace un muy buen uso de Python REPL .
- easy_install y virtualenv para la gestión de la dependencia, el empaquetado y la implementación.
- características de creación de perfiles comparables a otros idiomas
Así que, en mi humilde opinión, no deberías preocuparte por esto, usa Python y Django y vive feliz :-)
Por suerte para ti, la última versión de Django se ejecuta en Jython , por lo que no necesitas dejar atrás todo tu ecosistema de Java.
Hablando de marcos, evalué este año:
Ninguno de estos marcos se acerca al poder de Django o Ruby on Rails. Basado en la opinión de mi colega, podría recomendarte kohana framework. La desventaja es que está escrito en PHP y, hasta donde yo sé, PHP no tiene excelentes herramientas para la depuración, creación de perfiles y empaquetado de aplicaciones.
Editar: Aquí hay un artículo muy bueno sobre el empaquetado y la implementación de aplicaciones Python (específicamente las aplicaciones Django). Es un tema candente en la comunidad de Django ahora.
cakephp.org
Cakephp es realmente bueno, muy parecido al Ruby on Rails (1.2). Está en php, funciona muy bien en hosts compartidos y es fácil de implementar.
El único inconveniente es que la documentación es deficiente, pero la obtienes rápidamente y comienzas a hacer cosas geniales rápidamente.
Recomiendo totalmente cakephp.
Tengo dos amigos que originalmente comenzaron a escribir una aplicación usando Ruby on Rails, pero se encontraron con una serie de problemas y limitaciones. Después de aproximadamente 8 semanas de trabajar en él, decidieron investigar otras alternativas.
Se decidieron por Catalyst Framework y Perl. Eso fue hace aproximadamente 4 meses, y han hablado en repetidas ocasiones sobre la mejora de la aplicación y la flexibilidad que tienen.
Con Perl, tiene todo el CPAN disponible para usted, junto con la gran cantidad de herramientas incluidas. Sugeriría echarle un vistazo, al menos.
Personalmente hice algunos proyectos bastante grandes con Django, pero solo puedo compararlos con dichas "montrosidades" (Spring, EJB) y cosas de bajo nivel como Twisted.
Los marcos web que usan lenguajes interpretados están en su mayoría en su infancia y todos (mantenidos activamente) mejoran cada día.
Por "buena implementación", ¿lo está comparando con los archivos EAR de Java, que le permiten implementar aplicaciones web cargando un solo archivo en un servidor J2EE? (Y, en menor medida, archivos WAR; los archivos EAR pueden tener archivos WAR para proyectos dependientes)
No creo que Django o Rails hayan llegado a ese punto todavía, pero podría estar equivocado ... zuber señaló un artículo con más detalles sobre el lado de Python.
Capistrano puede ayudar en el lado de Ruby.
Lamentablemente, realmente no he trabajado tanto con Python ni con Ruby, así que no puedo ayudar con los perfiladores o los depuradores.
El problema del "buen despliegue" - para Python - no tiene la Importancia Profunda que tiene para Java.
La implementación de Python para Django es básicamente "mover los archivos". Puede ejecutar directamente desde el directorio troncal de subversión si lo desea.
Puedes, sin preocuparte mucho, usar los distutils de Python y crearte un kit de distribución que coloque tus aplicaciones de Django en los paquetes de sitio de Python. No soy un gran admirador de esto, pero es realmente fácil de hacer.
Como mis cosas se ejecutan en Linux, tengo scripts simples de "install.py" que mueven cosas de los directorios de Subversion a /opt/this
y /opt/that
directories. Utilizo una configuración de ruta explícita en mi configuración de Apache para nombrar esos directorios donde viven las aplicaciones.
La aplicación de parches se puede hacer editando los archivos en su lugar. (Una mala política.) Prefiero editar en la ubicación SVN y volver a ejecutar mi pequeña instalación para asegurarme de que tengo todos los archivos bajo control.
Usted pidió a alguien que usara tanto Grails como Django. He trabajado tanto en los grandes proyectos. Aquí están mis pensamientos:
IDE: Django funciona muy bien en Eclipse, Grails funciona muy bien en IntelliJ Idea.
Depuración: prácticamente igual (suponiendo que usa IntelliJ para Grails y Eclipse para Python). Depuración de pasos, inspección de variables, etc. ... nunca necesita una declaración de impresión para ninguno de los dos. A veces, los mensajes de error de django pueden ser inútiles, pero los mensajes de error de Grails suelen ser bastante largos y difíciles de analizar.
Tiempo para ejecutar una prueba unitaria: django: 2 segundos. Grails: 20 segundos (las pruebas en sí mismas se ejecutan en una fracción de segundo, la parte de cargar el framework para ejecutarlas toma el resto ... como puedes ver, Grails es frustrantemente lento de cargar).
Despliegue: Django: copie y pegue un archivo en una configuración de Apache, y para volver a desplegar, simplemente cambie el código y vuelva a cargar Apache. Grails: crea un archivo .war, despliégalo en tomcat, enjuaga y repite para redesplegar.
Lenguajes de programación: Groovy es TOTALMENTE increíble. Me encanta, más que Python. Pero ciertamente no tengo quejas.
Complementos: Grails: muchos plugins rotos (y puede usar cada java lib alguna vez). Django: unos pocos complementos estables, pero suficientes para hacer la mayor parte de lo que necesitas.
Base de datos: Django: migraciones de esquema usando Sur, y relaciones generalmente intuitivas. Grails: no hay migraciones de esquema, y de forma predeterminada elimina la base de datos al iniciar ... WTF
Uso: Django: startups (especialmente en el espacio Gov 2.0), tiendas independientes de desarrollo web. Grails: empresa
¡Espero que ayude!
La afirmación de que grails elimina la base de datos en el inicio es completamente incorrecta. Su comportamiento en la puesta en marcha es completamente configurable y fácil de configurar. Generalmente uso create-drop cuando ejecuto una aplicación en modo dev. Utilizo la actualización cuando corro en prueba y producción.
También me encanta el proceso de arranque que me permite preconfigurar usuarios de prueba, datos, etc. por medio del entorno en Grails.
Me encantaría ver a alguien que realmente ha construido y desplegado algunos proyectos comerciales comenta sobre los pros / contras. Se una lectura realmente interesante.
Grails.
Grails se parece a Rails (Ruby), pero usa groovy, que es más simple que java. Utiliza la tecnología de Java y puedes usar cualquier lib de Java sin ningún problema.
También elijo Grails sobre la simplicidad y hay muchas versiones de Java (como jasper report, jawr, etc.) y me alegra que ahora se unan a SpringSource, lo que hace que su base sea sólida.