4 votes

Communication inter-plugin dans Eclipse

Est-il possible de créer des plugins Eclipse qui se découvrent automatiquement ?

Je suis en train de développer un ensemble de plugins qui doivent fonctionner dans deux situations principales :

  • individuellement
  • de concert les uns avec les autres.

Lorsqu'ils sont exécutés individuellement, les plugins doivent "juste fonctionner", mais lorsqu'ils sont utilisés conjointement, ils partagent une partie du contenu du même modèle, et l'un des plugins doit présenter à l'utilisateur une liste d'autres plugins avec lesquels il peut partager le contenu, par exemple :

Foo Plugin a détecté ce qui suit plugins avec lesquels il peut partager des ontologies :

[ ] Bar plugin

[ ] Plugin Baz

[ ] Ne pas partager

Est-ce qu'Eclipse offre des méthodes de publication / détection internes qui faciliteraient ce genre d'auto-détection d'autres plugins ?

1voto

VonC Points 414372

La réponse devrait être par Service déclaratif qui combine les avantages des extensions xml d'Eclipse et des services POJO d'Osgi. Quelque chose qui est implicitement dynamique comme les services osgi, mais chargé "à la demande" comme les extensions eclipse.

Introduit en 2006 pour eclipse3.3, vous trouverez ces concepts illustrés dans cette présentation .

Les services déclaratifs offrent la possibilité de définir des références à d'autres services. Il est également possible de spécifier la cardinalité de la référence. La cardinalité est spécifiée à l'aide de deux nombres, le premier, 0 ou 1, indique l'optionalité, le second, 1 ou n, indique la multiplicité.

Dans la pratique, ces DS (Declarative Services) ne sont pas faciles à utiliser, car vous devez accéder au BundleContext, ce qui implique de garder la trace du BundleActivator, ce qui n'est pas toujours facile ...

Si ce dont vous avez besoin est de définir une sorte de modèle de composant orienté service, cette présentation devrait vous fournir les différentes alternatives existantes aujourd'hui, ainsi que le détail de ces "services déclaratifs".


Publier ce que le rcreswick a trouvé en relation avec le DS :

0voto

Robin Points 15032

Eh bien, le registre de services OSGI peut accomplir le partage de services basés sur pojo au moment de l'exécution, mais pas les plugins eux-mêmes. Il existe plusieurs options pour faciliter cela, telles que le codage direct vers l'API OSGI, les services déclaratifs, Spring DM et iPojo (je suis sûr qu'il en existe d'autres).

Vous pouvez consulter le Whiteboard Pattern comme un moyen d'accomplir une solution dynamique de style Observer/Observable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X