0

ウィキペディアによると、

サービス コンポーネント アーキテクチャ (SCA)は、サービス指向アーキテクチャ (SOA) の原則に従うアプリケーションを作成するために使用されるソフトウェア テクノロジです。これは、次のような多くの利点を備えた開発モデルです。

  • サービス実装の詳細からのビジネス ロジックの分離。

  • XML、BPEL、XSLT だけでなく、C++、Java、COBOL、PHP などの多数の言語でサービスをサポート

  • One-Way、Asynchronous、Call-Return、および Notification を含むさまざまな通信構造をシームレスに操作する機能。

  • Web サービス、EJB、JMS、JCA、RMI、RPC、CORBA などのテクノロジによって通常アクセスされるレガシー コンポーネントまたはサービスに「バインド」する機能。

  • セキュリティ、トランザクション、信頼できるメッセージングの使用など、サービスの品質要件を (ビジネス ロジックの外で) 宣言する機能

  • データはサービス データ オブジェクトで表すことができます

私は付け加えます、

  • 異なるモジュール (コンポーネント) 間の疎結合。

私は SCA テクノロジを使用して単純なソフトウェアを実装しました。また、 Tuscany Tutorialの助けを借りて、SCA の異種性とそのプラットフォームの独立性が持つ力を理解することができました。

今日、私は少し関連していると思われる別のモデルを見ています。これはDeclarative Services Component Model (DS)であり、OSGi サービスを公開および/または参照するコンポーネントの作成を簡素化するコンポーネント モデルです。DSではバンドルリソースにXMLコンポーネント宣言ファイルを追加することで、OSGIバンドルをコンポーネントとしてラップしているようです。XML ファイルには通常、バンドル サービスの宣言と参照が含まれており、SCA 複合ファイルに類似した内容になっています。このようなファイルの例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="it.eng.test.ds.consumer">
   <implementation class="it.eng.test.ds.consumer.Consumer"/>
   <reference bind="bindHappy" cardinality="0..1" interface="it.eng.test.ds.happy.IHappy" name="IHappy" policy="dynamic" unbind="unbindHappy"/>
   <reference bind="bindSad" cardinality="0..1" interface="it.eng.test.ds.sad.ISad" name="ISad" policy="dynamic" unbind="unbindSad"/>
</scr:component>

私の質問は次のとおりです。SCA と DS の間に何らかの関係はありますか? DS は SCA の異種性とそのコンポーネントの分離を実現できますか? たとえば、DS は SCA コンポーネントなどのさまざまなプラットフォームとの間でサービスや参照を提供できますか? DS コンポーネントは、SCA コンポーネントが分離されているのと同じ意味で独立 (分離) できますか?

4

3 に答える 3

2

DS と SCA は補完的なものです。一方は他方の代わりにはなりません。DS を使用して OSGi サービスを構築できます。これらのサービスは、OSGi フレームワークで使用できます。SCA を使用して、複数のノードにまたがる大規模な SOA 設計を記述することができます。OSGi は、SCA コンポーネントの実装タイプにすることができます。そのため、OSGi を SCA の実装タイプとして使用する場合は、OSGi サービスに DS を使用してください。

于 2014-01-07T13:01:53.423 に答える