hola,
estoy diseñando un framework/cms bastante generico para el desarrollo y mantenimiento rapido de paginas web (aunque seria lo bastante extensible como para adaptarse a otros medios, sean aplicaciones RIA, facebook, etc.)
estoy buscando ideas y propuestas, estoy actualmente desarrollando la version 0.3pre, la version 0.2 es funcional pero no me convence
este es el diseño que tengo en mente ahora mismo:
(NOTA: el framework sigue, principalmente, la arquitectura MVC pull)
los datos son recursos, que es una clase que contiene el modelo de datos (acepta varias ORM a traves de una api publica bastante sencillita, asi intenta no meterse mucho en como almacenas los datos) y expone una interfaz CRUD al resto del framework asi como una interfaz JSON/XML publica configurable (puedes elegir que recursos exponer) y se encargan de toda la logica de los datos
los controladores (en realidad los llamo aplicaciones, porque pueden ser montados de forma separada) obviamente tienen una interfaz con el enrutador y el servidor de aplicacion, pero esto es meterse en detalles especificos de la plataforma para la cual estoy desarrollando y a mi me interesa el diseño general, asi que lo obviaremos
asi, los controladores enrutan las peticiones http hacia o una vista o un recurso, de forma que si la peticion es un create, update o delete no hace falta vista y simplemente llamara al recurso
las vistas (soportara varios lenguajes de template, por el momento solo soporta uno) tienen componentes, que son los que realizan la funcion de pull y son basicamente controladores reusables. los componentes son capaces de guardar su estado si hace falta, de forma que pueden usarse como widgets independientes (entre otras cosas, para usar ajax facilmente), pero en su forma mas basica simplemente interpretarian los datos del read de un recurso
los componentes tambien tendrian sus propias vistas, en principio una para cada estado del componente
luego para la administracion habia pensado separar el administrador de recursos (basicamente haria un scaffolding a lo django, con una configuracion por defecto mas o menos inteligente, basada en el tipo de datos)
y el administrador de diseño, que proporcionaria una serie de facilidades a la hora de editar y mostrar vistas previas de los templates, ademas de facilidades a la hora de llevar el versionado de los templates mediante git, con post-commit hooks que publiquen al sitio de staging (a este punto le falta trabajo)
basicamente seria eso, la mayor parte de la funcionalidad ya la tengo lista en la version actual, aunque quiero limpiar un poco el codigo y añadir otras cosas. lo que he puesto aqui es solo una vision rapida del esqueleto del framework, tambien llevaria 'de fabrica' una serie de componentes y modulos que facilitarian cosas comunes como autentificacion, autorizacion, internacionalizacion, etc.
como dije antes, busco ideas y opiniones sobre este estilo de arquitectura, sinceramente mi proyecto no esta pensado para que lo use todo el mundo pero es mi idea del framework/cms perfecto y solo busco saber si a alguien mas le interesan estas cuestiones
todo el codigo estara disponible bajo una licencia del estilo de la BSD o MIT, vamos, que sera totalmente libre y estara permitido cualquier uso, comercial o no comercial (digo por si a alguien le interesa)