2011-07-11 23 views
6

¿Podemos usar Drupal como marco para una aplicación más grande? ¿Es adecuado para desarrollar una gran aplicación en su marco o existe alguna limitación?Drupal como marco

Quiero usar Drupal como marco en mi aplicación. ¿Vale la pena?

+4

Sea más específico.Cada marco tiene sus limitaciones, pero es difícil saber si las limitaciones de Drupal lo afectarán cuando lo único que nos da al describir su aplicación es ** "grande" **. – Alexander

+0

¿Cuáles son algunas características que desea implementar? –

+0

Quiero implementar la administración de licencias en la que el administrador del sistema otorga licencia al propietario del sistema. el propietario del sistema comprará la licencia. y el administrador del sistema crea no. del propietario del sistema. Bajo el propietario del sistema habrá 0-n usuarios que son personalizados. – mrugesh

Respuesta

3

Esto realmente depende de las necesidades de su aplicación. Drupal, a pesar de ser flexible y extensible, es primero un CMS y viene cargado con características que pueden o no ser deseadas para una aplicación web. Pero si fuera de fábrica o con módulos adicionales proporciona una gran coincidencia para las características de la aplicación web classic (es decir, administración de usuarios, administración de contenido, sistema de complementos, capa de tema, etc.), Drupal proporciona un excelente marco para evite reinventar la rueda (o dependencias en complementos de marcos de terceros/menos maduros).

Drupal como una curva de aprendizaje más pronunciada en comparación con la mayoría del marco. Como marco, Drupal está construido y diseñado para el CMS que es. Históricamente, Drupal pone casi todo en la base de datos. La situación ahora es mejor con la generalización de exportables y herramientas como el Features module. Además, a diferencia de la mayoría de los marcos Drupal does not use MVC y en su mayoría no está orientado a objetos.

+0

Solo uno rápido: ¿qué hay de malo en poner datos en la base de datos? – Juliusz

+3

@Juliusz: Drupal ha tomado una decisión de diseño de poner casi todas las configuraciones en la base de datos, así como los datos. Esto me vuelve loco de forma regular. En lugar de desplegar archivos de configuración, tengo que implementar bases de datos prepobladas con la configuración. –

+1

@Juliusz: ¿Son los datos de configuración para poner en la base de datos? ¿Las páginas de consulta de datos se compilan con una interfaz de usuario (es decir, vistas) o las estructuras de contenido se crean con datos de IU (es decir, tipos de contenido) para poner en la base de datos? –

2

Sí! Puedes usarlo como marco. Te gustaría estar contento con algunas de las API básicas, como el menú, el nodo y, probablemente, la API de formulario. El enrutador de menú y el control de acceso son bastante buenos.

He trabajado en un par de sitios de Drupal que no funcionaron porque los requisitos básicos tenían poco que ver con un CMS. Drupal es muy flexible pero se adapta mejor a la gestión de contenido. Por supuesto, puede usarlo como un CMS satelital para alguna otra aplicación. Drupal también se puede usar para arquitectura orientada al servicio.

Si desea ampliar a gran escala, podría considerar un marco que otorgue más importancia a las pruebas y prácticas impulsadas por pruebas. Drupal es un adoptante tardío de estas prácticas y no está maduro en esta área. Es algo que encuentro frustrante, especialmente en sitios grandes donde el error de regresión se convierte en un problema. Considera algo como Ruby on Rails si esto te interesa.

¡Buena suerte!

Nota para mí: ¿Por qué le deseo suerte a alguien en un proyecto de software? ... interesante.

+1

+1 por buena respuesta. –

+0

+1 para un buen comentario! – Rimian

5

Si está buscando un desarrollo -framework, Drupal probablemente no sea la opción correcta. Si está buscando una suite para construir sitios web, Drupal es probablemente la herramienta adecuada.

La gente a menudo dice que Drupal es un CMF, donde la F significa Framework, pero en realidad, Drupal es simplemente un CMS flexible.

En un nivel alto, marco de aplicación web se dividen en dos categorías: el MVC y el CMS. Model View Controller es lo que la mayoría de la gente llama un framework. CMS es simplemente un CMS flexible con capacidades de desarrollo de aplicaciones.

En la práctica, lo que le falta es Drupal:

  • arquitectura adecuada. La mayoría de las cosas en Drupal evolucionaron orgánicamente; lo que causa inconsistencia, comportamiento inesperado y barreras inesperadas. No digo que Drupal no se construye correctamente: solo dice que no ha sido diseñado: diseñado como un todo.
  • Principio de la menor sorpresa. Muchos frameworks permiten a desarrolladores expertos crear sitios en pocas horas. Con Drupal, debe obtener mucha experiencia y mejores prácticas antes de poder confiar en la implementación de sitios web en la planificación.
  • MVC. Drupal tiene una capa de base de datos distinta y una capa de tema (vista), pero no son convencionales y, a menudo, se usan incorrectamente. Y ciertamente no después de un patrón estructural.
  • comportamiento no ionizado: un marco puede forzar ciertas metodologías, bibliotecas o incluso fomentar cierto comportamiento, pero no debe tener valores predeterminados codificados/no reemplazables que especifiquen su producto final. O, en inglés: Drupals core tiene muchos valores predeterminados que dictan cómo va a configurar, diseñar y estructurar su sitio web, independientemente de sus necesidades o deseos (de los clientes). Los módulos o complementos vienen incluso con frecuencia con el comportamiento y a menudo se ven integrados y/o codificados.
  • DRY, no se repita: Drupal depende en gran medida de la repetición de uno mismo. Todo el sistema de temas depende de copiar partes de código en archivos personalizados y cambiar tidbits. Su sistema de sobreescritura requiere copiar grandes partes del formulario predeterminado en módulos personalizados y cambiar las partes que uno quiere modificar.

Muchas de estas carencias son la principal causa de retrasos y deslices presupuestarios, como se ve en mi experiencia Drupal de +10 años. Donde comportamiento no ionizado parte ha resultado ser la más desagradable para la mayoría de los proyectos en los que participé. Aparecen características simples o ideas que demuestran ocupar grandes partes de todo el presupuesto; Pequeños detalles comiendo semanas de desarrollo; ese último 20% no solo toma el 80% del esfuerzo, sino que a veces el 300%.

Además de eso, Drupal no sigue los patrones OO, lo que (según el consenso general) es algo malo. No hay herencia, no DRY-practice, no object-relation-mapper *) y no unittesting-practice. **).

Esto puede sonar todo negativo, pero en realidad, las personas logran construir Drupalsites agradables a pesar de todos estos "inconvenientes". Esto se debe a que se adhieren principalmente a los valores predeterminados de Drupal (de ser posible, estándar, complementos donde se desean cambios, desarrollo personalizado cuando no queda otra opción).

*) De hecho, existe; en Drupal 7, PDO se introdujo, pero aún no se usa (¿todavía?) como ORM/en absoluto.

**) De hecho: todas las contribuciones principales y muchas tienen pruebas, pero estas son pruebas de integración y una rara prueba unitaria. Las pruebas de integración (DrupalWebTest) instalan una base de datos limpia + base de código Drupal para cada prueba individual. Su equipo de prueba básico promedio tarda más de 8 horas en ejecutarse no es una excepción. TDD simplemente no es (todavía) posible.

EDITAR lectura en sus ejemplos: Drupal es especialmente mala en el área de "forma asistentes", aunque se ha visto una mejora en Drupal 7. Otra notable falta, en Drupal, es un sistema adecuado workflowing, programable. Hay varios módulos que mejoran o reemplazan el sencillo sistema de flujo de trabajo en el núcleo, pero no son fáciles ni eficientes (desarrollo-esfuerzo-sabio) para programar en contra. Parece que las características principales que desea, están entre las áreas menos desarrolladas en Drupal

+2

Yo trabajo con Drupal y (todavía) me encanta, pero estos son críticos muy reflexivos. –

+1

Todos los puntos de esta respuesta son extremadamente debatibles ... – Alexander

+4

Excelente respuesta. He estado haciendo el desarrollo Drupal durante 4-5 años y me he vuelto crítico. Es bueno ver a alguien más que no sigue a la multitud y piensa críticamente. – Rimian

1

Drupal 8 cambian mucho.

- It is OOP 
- Using Composer 
- Have good cache mechanism in core 
- RESTful in core 

Así que ahora es fácil se puede utilizar como marco para cualquier aplicación. Al final de la web, todas las formas tienen contenido. El comercio electrónico tiene contenido. Y así.