簡體   English   中英

2個Plugins之間動態共享數據Eclipse rcp

[英]Dynamic sharing of data between 2 Plugins Eclipse rcp

假設 eclipse rcp 應用程序中有兩個插件 P1 和 P2 可用。

P1 和 P2 都是由不同的構建過程分別構建的

在我的場景中,根據用戶的選擇,基礎產品中只有 p1、p2 或兩個插件可用。

當兩個插件都可用時,我想在插件 P1 和 P2 之間交換數據,否則插件將使用它們自己的數據。

OSGI 聲明式服務在我的場景中能否正常工作?

有什么方法可以公開返回 json 或來自插件 P1 和 P2 的字符串的服務 api 可以在不明確依賴它的情況下使用它,我的意思是,插件 p2 應該只在 p1 存在時使用它,如果不存在,它應該 function 為普通的。

好心勸告。

編輯:謝謝你的建議

我完全同意擁有一個通用插件將是理想的。

但是在我們的例子中,我們有一個基礎產品,不幸的是我們無法控制,我的意思是我們可以將任何插件添加到基礎存儲庫。

插件 P1 和 P2 是 2 個不同的產品,它們彼此獨立工作,但具有可以相互補充的數據。 我們喜歡從插件 p2 進行 api 調用,如果插件 p1 安裝在基礎產品上並使用數據來增強 p2 中的現有視圖,否則僅顯示 p2 數據。

我假設,使用 declerative 服務,插件 P2 可以使用作為 eclipse 標准插件的一部分的 osgi 規范 api 調用插件 P1 公開的 api,而無需在插件 P1 和 P2 之間添加任何依賴關系。 請讓我知道是否有任何選項可以實現這一目標。

當然,您可以有可選的依賴項——但我的建議是引入 P3,以保留公共數據。 使 P1 和 P2 依賴於該插件,並無條件地從通用“存儲”插件中檢索數據。

如果您使 P1 依賴於 P2(反之亦然),則需要將此依賴項設為可選,並且您將引入兩者的循環編譯時依賴項。 解決這種循環的一個好方法是引入一個通用的第三個模塊,它只是實現了共同的需求。

編輯:回答您的評論 - 如果您讓 P1 注冊 P2 引用的服務,那么 P2 將依賴於 P1 的服務接口,除非您從兩者都依賴的公共 P3 注冊 class 。 話雖如此,沒有什么可以阻止您將任意 JRE 類注冊為服務 - 這將是非常規且奇怪的 hack,但我想您可以將 HashMap 注冊為服務。 感覺不干凈、有異味、很老套、很奇怪——你的代碼的維護者可能會困擾你,但我想從技術上來說這是可能的。 我是否說過我不建議這樣做並且它很丑陋?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM