Moodle WebServices

Development Blog about the Moodle Webservices API and interoperability Issues

May 02 2008

API, servicios y paquetes

Published by Ferran Recio Calderó at 5:57 pm under API, Castellano

Como ya se comentó en el porqué de los webservices en Moodle, los webservices permiten que un cliente se conecte a Moodle y pueda acceder a un conjunto de funciones públicas de la API.

La arquitectura en tres capas garantiza que las funciones que conforman la API puedan ampliarse independientemente de los conectores. De hecho, pese a que en un inicio hemos empezado por la implementación de las funciones de gestión académica que requiere la comunidad de Moodle (el paquete básico), está previsto que se amplíe con los servicios de los módulos (fòrum, wiki, recursos), bloques, desarrollos a medida…

Así, con el tiempo la API se completará con un número variable de funciones que, en muchos casos, cubrirán necesidades alternativas a la gestión académica (interfaces adaptadas, acceso desde móvil, monitorización remota…). Por éste motivo, a medida que la API crece, las funciones se agrupan en servicios, para que el cliente elija cuales necesita.

Por ejemplo, las funciones de control de usuarios formarían parte del servicio “user”, mientras que el de acceso a los mensajes de los foros podría ser el servicio “forum” .

Sin embargo, esta estructura sólo nos garantiza un único nivel de servicios, identificados por nombre. En caso que una organización quiera añadir más, deberán añadirse en el mismo sitio. Y si un cliente necesita, por ejemplo, todos los servicios de los módulos tendrá que pedirlos uno a uno, dado que el webservice no puede diferenciar qué servicios son de los módulos y cuáles no.

Por éste motivo los servicios de agrupan en paquetes (Fig 1). El sistema de paquetización es muy común en los lenguajes de programación estructurados como Python. En el caso de la API, todos los servicios pertenecen a un único paquete o al paquete básico (que se incluye siempre por defecto y contiene las funciones básicas de navegación, login…).

En los ejemplos anteriores, la gestión de usuarios estaría dentro del paquete básico, por lo que se llamaría “user” sin más, y el servicio de los foros estaría dentro del paquete “mod”, por lo que sería “mod.forum”.

packages

Fig.1 Diagrama de la paquetización

Gracias al sistema de paquetización es possible:

  • Programar varios servicios a medida y agruparlos en un único paquete de modo que sea menos intrusivo en el sistema.
  • Mantener ordenadas las librerías de servicio que conforman un paquete.
  • Cada cliente podrá requerir un servicio concreto (por ejemplo el servicio “mod.forum”) o todos los servicios de un paquete (por ejemplo, “mod.*” incluye todos los servicios del paquete “mod”).
  • A nivel de Moodle, será posible conectar y desconectar los servicio que se ofrecen a los clientes, tanto a nivel individual como de paquete.

A modo de resumen, la API del webservice es el conjunto de servicios que están disponibles dentro de los paquetes.

Trackback URI | Comments RSS

Leave a Reply