2009-03-17 24 views
10

Soy un usuario de PHP desde hace mucho tiempo cuando se trata de aplicaciones web y estoy muy cómodo con él. Sin embargo, tengo un proyecto semi-grande cuyo mantenimiento/extensibilidad ha llegado al final de su ciclo de vida. Estaba pesando en diferentes marcos de PHP (no hubo cuando se originó el proyecto), ya que es el camino a seguir para este proyecto, y llegué a la conclusión de que la mejor opción sería hacerlo con Zend Framework.¿Cuáles son las diferencias reales entre Zend Framework y Django?

  • Symfony parecía complicado (no me gusta la configuración de modelo de base de datos como que
  • CakePHP parecía turbia
  • encendedor me gustó al principio, pero luego me pareció que es más como Zend con menos características y no Zend detrás de él
  • Zend Me gusta el sistema de que puedo usar solo lo que me gusta y no estar vinculado a una estructura de directorio específico, y por supuesto hay Zend detrás de él. El rendimiento es lo que potencialmente me molesta

Ahora, después de este pequeño razonamiento detrás de elegir Zend, hay varias cosas que veo como un factor decisivo al elegir un marco.

  • no he utilizado ORM en el pasado porque estoy más que cómoda la escritura de SQL directamente, por lo que todavía tienen que estar convencidos de usar ORM
  • No demasiado abstracción pasando de las agallas
  • estructura de directorios flexible

mientras este proyecto va a ser escrita de nuevo, que al igual que podría escribir en Python/Django, ya que estoy bastante familiarizado con Python, pero no con Django. Entonces, me gustaría saber si hay alguien que haya trabajado tanto con Zend Framework como con frameworks de Django y si puede delinear algunas diferencias de puntos clave.

Debo decir también que este proyecto se realiza como un proyecto dual de sitio/administrador estándar. Es decir, es básicamente dos sitios en uno. Una es para frontend y usuarios, otra es para administración de datos en el back-end. Debo y construiré backend por mi cuenta, algunos métodos de andamios serían geniales, pero el andamiaje totalmente automático es tan bueno como nada en este caso.

Todavía no estoy seguro de cómo se puede construir básicamente dos aplicaciones dentro de una estructura de directorios de, lo que se supone que es, una aplicación. ¿Simplemente hace dos aplicaciones por separado y confía en el esquema de URL a partir de ahí para separarlas? www.example.com y todo el/* es una aplicación y www.example.com/admin/* es una segunda aplicación.

siento por el largo pregunta (s), pero como se puede ver - todo está más o menos relacionada con un problema - que necesito para iniciar un proyecto nuevo, que ya se ha establecido la base de datos + datos que puedo remodelar, pero me gustaría mantener ese tipo de trabajo al mínimo.


Ok, gracias a todo el mundo - parece que voy a tratar de poner en práctica esta materia con Zend, me da más flexibilidad fuera del paquete (lo hice pruebas con ambos), y vamos a ver cómo va.

+1

Realmente no llamaría a Zend_Db un ORM - es una interfaz de SQL orientada a objetos. Proporciona algunas abstracciones que hacen su vida más fácil, pero no llega a la funcionalidad que proporcionaría un ORM. No lo estoy amamantando, no está destinado a ser un ORM. –

Respuesta

5

Zend no incluye un ORM real. Proporciona algunas clases de ayuda, pero usted está mayormente solo modelando su base de datos y escribiendo sus propias consultas SQL. Entonces tendrías plena libertad allí. Como dice Deresh, Zend está modularizado para que pueda elegir las piezas que desee.

Personalmente utilizo Zend junto con DB_DataObjects de PEAR como por ORM. Puede autogenerar su código de esqueleto. Es una solución muy simple para manejar consultas simples, pero siempre puedo escribir SQL personalizado donde sea necesario.

En cuanto a la separación de los dos administradores y frontend, sugeriría ponerlos en dominios diferentes, por ejemplo, admin.yoursite.com (back-end) y www.yoursite.com (frontend). Probablemente pueda trabajar con ambos en la misma URL, pero no es realmente un caso de uso compatible con Django o Zend.

+0

Es compatible con ZendF a través de módulos, ... pero la respuesta es vieja. –

12

Bien Django es un framework más completo que Zend.Es más similar a Symfony que a Zend.

Django puede aplicar ingeniería inversa a su base de datos en clases ORM. y tiene una herramienta cli que te ayuda a hacer cosas (generadores de modelo y administrador, generación de esqueleto de proyecto, etc.)

Zend es más que un marco de componentes. tiene su propia implementación MVC y ORM, pero necesita escribir eso solo. Su enfoque es usar solo las cosas que necesita sin imponer alguna estructura de directorio.

En su caso, Django tendrá algunas ventajas debido a su excelente módulo de generador de administración, y Django en sí mismo es bastante rápido (más rápido que la mayoría de los frameworks de PHP).

Personalmente estoy usando Symfony con Zend framework para algunas cosas que necesito (Mail, OpenID, búsqueda de Lucene), pero he jugado un poco con Django y me gusta.

2

No tengo mucha experiencia con Django, pero por lo que he leído al respecto, no parece ser lo que estás buscando (demasiada "abstracción de las entrañas"). Zend framework no le proporciona un ORM. Le proporciona algunas herramientas que pueden ayudar a mantener su código (por ejemplo, es mucho más fácil hacer $ user-> save() en un objeto Zend_Db_Table_Row y luego escribir manualmente la cadena SQL equivalente). Si está más cómodo haciendo SQL, eso es totalmente genial y Zend lo analiza ... solo tenga en cuenta que podría haber problemas de mantenimiento en el futuro. Sugeriría ir con un enfoque de "consulta nombrada" en el que almacene sus consultas en un recurso externo y las cargue "a pedido". Zend tiene una estructura de directorios muy flexible ... la recomendada solo facilita hacer las cosas un poco más fáciles. Puede extraer fácilmente de las URL de su sección de administración usando modules y el enrutamiento .... es un caso de uso muy común en Zend.

En pocas palabras, Zend es un "marco de presentación" principalmente. Eso es en lo que sobresale. Le brinda una manera limpia de organizar la presentación (las pantallas) que se muestran a sus usuarios y ayuda en el mantenimiento.

No hace mucho por usted desde una perspectiva de datos. Depende de usted, y es probable que el 90% del trabajo que debe hacerse se convierta en "mantenible".

El objetivo es que sus cosas de lógica de negocios y el acceso a los datos deben funcionar dentro de cualquier "marco", ¡e incluso sin un servidor web! De lo contrario, solo moverás un caos inmanejable de lo que sea que tengas que Zend.

Además, no me preocuparía por el rendimiento ... las cosas se pueden arreglar con una buena estrategia de almacenamiento en caché.

1

No puedo comparar Zend y Django, pero puedo decir que es muy posible que la aplicación "admin" de Django se ejecute en un dominio diferente (servidor virtual nombrado), y no es necesario duplicar ninguna código. Simplemente construye su aplicación Django de forma normal, pero coloca la aplicación administrativa y la URL en un servidor virtual diferente que comparte un servidor/clúster de base de datos común.

La aplicación de administración Django tiene limitaciones, pero es muy poderosa para algo que viene casi gratis.

Finalmente, cuando comencé Django, tenía un gran desdén por los ORM en general, pero los acepto ahora como una herramienta útil en la caja de herramientas.

Cuestiones relacionadas