疎結合のメリットが活きるWebサービス

文:Jeff Hanson(TechRepublic) 翻訳校正:村上雅章・野崎裕子
2008-01-07 08:00:00
  • このエントリーをはてなブックマークに追加

結合を緩やかに保つ

 すべての結合が悪いというわけではない。実際のところ、ちょっとしたプログラムにはすべからく、何らかの結合が必要となる。しかし、結合がアプリケーションの機能を制限する場合、その結合は問題を引き起こすことになる。こういった制限は、アプリケーションの開発時やテスト時、配備時に表面化する。ほとんどのアプリケーションでは、コンポーネント同士の結合をできるだけ最小化することで、さまざまなメリットがもたらされる。

 疎結合のコンポーネントは、コンパイル時に行われる静的な結合とは対照的に、実行時に動的に互いの位置を特定し、通信を行う。これはしばしばレイトバインディング(遅延束縛)と呼ばれる。これにより疎結合のアプリケーションでは、密結合の課す制約に縛られることなく、思い通りの配備を行うことが可能になる。このため、アプリケーションが本番でどう配備されるかを設計に織り込まずとも、アプリケーションを実際に配備する段階で適切な決定を下すことができるようになるのだ。

 アプリケーションコンポーネントの結合を分離するもう1つの方法は、要求や応答に関連する結合を取り除くことである。これは非同期アプリケーションを用いることで可能となる。時間的な結合の分離はすべてのアプリケーションで可能となるわけではないものの、このパワフルなテクノロジによって、即時対応が現実的ではないと思われているようなアプリケーションに対して大きなメリットがもたらされる。

緩やかな結合を促進するSOA

 SOA(Service-Oriented Architecture)によって、サービスと、アプリケーションのその他のコンポーネントとの間の緩やかな結合を促進する組み込みメカニズムが提供される。SOAによって、サービスとその他のコンポーネントとの間に存在する位置やプロトコル、時間に関する結合の分離が促される。

位置の透過性

 サービスには位置の透過性が備わっていなければならない。言い換えれば、サービスはどこにでも配置できなければならず、他のコンポーネントやアプリケーションから動的に検出、利用できるようになっていなければならないということである。SOAではサービス登録を用いることで、位置の透過性を実現するためのメカニズムが提供されている。

 サービスは一般的に、データベースやディレクトリサービス、UDDIレジストリ、XMLファイルといった公的もしくは私的なレジストリに登録される。いったんサービスが登録された後は、そのサービスを呼び出したいコンポーネントがレジストリを使用して該当サービスの場所を特定し、呼び出すことになる。サービスの登録と検索はSOAプラットフォームを介して行われるため、サービスがいつ、あるいはどのように配備されるかについて知っておく必要はない。

プロトコルからの独立

 また、サービスはプロトコルからも独立している。つまり、サービスは通信に用いられるプロトコルが何であろうと関係なく、同じように操作できるのである。サービスは通信に用いられるプロトコルについて一切関知する必要がない。通信プロトコルのサポートはSOAプラットフォームによって行われる。プロトコルは言語やXML、規格に基づいたものであるかもしれず、あるいはまったく別のものかもしれない。しかしここで重要なことは、サービスを通信プロトコルから独立したかたちで開発できるという点にある。SOAでは、新たな通信プロトコルの追加が可能となっており、まったく新たなクライアントを追加しても、サービス自体に影響を与えることなくそのサービスを使用し続けることができるようになっている。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]