Точки расширения Eclipse против ручного программного доступа - PullRequest
1 голос
/ 22 февраля 2012

Чтобы ссылаться на сервисы, предоставляемые одним плагином в другой плагин Eclipse, у меня есть два способа

1.) Точки расширения (сложные)

2.) Просто используйте BundleContext, чтобы получить список пакетов, а затемполучить доступ к вашему другому плагину Eclipse через ServiceReference и вызвать соответствующие службы (очень просто)

Я вижу, что 2 намного проще, чем 1.

Так что, 2 правильный путь?

Почему был 1.) изобретен тогда?

Ответы [ 2 ]

4 голосов
/ 23 февраля 2012

Ни (1), ни (2) не являются правильными.

(1) просто не имеет ничего общего с OSGi Services.Это совершенно другой вариант использования.

(2), который вы сделали намного сложнее, чем необходимо.Вам просто нужно использовать декларативные сервисы, чтобы получить ссылку на сервис, который вы хотите использовать.НЕ переходите к пакету, который публикует сервис, потому что вы не должны знать или заботиться о том, какой пакет является источником сервиса.

3 голосов
/ 22 февраля 2012

Вы можете найти здесь хорошее сравнение расширений и OSGi-сервисов. Нет правильного или неправильного (ИМХО механизм точек расширения не сложен, инструменты лучше, ...), в некоторых сценариях один лучше, в другом другой. Eclipse в своих ранних версиях не основывался на OSGi, поэтому OSGi-way доступен начиная с Eclipse 3.0.

...