-1

OSGIの概念には少しばかげた疑問がありますが、概念をよりよく理解するには、それらを明確にする必要があります。OSGIサービスとコンポーネントの違いを教えてもらえますか?私が知っているのは、Serviceは、別のサービスまたはコンポーネントのいずれかで使用できるJavaのインターフェースファイルのようなものだということです。コンポーネントはサービスの特定の実装のようなものですが。

私が間違っているかどうか私に知らせてください、または私が物事をうまく得ることができるところからいくつかのリンクを提案してください。

4

2 に答える 2

3

OSGi Core仕様は、OSGiコンセプトの重要な部分であるサービスモデルを定義します。サービスは、宣言された型(通常はインターフェース)を実装するオブジェクト(インスタンス)です。OSGiフレームワークは、サービスプロバイダーとサービスコンシューマーの間のブローカーであるサービスレイヤーを提供します。

DSは、DSランタイム(SCR)によって管理されるバンドル内のクラスであるサービスコンポーネントの概念を導入しました。コンポーネントは、SCRによって読み取られるバンドル内のXMLによって記述されます。これらのコンポーネントは、インスタンス化され、サービスとして宣言されると、SCRによってサービスとして登録できます。

したがって、コンポーネントはサービスである可能性があり(ただし、そうである必要はありません)、サービスを使用できます。

于 2013-03-22T16:22:22.693 に答える
1

OSGiはサービスの概念を進化させたので、バンドルは他のバンドルとの結合を減らすことができます。緩い結合を実現します。「最も緩い」結合は、動的サービスの使用に由来します。動的サービスでは、サービスを生成するバンドルは、消費者がそれらのサービスを消費するために登録するときに動的に開始されます。動的サービスモデルは、OSGiで、サービス登録とイベントリスニング、サービストラッカー、そして最後に宣言型サービスを通じて、いくつかの進化を遂げました。

最後の(宣言型サービス)を除くすべてのサービス登録コードは、バンドルのアクティベーターに配置されます。宣言型サービスでは、サービスを公開するバンドルはコンポーネントと呼ばれ、フレームワークが理解するcomponent.xmlファイルで宣言されます。アクティベーターは必要ありません。Eclipse IDEでは、バンドルを右クリックして「コンポーネント定義」を追加することにより、宣言型サービスを使用できます。チュートリアルでテクノロジーを紹介する、このテーマに関する非常に優れた本があります。

OSGiとEquinox

于 2013-03-22T13:44:22.630 に答える