4

Spring で Java Web アプリケーションを開発した経験はありますが、SOA の世界ではあまり経験がありません。私は SCA- SCA4J - http://www.service-conduit.org/user-guide.pdf - について読んでいましたが、これの多くは Spring に非常に似ているようです。

私はSCAがどのような状況で役立つかを学ぼうとしていましたが、Springスタンドアロンを使用する場合にSCAが提供する機能/利点をまだ理解していません.

この古いブログ投稿を見つけました - http://rajith.2rlabs.com/2007/08/05/sca-vs-spring-a-reply-to-dans-post/ - しかし、SOA から特に目立ったものは何もありませんでした。専門用語。

Spring 開発者 (SOA 用語/方法論の世界では非常に環境に優しい) 向けの説明を誰かが提供できれば幸いです。

ありがとう

4

3 に答える 3

9

私は 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 をサポートする他のベンダーも同じことを行うことを願っています。)

時間をかけて見る価値はあると思います。プロトコルに基づいたサービスの統合ではなく、サービスのビジネス ロジックに集中することができます。これは、サービスが実際に提供する価値です。

于 2011-04-20T12:53:53.813 に答える
3

SCA は OASIS ( Assembly Specification ) によって標準化されているため、さまざまな実装 ( Apache Tuscanyや Fabric3 など)から選択できます。

SCA は、次の基本的なビルディング ブロックの観点からアプリケーションを定義します。

  • インターフェイス: 利用可能な操作を定義します
  • コンポーネント: 提供する「サービス」、必要な「参照」、および公開する構成可能な「プロパティ」に関して、実装アーティファクトを記述します。
  • binding: サービスまたは参照によって使用される通信プロトコルを宣言します
  • ポリシー: サービス、参照、または実装の非機能要件をキャプチャします。

SOA アプリケーションを構築するために、これらのエンティティーの具体的な「タイプ」がコンポジットに組み立てられます。例えば:

  • インターフェース: WSDL ポートタイプ、Java インターフェース
  • コンポーネントの実装: Java クラス、BPEL プロセス、Python、Spring
  • バインディング: JMS、Web サービス、RMI/IIOP
  • ポリシー: トランザクション、セキュリティ

さらに、SCA は、同期的および非同期的 (一方向を含む) の両方でコンポーネントを呼び出す統合クライアント API を定義します。Java の場合、これには注釈ベースの参照注入が含まれます。

これらの機能を組み合わせることで、異種テクノロジーから分散アプリケーションを簡単に作成し、バインディング、実装、インターフェース、またはポリシー テクノロジーを追加または交換することでそれらを進化させることができます。

于 2011-05-09T22:09:57.180 に答える
1

Spring Integrationは、リモートコンポーネントを透過的に相互に配線するための非常に優れたフレームワークを提供するため、SCAと比較する場合、基本的なSpringとは対照的にSpring Integration(http://www.springsource.org/spring-integration)を検討する価値があります。

于 2013-01-07T11:56:10.993 に答える