疎結合のメリットが活きるWebサービス
翻訳校正:村上雅章・野崎裕子
結合について簡単に説明した後、そのメリットを挙げるとともに、SOAにおける利用例としてWebサービスを取り上げる。
コンポーネント同士の結合を緩やかにすることで、互いが干渉し合うことなく独立した操作を行わせることが可能になる。そして、すべてのコンポーネントが常に利用可能であるとは限らないようなWebサービスを設計する際には、こういったコンポーネントがしっくりくる。
結合とは一般的に、鎖の輪のように2つのものを1つにまとめるという動作を指している。しかしソフトウェア開発においては、結合は普通、ソフトウェアのコンポーネントやモジュールが互いに依存している度合いを指している。コンポーネント同士が結びついている度合いによって、それらが密結合であるか、あるいは疎結合であるかが決定される。密結合のコンポーネントでは、各コンポーネントと、すべての副次的に依存するオブジェクトがコンパイル時だけではなく、実行時にも存在していなければならない。その一方、疎結合のコンポーネントは互いに独立して操作を行うことが可能である。
コンパイル時の結合
ソフトウェア開発においては、通常のプログラミング手法を用いて1つ以上のコンポーネントを互いに関連付けることで、結合が生み出されることになる。例えば、CやC++の開発者が外部ソースファイルを他のソースファイルからインクルードすると、結合が生み出されることになる。また、インポート文やインクルード文が使用されている場合には必ず、現在のクラスやファイルと、インポートされるクラスやファイルとの間に結合が生み出されるということになる。以下のコード片がそのことを示している。
#include#include "externalprocs.h" void doSomething(MyStruct* aStruct) { dumpStructContents(aStruct); }
このコード片には、外部ファイルをインポートする行が2行記述されている。最初の文はexternalstructs.hという名前のファイルをインクルードするというものである。ここではMyStructという構造体がこのファイル中に定義されていると仮定してほしい。そして2番目の文はexternalprocs.hという名前のファイルをインクルードするというものである。ここではdumpStructContentsという手続きがこのファイル中に定義されていると仮定してほしい。
このコード片はC言語を用いて記述されているため、コード同士の依存はすべてコンパイル時に生み出されることになる。これはアーリーバインディング(早期束縛)と呼ばれる。このコード片では、MyStructの構造や、dumpStructContentsのシグネチャを少しでも変更すると、doSomethingを含んでいるファイルと、dumpStructContentsを含んでいるファイルの再コンパイルが必要となるため、コンパイル時の依存性が非常に高いということになる。
実行時の結合
また、やり取りを行う2つのコンポーネントが実行時に同一のプロセス空間に存在する必要がある場合にも結合が生み出される。この種の結合によって、1つのコンポーネントの配備が他のコンポーネントの存在に依存するという制約が課されることになる。
1つのコンポーネントが実行時に他のコンポーネントに対して要求を行い、呼び出し側のコンポーネントが、呼び出されたコンポーネントからの応答を待たなければならない場合、時間的な結合が生み出されることになる。こういった時間的な結合は同期呼び出しとも呼ばれ、ある特定プロセスの応答が、呼び出し側プロセスの許容範囲を超えて遅くなった場合、アプリケーション障害が引き起こされるおそれがある。非同期呼び出しによって、コンポーネント同士の時間的な結合をなくすメカニズムが提供される。
- 0人の推薦記事
- 0人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
- ホワイトペーパー
- 話題のタグ
無料の「Oracle Database XE」で高速バッチ処理:実装のポイント
Firefoxで情報をカンタン・ベンリに整理する
iPhone Safari、Acidテストでは高得点でも…… Firefoxは載らないの?:WebサイトのiPhone 3G対応問題を考える(ソフト編)
WebサイトのiPhone 3G対応問題を考える(ハード編)
フォトレポート:時代を振り返る--「MS-DOS 4」のインストール
SOAと仮想化の関係は?--常に進化を続けるBEAのミドルウェア戦略
ウェブ開発の生産性はどうしたら上がる?--MODIPHI Appsで半日で作るマッシュアップサイト(1)
JailBreakついに:PwnageTool公開
プロジェクトの進行でよくある4つのトラブル
iPhoneに付く指紋が…… ひとまずおすすめのシリコンケース
contentプロパティでコンテンツを追加する(2):FirefoxとSafariのCSS
iPhone 24時間耐久レース:バッテリーは実際何時間?
フォームデザイン虎の巻:フォームの基礎をおさえる
DELLが掲げる「新・仮想化アセスメントサービス」
ZDNet Japan Green IT
ZDNet Japan ホスティング特集
Techno Exchange