ウィキペディアによると、
サービス コンポーネント アーキテクチャ (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 コンポーネントが分離されているのと同じ意味で独立 (分離) できますか?