vista tutorial que programar programacion patron mvc modelo español diagrama controlador model-view-controller drupal frameworks content-management-system

model view controller - tutorial - ¿Cuáles son las ventajas de utilizar un marco MVC sobre, por ejemplo, Drupal para construir un sitio web grande?



programar en mvc (11)

Estoy escribiendo una comparación entre 3 opciones de tecnología para construir nuestro nuevo sitio web:

  • Wordpress
  • Drupal
  • Un marco MVC

El jefe está seguro de que deberíamos usar Wordpress, pero el sitio será grande, con muchas secciones, subsecciones, páginas y plantillas complicadas.

Me resulta fácil comparar WP + Drupal, pero no es tan fácil establecer las ventajas adicionales (sobre Drupal) del uso de un marco MVC.

Hasta ahora tengo:

  • Almacenamiento de datos personalizado, tipos de contenido, semántica
  • API / REST
  • Separación de lógica / UI
  • Convención, estructura del código

(Obviamente, algunos de los beneficios serán diferentes dependiendo del tipo de proyecto. En este caso, será un gran portal para un museo, con potencial para algunas cosas sociales para los visitantes)


Es difícil comparar un CMS (por ejemplo, Drupal, WordPress) con un marco MVC porque se encuentran en diferentes categorías.

Para responder específicamente a su pregunta sobre la ventaja de un marco MVC sobre un CMS, la ventaja de un marco MVC es simplemente que le permite diseñar la aplicación web exacta que necesita desde cero.

En cuanto a su situación particular:

Usar un CMS existente como WordPress o Drupal sería una excelente idea si se ajusta a sus necesidades. Evita reinventar la rueda, le ahorra tiempo y los CMS pueden ser bastante fáciles de usar (en diversos grados). Si planea delegar la tarea de actualizaciones de contenido a un usuario no técnico, puede ser prudente elegir un CMS amigable para principiantes en lugar de crear uno propio con un marco MVC, lo que posiblemente resulte en una aplicación que requiera más experiencia técnica. mantener.

Sin embargo, si imagina que el sitio web requerirá una gran cantidad de lógica de negocios personalizada que sería difícil de implementar dentro de las limitaciones de un CMS, entonces podría necesitar usar un marco MVC.


Como alguien que ha trabajado en varios sistemas CMS fabricados en casa durante la mayor parte de la última década, mi consejo es que no haga lo suyo. Si tiene alguna aplicación única, entonces MVC es una buena manera de codificar aplicaciones web, pero su facilidad no contrarrestará los miles de horas invertidas en creación de personal y millones de visitas a páginas de prueba que tienen las OSS.

Drupal no solo es un buen sistema CMS, sino también un marco bastante bueno para crear una funcionalidad web a medida, por lo que obtienes mucho gratis y solo tienes que dedicar tiempo a trabajar en lo que es exclusivo de tu sitio. (después de haber aprendido cómo codificar en sistemas drupal)


La flexibilidad de un CMS tiene un límite, aunque con Drupal ese límite es cada vez menor. Hay una curva de aprendizaje para lograr lo que desea, y puede que no sea la solución más elegante si tiene que fusionarla con extensiones existentes. Por supuesto, siempre puede ampliar la funcionalidad de cualquier CMS, pero eso puede llevar más tiempo que utilizar un buen marco de trabajo en primer lugar.

Tuve este mismo dilema recientemente, y después de probar con Drupal, eventualmente fui con el framework CodeIgniter MVC PHP. Probablemente valga la pena invertir unos días con un CMS primero, para investigar si es posible. Si luego decides que será demasiado difícil, utiliza un marco MVC.


No se puede comparar WP o Drupal y MVC framework. Lo que puede hacer es decidir si utiliza un sistema de administración de contenido existente o si implementa el suyo y compara el ROI, el TCO, el costo de desarrollo, etc.


Puede construir un sitio bastante extensible basado en WP o Drupal, pero puede encontrarse con limitaciones de diseño establecidas en función de lo que los frameworks fueron diseñados para hacer. Drupal / WP son sistemas de administración de contenido en el núcleo, por lo que si no está administrando contenido, no está utilizando el marco de manera efectiva. Si te encuentras construyendo más y más código para evitar estas limitaciones, entonces tienes motivo para construir desde cero o utilizar un marco liviano.

Actualmente estoy construyendo un sitio con el framework CakePHP MVC y lo recomiendo encarecidamente. En mi humilde opinión, cumple con todas sus ventajas.


Yo diría que la ventaja de usar un framework MVC para implementar uno propio en lugar de usar WP o Drupal es:

  1. Usted solo codifica lo que necesita. WP y Drupal van a tener muchas cosas que no necesitas para sentarte en tu servidor.
  2. Los desarrolladores entienden toda la base de código porque la han escrito desde cero, lo que facilita su mantenimiento posterior.
  3. WP es una gran base de código (no sé nada de Drupal) tan pronto como necesite algo que no es compatible con ninguno de los CMS, tendrá que buscar mucho código.
  4. La separación de la lógica / interfaz de usuario de Wordpress es una mierda, es decir, realmente apesta.
  5. Más flexibilidad Los CMS son geniales ya que no intentas hacer que hagan algo que no estaban destinados a hacer, entonces se convierten en un dolor.

Si va a presionar para un marco MVC, entonces necesita mirar cuidadosamente cuál elegiría: no se crean iguales. Algunos de ellos colocarán restricciones en el código y el diseño de su sitio web de la misma manera que lo haría un CMS.

Supongo que realmente se debe a cuán complejos son los requisitos y cuán bien los cumplirá un CMS o un framework. Para la entrega de contenido relativamente simple, puede ser una opción escribir su propio MVC ligero y basarse en eso.


Microsoft ASP MVC (por ejemplo) es un marco para construir sus sitios web, Drupal es un sistema de administración de contenido donde "diseña" sus páginas pero no tiene que escribir ningún código.


Creo que Drupal es MVC. Drupal usa un sistema de tematización que es su punto de vista y un sistema de menú que es su controlador. Los módulos son tus modelos. Claro, el menú está fragmentado en varios módulos, pero todavía es básicamente MVC ¿no?


Gracias a todos por sus respuestas. Hice el caso para usar un Framework o Drupal, pero se decidió que deberíamos ir con Wordpress, o al menos empezar a construir en Wordpress y ver cómo funciona.

FWIW aquí están las notas que surgieron:

WORDPRESS / MU

http://wordpress.org/ http://mu.wordpress.org/

Una herramienta de publicación personal, plataforma de blogs

  • PHP +
  • Muchos widgets disponibles +
  • Soporte / flujo de trabajo multi-autor +
  • Funciones sociales (BuddyPress) +
  • Integración (BBPress, etc.) +
  • Fácil, común +
  • UI simple +
  • Capaz de administrar múltiples blogs (con WordPress MU) +
  • Solo 2 tipos de contenido (publicación o página):
  • No es una verdadera mentalidad de "CMS" / blog -
  • Heiraquía inflexible (sin secciones) -
  • Semántica limitada
  • Opciones de plantilla limitadas para autores -
  • Código desordenado -
  • Seguridad / exploits -

DRUPAL

http://drupal.org/

Un marco de gestión de contenido, kit de construcción CMS, herramientas para construir sitios. Para ''no programadores'' para construir sitios web, bloques de construcción

  • PHP +
  • Hecho para grandes sitios / portales +
  • Funciones sociales integradas (cada usuario tiene su propio perfil / registro, extensible) +
  • Selección / configuración del tipo de página por autores (sistema de bloque) +
  • Alcance para datos estructurados / semántica +
  • Múltiples tipos de contenido (comunicados de prensa, artículos de noticias, publicaciones en blogs, etc.) +
  • Buena comunidad / herramientas +
  • Lienzo en blanco +
  • Muchas características +
  • Buena manipulación de imágenes +
  • Interfaz de usuario compleja:
  • "Caja negra", código muy abstracto, curva de aprendizaje. -
  • Personalizar / tematizar es difícil -

MARCO DE REFERENCIA

Le permite diseñar la aplicación web exacta que necesita desde cero

  • Extensible +
  • Control de semántica, almacenamiento de datos +
  • API / Datos / REST / Servicios web +
  • Herramientas actuales y modernas, vanguardia +
  • Separación de lógica / presentación (patrón de diseño MVC) +
  • Convención - código estructurado, flujo de trabajo +
  • Reutilizar / combinar contenido +
  • Permite el desarrollo de múltiples IU sin tocar la lógica de negocio codebase +
  • Robusto API / estándares / patrones +
  • SECO (no te repitas) +
  • Curva de aprendizaje -
  • Necesidad de diseñar una interfaz de usuario personalizada -
  • ¿Overkill? (dependiendo de los objetivos) -

Drupal tiene MVC Layer, echa un vistazo a Drupal Prometheus @ http://www.drupalprometheus.org . Tiene la mayoría de las características de un marco moderno de MVC más el poder de Drupal CMS. Recientemente comenzamos a usarlo en un proyecto para nuestro cliente.


Le aconsejaría fuertemente en contra de WordPress, es maravilloso para sitios con algunas páginas estáticas y una sección de blog / noticias, pero hice un sitio web de producto bilingüe basado en WP 2.2 y fue un PITA importante con una gran cantidad de hackeo y escritura codificar en la plantilla para hacerlo posible.

Ahora he estado desarrollando en Drupal y es realmente mejor para proyectos más grandes (aunque toma más tiempo configurar un blog simple en comparación con WP) - tiene una maravillosa arquitectura modular que me permitió resolver cualquier solicitud / problema hasta el momento al escribir un módulo en lugar de piratear el núcleo.

En cuanto a MVC / Drupal: mira lo que hace Drupal, si puedes obtener tu resultado modificando Drupal, entonces es genial y te ahorrará mucho tiempo al no tener que codificar las cosas usuales (registro de usuario, desinfección de entrada, robustez manejo y validación de formularios, infraestructura de tematización, abstracción de almacenamiento, capa de abstracción de servicios web (módulo de Servicios) y así sucesivamente ...).

Contra Drupal: intrínsecamente lento, debido a la arquitectura modular (estoy renderizando una lista de elementos, vamos a llamar a todos los módulos que implementan la lista de temas para averiguar si quieren modificarlo), así que si está haciendo el próximo twitter, obtenga un MVC rápido marco en su lugar. Y el almacenamiento en caché del contenido para los usuarios registrados todavía necesita mucho trabajo para ser efectivo (un caché etiquetado debe estar en el núcleo), por lo que los sitios en los que los usuarios suelen iniciar sesión pueden ser lentos.