Bienvenido a la serie de tutoriales sobre Raptor 2, me pareció apropiado el título de este capítulo debido a los nuevos cambios en el sistema, aunque prefiero llamarlo evolución. Haciendo un poco de historia ya el proyecto lleva casi 2 años desde que se comenzó a cocinar la idea, respondiendo a los principios en los que todos acordamos que debería cumplir. Para el proyecto y en mi caso personal defender el principio de reducción de la carga cognitiva y de la curva de aprendizaje es fundamental. Que nos hallamos planteado este principio para nada ha significado que hemos triunfado del todo, de hecho gracias a las sugerencias, experiencias e incluso a necesidades no articuladas y detectadas a partir de la experimentación y observación en Raptor Nemesis, hemos evolucionado a mejoras que tributan a nuestro principal objetivo.
Pues bien, empezando el primer cambio dentro de Raptor 2 es el abandono del viejo core y la utilización de Slim microframework en su lugar. Después de mucho probar y experimentar terminamos enamorándonos de Slim para ocupar el lugar del core, con mucha documentación disponible y actualizaciones bastantes periódicas.
En los inicios del proyecto decidimos basar la arquitectura del framework en la propuesta por Symfony, nos pareció bastante adecuado debido a que muchas personas dedicaban y dedican aún tiempo en el aprendizaje de este framework, por los que nos daba la oportunidad de reducir la carga cognitiva ya que todo lo que había que aprender ya se había aprendido con Symfony. ¿Bueno… y el que nunca vio Symfony? En ese caso tendríamos a favor que existe mucha documentación para lograr el objetivo.
¿Qué cambió? Gracias a la retroalimentación de todo tipo de desarrolladores, llegamos al resultado de que existían numerosos factores dentro de esta arquitectura y en particular en las formas de configuración, que complicaban sino que casi destruían el principio que se estableció. Así que para Raptor 2 se decidió la eliminación de archivos de configuración innecesarios, encadenación y definición de rutas a través de configuración y en general de todo aquello que pudiera generar una tarea más y que pudiera ser realizada por el framework. La arquitectura resultante a la vista bastante similar, pero con una reducción significativa de todo aquello que implicaba una carga más.
En términos tangibles todas las declaraciones de rutas para el enrutamiento queda delegada a su definición en los propios controladores a través de anotaciones. Además de agrupar y remover todas las configuraciones excesivas esto garantiza que toda la definición esté donde por responsabilidad debe estar, tributando a la arquitectura orientada a componentes. La locación de configuración general del sistema o app queda delegada solo a las responsabilidades que les corresponde, como la configuración de base de datos y otros parámetros que son y deben ser independientes al funcionamiento de los componentes.
Integración con las librerías de lado del cliente
El que ya ha trabajado con Raptor Nemesis sabe que uno de los principales aportes es su integración con las librerías del lado del cliente, en particular con Extjs y jQuery. Pues bien, hay más buenas noticias, Raptor 2 mejora considerablemente esta integración con la unificación de las funciones del lado del cliente en un solo núcleo javascript, que aporta todas aquellas funciones necesarias en cualquiera de estas tecnologías. Además Raptor siempre garantiza a pesar de no linkear ninguna librería, funciones básicas que son accesibles a través de javascript en el lado del cliente, esta característica es independiente del núcleo planteado anteriormente, ya que este núcleo es el puente entre la tecnología en específico y Raptor.
Por supuesto nunca estará de más decir que una de las máximas para el framework es la integración con las librerías del lado del cliente, garantizando la protección en la transmisión de datos y dando soporte completo a las comunicaciones asíncronas.
Nuevas funciones
Dentro de las nuevas características se incluye un mecanismo de view plugins completamente definible y manejable. Esto se traduce en que es posible establecer un punto de escape de contenido donde queramos y utilizarlos luego en cualquier componente.
La implantación de AOP(programación orientada a aspectos) y la definición de reglas de rutas también aparecen en esta versión como nuevas características. Su utilización está diseñada para la definición de Aspectos y Reglas dentro de los componentes incluyendo el registro en los respectivos contenedores.
Siguiendo nuestro principio nunca abandonamos la idea de que todas las funciones proporcionadas por Raptor puedan realizarse a través de interfaces siendo capaces de garantizar la abstracción para cualquier tipo de desarrollador, aunque sé y me consta que la consola tiene sus amantes. ¡¡ Pues bien !! Raptor es para todos, el concepto de realizar todas estas acciones a nivel de interfaz garantiza la accesibilidad tanto para unos como para otros.
Componentes de abstracción
Tanto en Raptor Nemesis como en Raptor 2 estos componentes siguen siendo quienes garantizan en mayor medida la abstracción necesaria en el desarrollo. La inclusión de nuevos componentes con nuevas funciones tributa a esa mejora necesaria. Dentro de los nuevos componentes aparece Interactive Guide encargado de las guías interactivas de usuario.
Para esta versión aparece nuevamente Syntarsus Security Module con muchos cambios, inclusión de nuevas características, mejoras en las técnicas de protección contra ataques y los procesos de identificación-autenticación, autorización y auditoría. Además con un mejor soporte a las rutinas de instalación y exportación.
El nuevo componente de instalación garantiza de forma visual la importación e instalación de nuevos componentes o la instalación directa desde el repositorio interno existente. Para dar soporte a todo este proceso se implantó en la estructura de bundles el concepto de manifiesto de instalación. Este concepto determina el estado en que se encuentra el bundle y directivas de instalación para Raptor. De esta manera el sistema implementa también la detección e instalación automática de bundles y la remoción de falsos positivos o bundles fantasmas.
Bueno he resumido bastante todos los cambios, tiempo de que nos volvamos prácticos y empecemos. Antes agradecer a todo al que ha puesto su grano de arena esta vez.
Proceso de Instalación
Al igual que la versión anterior el proceso de instalación no pasa de ser sencillo, lo único que necesitamos es descomprimir en nuestro servidor las fuentes de Raptor 2. Si te encuentras en Linux debes otorgarles permisos a la carpeta descomprimida sudo chmod -777 /Raptor2 .
Hasta este punto ya raptor es plenamente funcional y está instalado, solo falta su configuración que como verás no es algo del otro mundo.
Para comprobar que todo está bien, ejecútalo en tu navegador en la dirección:
http://localhost/Raptor2/web/dev.php
Bueno hasta aquí la primera parte, pronto seguiré dando los detalles de esta nueva versión. Recomiendo que si estás empezando nuevo utilices la nueva versión que está mucho mejor preparada.
