疎結合(Loose Coupling) †
一言要約 †
- 密結合は、変更に弱くて、メンテするのが大変で、スケールしづらくなる。
- 疎結合は、変更に強くて、メンテするのが簡単で、スケールしやすくなる。
- Webサービスの人気が高まるにつれてこれらのことが再発見されてきている。
要約 †
- 疎結合のメリットが、Webサービスが急に人気を集めたことがきっかけで、最近、注目を浴びている。
- 疎結合の背景にある中心的な原則は、2つの構成(components, applications, services,
programs,users)の間で、情報をやり取りする時、それぞれが必要とする前提を減らすことである。
- 密結合の例として、ローカルメソッドの起動を挙げている。
- アプリケーションのローカルメソッドを起動することは、呼び出す側と呼び出された側の間に 決められてある多くの前提に基づいている。
- 両方共、メソッドが同じプロセスを起動しなければならなく、同じ言語で書かれなければならない。
- 呼び出すメソッドは、取り決められたデータの型をつかっている期待されたパラメータの正確な数値を渡さなければならない。
- サードパーティの盗聴のフォームでセキュリティ違反を心配しなくてはならない。
- 全ては、これらの前提がとても簡単に、うまく構造化されたアプリケーションを書くことに尽きる。
- 他のメソッドによって呼び出される個々のメソッドで機能的に分割し、結果的に、多くの数の、柔軟かつ、再利用が可能な小さいメソッドになる。
- 多くのインテグレーションのアプローチは、ローカルメソッドの呼び出しとして同じ動作の中で、遠隔でのデータ交換をパッケージングを用いることでシンプルに、遠隔の情報のやりとりをすることを狙いとしている。
- この戦略は、Remote Procedure Call(RPC) や、Remote Method Invocation(RMI), の考え方になった。
- 多くの人気のあるフレームワークからサポートされている。
- プラットフォーム:
- CORBA,
- Microsoft DCOM,
- .NET Remoting
- Java RMI,
- 最近では、RPC-形式のWebサービス
- このアプローチの意図された利点は、2つ。
- 同期するメソッド呼び出しの動作がアプリケーション開発者には、とても馴染みがある。
- 同じ文法と意味論を使える。
- ローカルメソッドを呼び出し、リモート起動する両方ともで。
- 開発時に、コンポーネントをローカルで実行すべきか、リモートで実行すべきか、アプリケーション開発者の心配事についての決定するを任せるようにしている。
- 全てのこれらのアプローチが直面する課題は、リモートの情報のやりとりが、ローカルメソッドの呼び出しに基づいてる多くの前提を無効にしている事実にある。
- リモートの情報のやりとりを難しくし、誤らせる、メソッド呼び出しの単純な動作で、抽象化している。
- リモートの情報のやりとりを表現しようとするローカルメソッドの起動が変わりうることは、障害につながる。
- 密結合した構造は、典型的にもろくなり、メンテナンスしづらく、拡張しづらい解決策となる。
- 多くのWebサービスの開拓者たちは、最近、密結合の厳しさを再発見してきている。
担当者のコメント †
- この書籍の「最近(recently)」の表現はもう数年前になる件。
- 読みやすい文章だなーって。
みんなの突っ込み †