Components d’accés a twitter

A 2nDAM hem desenvolupat un projecte que cobreix resultats d’aprenentatge de dos mòduls: M6, accés a dades, i M9, sòcols i serveis. Els alumnes han hagut de dissenyar i desenvolupar un component Java integrable a un servidor, amb les següents característiques:

  • El component implementa un petit API on els paràmetres i el valor retornat són en format JSON:
public interface ICommander {
    JSONObject execute(JSONObject command);
}

Aquesta és la proposta de protocol per a enviar aquestes comandes:

La comanda a executar ha d’incloure un atribut anomenat “comanda”, i el resultat, un atribut “success”, que indica si l’execució ha estat correcta.

  • El component pot rebre esdeveniments en format JSON de la resta de components (es comporta com un oient):
public interface IEventListener {
    void handleEvent(JSONObject event);
}

Aquest és un exemple d’esdeveniment, “s’ha enviat una salutació”:

L’esdeveniment ha d’incloure dos atributs obligatoris: “source”, que identifica qui l’envia, i “type”, per identificar el tipus d’esdeveniment.

  • Els components també poden generar esdeveniments, i per tant poden registrar i desregistrar oients:
public interface IEventSource {
    public void registerListener(IEventListener listener);
    public void unregisterListener(IEventListener listener);
}

Això crea un ecosistema de components que es descobreixen automàticament mitjançant un ServiceLoader, un proveïdor de serveis de la JRE, en una mena d’arquitectura de microserveis. Cada component declara quines comandes implementa:

public interface IComponent extends ICommander {
    String getName();
    String[] getCommands();
}

Els alumnes empaqueten els seus components en arxius JAR que pugen al servidor, on són reconeguts en arrencar-lo.

Ecosistema

L’objectiu era desenvolupar serveis al voltant de Twitter, i que poguessin activar-se a un esdeveniment públic, com la fira d’FP de Sabadell. Es va desenvolupar un component que accedís a l’API de desenvolupador de Twitter, i que pogués enviar posts i rebre notificacions amb el stream en viu que proporciona l’accés de desenvolupador a la plataforma Twitter.

Addicionalment, es requeria una forma de persistir els paràmetres de cada component. Per això, es va proveir als components dels alumnes amb un component auxiliar anomenat “Storage“, que permet emmagatzemar i recuperar dades del component durant el seu cicle de vida.

Comandes

La comunicació amb els components es pot realitzar dins de la mateixa JRE, fent crides directes, o bé mitjançant sòcols. Aquesta segona opció permet implementar aplicacions situades fora del servidor, i que utilitzin els components desenvolupats.  L’exemple seria el treball a M3 dels mateixos alumnes per a desenvolupar aplicacions JavaFX que es connecten als components.

El següent diagrama explica el funcionament d’una comanda enviada des d’una aplicació cap a un component que fa ús del component Twitter.

  1. S’envia la comanda2
  2. El gestor mira a quin component li correspon
  3. S’invoca la comanda
  4. El component2 crida el component Twitter
  5. Twitter reb la petició i retorna fins a l’aplicació

Esdeveniments

El següent diagrama explica com es rep un esdeveniment des de Twitter, com pot ser una notificació de què ha arribat un tuit.

  1. Arriba un tuit pel stream
  2. El component Twitter el converteix en esdeveniment
  3. L’esdeveniment s’envia a tots els oients, components i/o aplicacions

Els components implementats es poden veure en aquesta entrada.

Es pot veure el codi font a Github i uns apunts amb conceptes de teoria.

Deixa un comentari

L'adreça electrònica no es publicarà Els camps necessaris estan marcats amb *