要引用一個插件公開的服務到另一個Eclipse插件我有兩種方法Eclipse擴展點VS手工編程訪問
1)擴展點(複雜)
2)只要使用的BundleContext得到的名單束,然後通過服務引用訪問其他Eclipse插件 並調用相應的服務(很容易)
我可以看到,2是更容易比1)
所以是2的權利 辦法?
爲什麼1)發明呢?
要引用一個插件公開的服務到另一個Eclipse插件我有兩種方法Eclipse擴展點VS手工編程訪問
1)擴展點(複雜)
2)只要使用的BundleContext得到的名單束,然後通過服務引用訪問其他Eclipse插件 並調用相應的服務(很容易)
我可以看到,2是更容易比1)
所以是2的權利 辦法?
爲什麼1)發明呢?
你可以找到here擴展和OSGi服務的一個很好的比較。沒有對錯之分(恕我直言,擴展點機制並不複雜,工具更好,...),在某些情況下,其中一個更好。 Eclipse的早期版本不是基於OSGi的,所以OSGi-way從Eclipse 3.0開始就可用。
既不是(1)也不是(2)是正確的。
(1)根本與OSGi服務無關。這是一個完全不同的用例。
(2)你已經做得比必要的複雜得多。您只需使用聲明式服務即可獲得對要使用的服務的引用。不要去發佈服務的包,因爲你不應該知道或關心哪個包是服務的來源。
但是如果我的服務是有狀態的並且保持狀態,我需要去特定的包。我打算使用單身包作爲我的服務的來源。 – seahorse 2012-02-23 03:19:49
如果我讓我的服務實例類爲靜態和單例,那麼我可以避免去特定的包? – seahorse 2012-02-23 04:30:32