私は Spring について最も詳しいわけではありませんが、IBM の WebSphere Integration Developer IDE と、それがデプロイされる環境 (WebSphere Enterprise Service Bus および WebSphere Process Server) で SCA を扱ったことがあるため、SCA にはかなり精通しています。
それはすべて、抽象化と、開発者が最も重要なこと、つまりビジネス ロジックに集中できるようにするという考え方に関係しています。私たちは皆、オブジェクト指向プログラミングの概念と、その抽象化が「実世界」をより適切に表現する方法に精通しています。次に、Web サービスとサービス指向アーキテクチャーのアプローチが登場します。Web サービスは、ロジックの背後にある言語に依存しないようにすることで、ロジックをさらに抽象化します。現在、C++、.Net、Java、さらには RPG、COBOL など、Web サービスの背後にある可能性のあるものは何でも. CORBA やライブラリなどに依存しない方法で、言語とシステムを相互に対話させることができます。
SCA (Service Component Architecture) は、SOA を次のレベルに引き上げようとします。別のシステムまたはサービスとの通信に使用されるプロトコルとアドレスを抽象化しようとします。その理由は次のとおりです。Web サービスを操作する場合、開発者として、プロトコルを操作し、多くのボイラープレート コードを記述またはフックする必要があります。http か https かを知る必要があります。(Java の世界で) JAX-RPC、JAX-WS 2.0、JAX-WS 2.1、JAX-WS 2.2、または JAX-RS (REST ベース) のいずれであるかを知る必要があります。JSON、XML、SOAP のいずれを使用しているか、SOAP の場合は 1.0、1.1、または 1.2 のどれであるかを知る必要があります。また、場合によっては、アプリケーション サーバーのベンダーが特定のものをどのように実装しているかを知る必要さえあります (そうすべきではありませんが、場合によってはそうなる可能性があります)。次に、Web サービスが別のサービスと通信するようにしたい場合はどうなるでしょうか。しかし、その 2 番目のサービスはたまたまメッセージング ベースです。それはJMSを意味しますか?MQ?JMS オーバー MQ? 他の?では、純粋な HTTP POST と GET についてはどうでしょうか?
ここで SCA の出番です。SCA は、サービスのエンドポイントを抽象化し、開発者からプロトコルの実装を隠そうとします。サービスが必要な場合は、SCA API を介して検索し、サービスを呼び出します (メソッドは実行だと思いますか?少なくとも、IBM の SCA の拡張機能にはあります)。とにかく....これで、通信しているサービスが JAX-WS 2.1、REST、または MQ であることを知る必要はありません。SOAP/HTTP、JSON/XML、SOAP/JMS などを扱っていることを知る必要はありません。SCA はこれをすべて隠します。異なる実装のサービスを相互に接続できるため、共通の「サービス インターフェイス」を介して相互に通信できます。
ご想像のとおり、これは既存の抽象化されたテクノロジの上にある、抽象化とテクノロジの別のレイヤーです。しかし、自分で見たので、調べる価値があると思います。私は、IBM と Apache (そして、現時点では思い浮かばない他の企業もあると思います) が SCA 標準の策定に取り組んでいることを知っています。(実際、IBM のバージョンの SCA は、Apache が提示したオープン スタンダードに基づいて構築されています。SCA をサポートする他のベンダーも同じことを行うことを願っています。)
時間をかけて見る価値はあると思います。プロトコルに基づいたサービスの統合ではなく、サービスのビジネス ロジックに集中することができます。これは、サービスが実際に提供する価値です。