miércoles, 16 de noviembre de 2011

Como elegir un framework MVC...y acabar haciendo uno propio...

Una de las primeras decisiones a las que nos enfrentamos a la hora de desarrollar la tecnología de cubenube para prepararla al "internet of things" ha sido la elección de las herramientas de desarrollo.

Tras múltiples reuniones y discusiones, vimos que debido a los diferentes problemas a los que nos vamos a enfrentar, no nos podemos decantar por una única tecnología, sino que nuestra arquitectura va a estar basada en varias de las que existen en el mercado. Inicialmente, vamos a desarrollar basándonos en PHP y Java como herramientas base. Con respecto a las herramientas de bases de datos (BBDD), ya os hablaremos más adelante de ellas, pero os adelantamos algo: NOSQL.



Una vez decidimos qué lenguajes emplear, y os puedo asegurar que no ha sido una elección sencilla, lo que sí acordamos todos de manera unánime es que debíamos emplear un patrón Modelo Vista Controlador, para que el ciclo de aprendizaje y desarrollo sea lo más corto y sencillo posible. No os voy a detallar las múltiples ventajas del modelo vista controlador ya que en el post anterior de Miguel Ángel y en la wikipedia podréis encontrar una descripción más detallada.

Lo que si os puedo contar y espero os sirva de ayuda, es el resumen de nuestra experiencia tras muchas horas de navegación por Internet, leyendo en foros y probar algunos de los frameworks existentes en el mercado.

Como no podíamos testear todos los frameworks que existían en el mercado nos decantamos por probar aquellos hacia donde parece que va el futuro de frameworks:


ZendFramework: es uno de los frameworks más extendidos en el mercado, por lo que con respecto a crecimiento de la empresa y facilidad a la hora de incorporar nuevos integrantes en el equipo de trabajo era una de las mejores opciones. El mayor inconveniente que nos hemos encontrado a la hora de usar este framework es que no hemos conseguido encontrar suficiente documentación y ejemplos para poder hacerlo funcionar. Hay que decir que sólo disponíamos de 1 semana de investigación, por lo que puede que si hubiéramos dedicado más tiempo hubiéramos encontrado más ejemplos. Es algo tedioso de configurar inicialmente y la curva de aprendizaje nos ha resultado muy costosa.

Yii Framework: como resultado del fracaso a la hora de conseguir ejemplos y documentación de Zend, probamos el framework de Yii. En este caso, la documentación está muy detallada y en poco tiempo puedes tener funcionando la aplicación. Tiene un generador de código para crear las pantallas de alta, baja, modificación y borrado partiendo de una tabla de bbdd y la estructura de carpetas en las que cuelgan cada uno de sus ficheros es realmente simple de entender. 

Los dos libros que se pueden conseguir en Amazon son de gran ayuda para entender el funcionamiento de este framework y además tiene una integración con punit para la gestión de pruebas unitarias. La única pega que encontramos es que debíamos profundizar en el conocimiento de sus instrucciones (por ejemplo CHtml::textField($name,$value,array('submit'=>'')); permite crear un campo de texto), pero lógicamente en cualquier framework íbamos a tener ese problema.


Llegados a este punto, parecía claro el framework a emplear. Sin embargo, existía una tercera opción, teníamos  pues un as bajo la manga.



Las líneas de investigación no sólo se basaban en el estudio de frameworks del mercado, sino también en la posibilidad de creación de un framework propio!!!!

¿Porqué inventar la rueda cuando ya está inventada y probada? La respuesta es sencilla. cubenube ha surgido no como una empresa más que quiere hacer lo mismo que nuestra competencia. 

Queremos ser diferentes, no dejarnos llevar por la corriente sino abrir los ojos (EyeOS) y ver aprender de los mejores (Facebook). Por eso la división de las líneas nos llevó a la conclusión de que aunque los frameworks desarrollados podían ser una buena alternativa, a medio plazo nos podríamos encontrar limitados y no tendríamos tiempo a reaccionar, por lo que decidimos optar por crear nuestro propio framework.

¿Cómo se construye un framework MVC? Aunque a simple vista puede parecer complicado, nuestra experiencia ha demostrado que es más sencillo de lo que parece. En Internet hemos encontrado varios ejemplos incompletos de frameworks, pero intentaremos ir dando algo de luz en los próximos blogs, donde iremos desbrozando un ejemplo COMPLETO (y sin coste..;) ) de cómo podéis construir vuestro propio framework y esperamos nos ayudéis a mejorarlo.

Referencias y enlaces interesantes

Manuales Yii:
Comparativa Frameworks:



Diseña tu propio framework:

                                                               Creating a MVC Framework, 1ª Parte



Creating a MVC Framework, 2ª Parte




Creating a PHP Template Engine

No hay comentarios:

Publicar un comentario