¿Es posible acoplar libremente una aplicación a su marco?

14

Digamos que estoy desarrollando una aplicación web. Mi primera opción es usar PHP con Fat-Free Framework (F3) y el patrón MVC. El próximo año, podría decidir que quiero cambiar a Zend Framework, o tal vez incluso a ASP.NET MVC. ¿Tiene sentido intentar y diseñar mi aplicación de tal manera que esté ligeramente acoplada a su marco, o es el marco demasiado integral para hacer esto realista?

La única razón por la que pregunto es porque surgió en una conversación con un compañero recientemente, que criticó mi idea de que la empanada en el cielo de unir mi aplicación a F3 sin apretar.

    
pregunta David Kennedy 09.01.2014 - 01:36

4 respuestas

29

Acoplar la aplicación de forma flexible a su marco esencialmente significa que va a escribir un marco proxy. Escribir ese marco proxy es mucho trabajo, y si alguna vez cambia a un nuevo marco, tendrá que trabajar mucho para que el marco proxy sea compatible con el nuevo marco. Por supuesto, los distintos marcos utilizan diferentes expresiones y patrones, lo que hará que el marco proxy sea muy complejo (si intenta que se ajuste a todo) o muy limitado (si busca el mínimo común denominador). De cualquier manera, tendrás que luchar con ese marco proxy.

¿Tener la capacidad de cambiar marcos en un capricho vale todos estos problemas? Como dije antes, no podrá cambiarlo por capricho porque tendrá que ajustar el marco del proxy, lo que podría resultar en más trabajo que ajustar el código de la aplicación directamente.

    
respondido por el Idan Arye 09.01.2014 - 01:54
5

No se puede hacer.

Puede diseñar de una manera que sea portátil en los marcos. MVC es MVC, y los principios son aproximadamente los mismos, independientemente del idioma o plataforma que se use.

Sin embargo, el código real será muy dependiente del marco o del idioma. La única manera de abstraerse de eso sería codificar en base a un marco intermedio. Entonces puede tener el cambio de implementación intermedio (de F3 a .NET?) Sin cambiar la aplicación. Lo que es mucho trabajo, asume abstracciones sin fugas, y simplemente mueve el problema sin resolverlo: ahora estás vinculado a tu marco intermedio.

En una nota más positiva: considere expresar algunas de sus pruebas (estilo BDD) en una plataforma independiente de su implementación. Esos podrían sobrevivir a reescrituras importantes.

    
respondido por el ptyx 09.01.2014 - 01:50
5

Una vez vi a Robert C. Martin dar una charla en la que dijo algo como "la primera decisión que tomas es la más difícil de cambiar después".

Por lo tanto, mi consejo es intentar demorar esta decisión si aún no estás seguro de lo que quieres usar. Identifique las piezas que puede definir ahora y que serían fácilmente independientes del marco que termine usando.

    
respondido por el M. Scott Ford 09.01.2014 - 03:42
5

El bloqueo del marco puede ser un problema grave, pero ayuda a considerar el problema como uno de portabilidad. La portabilidad no es un atributo absoluto, sino que se relaciona con su punto de partida y hacia donde posiblemente desee ir. Por analogía, entonces, el software es portátil solo en la medida en que ya lo ha portado a otros entornos.

La mayor parte del desarrollo de una aplicación dentro de un marco tiende a ser código de pegamento, lo que une a los componentes de su marco. Los archivos de configuración pueden abstraer una cierta cantidad de pegamento en algunos sistemas, pero muchos de los detalles finos deben hacerse en el código.

Por otro lado, las reglas y procesos de negocios se pueden abstraer de la aplicación. La parte difícil de la abstracción es cuando las reglas son implementadas directamente por el marco; la seguridad, la accesibilidad y la secuenciación de procesos tienden a ser aplicadas por su marco y pueden ser las más difíciles de ver.

Si puede separar la parte de pegamento de su aplicación de la regla de negocios y el proceso de negocios y la parte de datos de negocios, entonces podrá hacer que algunas partes de su solución sean portátiles.

    
respondido por el BobDalgleish 09.01.2014 - 12:03

Lea otras preguntas en las etiquetas