この特集のトップページへ
Chapter 1:オブジェクト指向から見たCOM+

見出し 1.1.4 モノリシックなアプリケーションからコンポーネントプログラミングへ
 オブジェクト指向プログラミングの手法により,ソフトウェアの信頼性や生産性は著しく向上した。しかし,アプリケーションをモノシリック(1枚岩的)に実装する従来のアプリケーション開発手法では,大規模なエンタープライズシステムを構築する際に,何度も同じようなビジネスロジック(ルール+ワークフロー)を重複してコーディングしなければならないことがある。このようなときに,ビジネスロジックだけをDLLの形式で関数化して使用することも可能であるが,むしろDLL形式でCOM/COM+コンポーネントにAPI化することによるメリットが大きい。これはDLLの特徴でもあるが,クライアントのメモリ空間にDLLのモジュールをロードすることができるため,スレッドの生成やマーシャリングによるオーバーヘッドをなくすことが可能である。しかも,必要なときに動的にコンポーネントをロードしたりアンロードしたりしても,リソースの消費は少なく,大規模な分散処理を実現するうえでは重要な役割を果たす。

 さらに,より堅牢で高性能な分散アプリケーションを構築するには,コンポーネント化されたビジネスロジックを複数のコンピュータ上に分散させ,そのコンポーネントに実装されたビジネスロジックからデータベースやメッセージストアにアクセスできるようにする。クライアントは,直接データベースにアクセスするのではなく,分散化されたコンポーネントを呼び出せばよい。このようなモデルにより,多階層のクライアント/サーバーシステムを構築することができる。

 では,上述したような多階層クライアント/サーバーシステム(ここでは3階層)の仕組みを説明しよう(Fig.1-5)。

Fig.1-5 アプリケーションアーキテクチャの進展
fig.1-5

 最も左側に示したのは,データを入出力するプレゼンテーション層,ビジネス上のルールやワークフローなどを実装するビジネスロジック層,データにアクセスするデータアクセス層,という3層をすべて1つのプログラムで実装するモノシリックなアプリケーションのモデルである。中央に示したのは,データアクセス層とデータソースだけを切り離した2階層クライアント/サーバーアプリケーションである。本稿の執筆時点で構築されているクライアント/サーバーシステムのほとんどは,この2階層クライアント/サーバーモデルに基づいている。しかし,2階層クライアント/サーバーモデルでは,クライアントとデータベースが密接するため,堅牢なデータアクセスが可能である反面,プレゼンテーション層とビジネスロジック層がクライアント側にあり,システムの再構築や高度な分散化を実現するには得策とはいえない。

 そこで,2階層クライアント/サーバーモデルのクライアント側(プレゼンテーション層とビジネスロジック層)からビジネス上のルールやワークフローを,サーバー側(データアクセス層とデータソース)からデータアクセス機能を,それぞれ取り出して中間層(ミドルティア)を作り上げる。このとき,サーバー側にはデータソースだけを配置し,中間層のデータアクセス層を通じてサーバー側のデータソースにアクセスするようにする。これが,3階層クライアント/サーバーモデルである。3階層クライアント/サーバーモデルにおける中間層はCOM/COM+コンポーネントを使って構築することができ,中間層に配置されたCOM/COM+コンポーネントから,ほかのコンピュータに分散させたCOM/COM+コンポーネントにアクセスすることも可能である。これにより,3階層から多階層まで,柔軟なクライアント/サーバーモデルに変更することも容易になる。このように,COM/COM+コンポーネントを分散配置し,Windowsを基盤としたシステムを構築するためのアーキテクチャが,Windows DNA(Windows Distributed interNet Application Architecture)である。Windows DNAアーキテクチャは,Windows 2000の登場に伴い,Windows DNA 2000へと進化することになる。

 Windows DNAには,大きく2つのアプリケーションモデルが想定されている。1つは,DCOMプロトコルを利用してMTSによりビジネスロジック層のCOMコンポーネントを起動し,そのCOMコンポーネントが必要に応じてデータストア層のデータベースにアクセスするというもの(Fig.1-6),もう1つは,HTTP(HyperText Transfer Protocol)を利用してIIS(Internet Information Service)によりビジネスロジック層のCOMコンポーネントを起動し,そのCOMコンポーネントが必要に応じてデータストア層のデータベースにアクセスするというもの(Fig.1-7)である。

Fig.1-6 DCOMプロトコルによる3階層クライアント/サーバーアーキテクチャ
fig.1-6
Fig.1-7 HTTPによる3階層クライアント/サーバーアーキテクチャ
fig.1-7
prev Chapter 1 5/8 next