2011-10-18 8 views
6

Hay mucho contenido bueno sobre SO sobre MVC y cómo empezar con MVC, pero tengo problemas para encontrar la mejor manera de implementar la estructura MVC en un sitio web en vivo ya existente.Estrategias para migrar el sitio en vivo a la estructura MVC?

Mi sitio es una mezcolanza desagradable de ecos y HTML concatenados que haría vomitar a cualquier programador profesional, pero funciona.

Me gustaría dedicar algo de tiempo a abordar la creciente deuda técnica, sin embargo, y eso significa pasar a una estructura de MVC mucho más cuerda.

Si es posible, me gustaría evitar un let 'er rip! 100% reescribir e iniciar el enfoque, y en su lugar tomar una sección a la vez. Pero parece que la estructura centralizada del controlador básico no es adecuada para este tipo de enfoque.

+0

Instalar una máquina virtual. Configura un entorno similar a tu servidor en vivo. Copie su sitio allí. Escriba Unit-Tests y luego refactorice la base de código. De esta forma, su sitio en vivo no se ve afectado y cuando termina, simplemente empuja el nuevo sitio al sitio de producción. Para obtener ideas adicionales, consulte http://sourcemaking.com/refactoring/convert-procedural-design-to-objects – Gordon

Respuesta

5

Estoy de acuerdo con las otras sugerencias aquí, un marco no va a ser una solución mágica.

sin embargo, puede ayudar a la larga. he convertido varios sitios de mishmash en kohana framework ahora, y he tenido las siguientes experiencias.

inicialmente no conocía kohana lo suficiente, así que estaba aprendiendo eso mientras recodificaba mysite. Terminé por detener la reescritura y la codificación de un proyecto completamente nuevo desde cero para aprender kohana, y luego volví al proyecto de reescritura, ahora que entendí mejor el marco.

si usted no entiende el marco, que va a ser una curva de aprendizaje tratando de utilizarlo para convertir un viejo proyecto

  1. primer paso en la reescritura era para tirar de todos los negocios/lógica de base de datos incrustada en las páginas hasta la parte superior de cada página (antes de la salida html). Así que no estaba cambiando el flujo/estructura del sitio web, solo separando la lógica de negocios de la lógica de visualización.

    Después de eso tuve un sitio que tenía una lógica de negocios fácilmente legible, solo en la estructura anterior, y me había familiarizado con la antigua base de código al mismo tiempo.

  2. El siguiente paso que hice fue solucionar los problemas de estructura de la base de datos para que todo estuviera en la 3ra forma normal (si es posible).

    encontré más fácil modificar el código anterior a la nueva estructura de la base de datos, luego trabajar y la estructura de la base de datos anterior en el nuevo marco. (Kohana es en gran parte un marco basado en la convención, en lugar de configuración, así que era agradable para seguir esos convenios, para facilitar el mantenimiento a largo plazo)

    tener una buena estructura de base de datos hace la vida más fácil, independientemente de marco

  3. siguiente paso era elegir una parte del sitio web para reemplazar. establece las rutas en kohana y deja que kohana sirva esa parte del proyecto. kohana (y otros frameworks sin duda) tienen una alternativa, si un archivo solicitado a través de una url ya existe en el sitio, entonces kohana no manejará esa solicitud

    ya que ha separado la lógica de negocio de la lógica de visualización en sus archivos php, es una simple cuestión de dividir el código en un controlador y una vista. hacer los cambios en ambas partes para adaptarse al marco.puede dividir la lógica de negocio en el modelo/controlador después de tener el controlador/vista funcionando como se esperaba

su forma de trabajo a través de esa parte del sitio, hasta que se complete. a continuación, pruebe/inicie/arregle errores, etc.

y vuelva a comenzar en la siguiente parte del sitio.

finalmente va a llegar allí ...

aunque tomó mucho tiempo para volver a escribir, para mí valió la pena, ya que los sitios son mucho más fáciles de mantener ahora. (obviamente, la cantidad de ganancia dependerá de la calidad de la base de código original)

buena suerte

0

es posible hacer. puede escribir sus modificaciones de mod para solo redirigir a boot.php o lo que sea si no se encuentra un archivo real en la ruta solicitada. esto te permitiría hacer una sección a la vez. asegurarse de que todos sus enlaces estén en orden será una pesadilla sin embargo.

puede querer hacer una reescritura y copiar y pegar peices que necesita fuera de la aplicación anterior sobre la marcha.

6

si entiendo lo que es el nivel general de calidad para que la base de código, a continuación, no hay manera de mover a MVC en un solo paso. Es simplemente imposible. Otra mala noticia es que marcos no ayudará. No pueden transformar mágicamente una base de código incorrecta en algo parecido a la arquitectura MVCish.

En su lugar, debe centrarse en la refactorización incremental. Su objetivo debería ser el código que sigue principalmente los principios SOLID y LoD. Y mientras refactoriza su código, la arquitectura emergerá por sí misma. MVC tiene muchas variantes y sabores.

Una cosa definida es posible que desee ver son las formas de usar templates in php. Examine el código y vea qué debe cambiar para adaptarlo a sus necesidades (es más una dirección, no una solución completa). Y recuerde que en las estructuras similares a MVC View no es una plantilla, pero View usa varias plantillas.

Otra cosa de la que puede beneficiarse es aprender más sobre datamappers. Implementarlos sería un buen paso en la dirección de crear una capa modelo.

Oh ..y luego hay pocas clases generales se podría echar un vistazo a (todos son 30min +):

Ah, y this book tiene algunas ideas sobre cómo refactorizar grandes proyectos de php. Podría ser útil para ti

+0

. En su experiencia, ¿va a requerir una reescritura completa en paralelo, y luego pasar el interruptor y cruzar todo de una vez? – Drew

+0

@AndrewHeath, no, requerirá refactorización incremental: *** analizar *** *> * *** refactor *** *> * *** *** *** *** *** *** *** *** > * *** repite *** –

Cuestiones relacionadas