簡體   English   中英

OSGI中的服務和組件

[英]Service and Component in OSGI

我對OSGI概念有些疑問,但是需要澄清它們以更好地理解概念。 誰能告訴我OSGI Service和Component有什么區別。 我所知道的是,服務就像Java中的接口文件一樣,可以由其他服務或組件使用。 而組件就像服務的特定實現。

請讓我知道我是否做錯了,或者建議一些鏈接,從這些鏈接我可以很好地弄清事情。

OSGi核心規范定義了服務模型,這是OSGi概念的關鍵部分。 服務是實現聲明類型(通常是接口)的對象(實例)。 OSGi框架提供服務層,該服務層是服務提供者和服務使用者之間的代理。

DS引入了服務組件的概念,它們是捆綁包中的類,由DS運行時(SCR)管理。 組件由捆綁包中的XML描述,由SCR讀取。 這些組件一旦實例化並聲明為服務,便可以由SCR注冊為服務。

因此,組件可以是服務(但不一定是服務),並且可以使用服務。

OSGi演化了服務的概念,因此捆綁包可以減少它們與其他捆綁包的耦合-即。 實現松散耦合。 “最松散”的耦合來自於使用動態服務,其中當消費者注冊使用這些服務時,會動態啟動產生服務的捆綁包。 動態服務模型在OSGi中經歷了幾次演變,包括服務注冊和事件監聽,服務跟蹤器以及最終的聲明式服務。

除最后一個(聲明性服務)外,所有服務注冊代碼都放在捆綁軟件的激活器中。 使用Declarative Services,公開服務的捆綁包稱為組件,並且在框架可以理解的component.xml文件中聲明它-不需要激活器。 在Eclipse IDE中,可以通過右鍵單擊捆綁包並添加“組件定義”來使用聲明式服務。 關於該主題有一本非常不錯的書,它通過教程向您介紹了該技術:

OSGi和Equinox

暫無
暫無

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

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