« El dia M | Página de inicio | Queja a Gmail »

07.04.2005

Modularizando una aplicación (aspecto lógico)

No se porque se me metió en la cabeza la idea de modularizar las aplicaciones que vaya a hacer de aca en mas, asi que me arece bien antes de seguir haciendo nada plantear un esquema lo mas sólido posible que me sirva de base para luego montar sobre esta estructura cualquier otro desarrollo.

La idea es lograr una lógica multiplataforma aunque el desarrollo hecho por mi, mas que seguro que estará hecho en PHP y MySQL (tal vez mas adelante en JSP).

La idea

Una aplicación típica se compone de una base de datos donde se almacena la información y archivos con código lógico, que procesan a la misma. La combinación de los mismos da como resultado a «la aplicación».

Esquema básico de una aplicación

En este caso, la aplicación va a estar divida en dos partes principales:

  1. El núcleo.
  2. Los módulos.

El núcleo

Este contendra los aspectos generales de la aplicación misma, osea, lo que es común a todas las funcionalidades. Pensando yo llegué a la conclusión de que son:

  • Manejo de usuarios (creación, acceso y niveles de seguridad).
  • Administración de módulos (alta, baja y modificación).

Luego todas las demás funcionalidades ya van a estar dadas por los módulos mismos y no van a tener nada en común entre sí. A excepción de un detalle mas:

Ya que este «núcleo» lo voy a usar de base para todos (o la mayoría) de proyectos que haga de aca en mas, quiero incluir el concepto de dashboard, que vendría siendo algo asi como un resumen de lo último que está pasando en cada módulo. Por ejemplo los ultimos mensajes del foro, pedidos llegados, tickets de error, etc.

Para solucionar el dashboard, quiero aprovechar de una funcionalidad que van a tenr todos los módulos: sindicación del contenido por XML. Entonces el dashboard sería solo un leedor de feeds RSS que levantaria los ultimos n feeds de cada módulo :).

Los módulos

Cada módulo en principio deberá respetar las premisas dadas por el núcleo, sino no hay forma de que sea compatible con el mismo. Los puntos mas importantes son:

  • Niveles de acceso de los usuarios.
  • Sindicación de su contenido (voy a usar RSS asi que no hay mucho por aclarar).
  • Acciones que puede realizar cada usuario (por ahora va a depender del nivel de acceso de cada usuario).

Lego de eso, cada módulo traerá su propio paquete de archivos lógicos y estructuras de datos que se añadirán en forma suplementaria al núcleo de la aplicación. Con ésto quiero decir que no afectarán ni modificarán en nada al funcionamiento del núcleo, solo serán nuevas y distintas aplicaciones que correrán dentro del núcleo de la aplicación que en este caso es el acceso y permisos de usuarios. Utilizando a estos mismos para definir que acciones pueden y cuales no realizar de acuerdo a su nivel de acceso general.

Ejemplo práctico: Un módulo de foro en el que un usuario ingresa con nivel de acceso de administrador tendrá disponibles en ese módulo, las acciones de bannear usuarios o cerrar posts.

En fin, la idea está planteada, ahora hay que sentarse a programar!

BTW: Es mas que probable que esto sea liberado como GPL ;).

00:05 Anotado en Desarrollo | Permalink | Enviar a Email

Comentarios

Interesante planteamiento.

Anotado por: stan | 07.04.2005

Hola...soy un lector nuevo....

Muy interesante ver esto, hace poco habia pensado (con bastante menos detalles...) hacer un (Como se llama?? plantilla, framework.. como sea...) para mis aplicaciones y habia llegado a una conclusion similar con respecto a los usuarios y sus permisos, no se me habia ocurrido lo dashboard, pero parece ser una gran idea.

En fin, espero a que sea liberado! ;) o mejor, si hay alguna forma de contribuir decime.

JmN

Anotado por: JmN | 08.04.2005

Por supuesto JmN, segui aportando tus opiniones en los siguientes posts del tema asi pensado de a mas gente se logra algo mas cuidado y efectivo :).

Y sip, seguramente lo libere al código, no le veo sentido guardarme para mi algo tan amplio y que puede mejorar a muchos desarrollos y servir de base a los mas nuevos :).

Anotado por: Diego | 08.04.2005

Dejar un comentario