この特集のトップページへ
Chapter 1:クライアント/サーバーアプリケーションの仕組み

見出し 1.2.2 MTSとCOM+
 すでに述べたとおり,MTSおよびCOM+は,Windows DNAの要(かなめ)というべき中核的な機能である。データベースを実際に操作するプログラム――すなわちビジネスロジック層を実現するプログラム――を集中管理する機能をもつ。

●MTSとCOM+の違い

 まずはじめに,MTSとCOM+について簡単に説明しておこう。

 MTSは,Windows NT Server 4.0上で動作するサービスであり,Windows NT 4.0 Option Packで提供されている。一方,COM+はWindows 2000が標準でサポートしているサービスである。これが,1番目の違いである。

 では,機能的に何が違うのかというと,ビジネスロジックを統合的に管理するという点では,ほとんど違いはない。基本的に,COM+はMTSにWindows 2000ならではの機能が加わったものだと考えてもらいたい。COM+にあってMTSにない機能としては,COM+イベントやQueued Componentなどが挙げられるが,これらについては追って説明してゆく。逆に,MTSにあってCOM+にはない機能というものは,ない。COM+はMTSとの上位互換性を有するのである。

 したがって,Windows 2000の新機能を使わない限り,MTSとCOM+の違いはないといってよい。実際,MTS用に開発されたプログラムは,COM+上でも動作させることができる。

●MTSおよびCOM+が提供する機能

 MTSおよびCOM+では,主に次の3つの機能を提供する。

  1. セキュリティのサポート
     セキュリティ情報を管理し,適切な権限がないとMTSおよびCOM+に登録されたプログラムを利用できないようにする。

  2. 通信と分散処理のサポート
     MTSおよびCOM+に登録されたプログラムは,ネットワーク通信が自動的にサポートされる。

     MTSおよびCOM+でサポートされる「DCOM(Distributed COM:分散COM)」と呼ばれる通信プロトコルは,Windows 95,Windows 98,Windows NT 4.0,Windows 2000でサポートされる(ただし,Windows 95とWindows 98でDCOMを利用するためには,それぞれDCOM95,DCOM98と呼ばれるモジュールをインストールしなければならない。これらのモジュールは,Microsoft社のWebサイトのCOMページからダウンロードすることができる)。DCOMでは,MS RPC(Microsoft Remote Procedure Call)と呼ばれるリモートプログラムの呼び出し手順を使ってリモートのプログラムが起動され,実行される。

     3階層アプリケーションモデル(N階層アプリケーションモデル)では,すべての階層を1台のコンピュータで動作させるのではなく,階層ごとに別のコンピュータに分散させて動作させるのが一般的であり,その場合,プログラム間のネットワーク通信は不可欠なものとなる。ネットワーク通信を実装するのは大変な作業であるのだが,MTSおよびCOM+に登録されたプログラムは,開発者が特に何も考えなくてもネットワーク通信をサポートするため,開発者の負担は劇的に軽減される(Fig.1-13)。また,MTSおよびCOM+では,階層ごとに動作するサーバーを変えるのではなく,登録されたそれぞれのプログラムごとに動作するサーバーを変えることもできるため,プログラムを実行するサーバーを複数に分けて分散処理を実現することもできる。

Fig.1-13 通信と分散機能のサポート
fig.1-13


One Point! 厳密にいえば,Windows 98は標準でDCOMをサポートしているので,DCOM98のインストールは不可欠というわけではない。しかし,Windows 98の出荷以降,一部の機能がアップデートされているため,DCOM98をインストールすることを推奨する。また,Windows NT 4.0もService PackによってDCOMの一部機能がアップデートされるため,最低でもService Pack 3以上を適用するようにお勧めする。

One Point! DCOMは,Windowsプラットフォームだけでなく,一部のUNIXでもサポートされている。

  1. トランザクション機能のサポート
     トランザクションについては,「1.1.3 トランザクション処理の必要性」で説明した。トランザクション処理は,複数のユーザーが同時に1つのデータベースに接続する可能性のあるクライアント/サーバーアプリケーションを開発するのに不可欠な処理である。

     MTSおよびCOM+では,管理しているプログラムをグループ化して1つのトランザクションとして扱うことができるようになっている。具体的には,そのグループに含まれるプログラムの処理が1つでも失敗したならば,グループに含まれているプログラムが行ったデータベース処理はすべてロールバックさせることができるようになっている(Fig.1-14)。このとき,「1.1.3 トランザクションの処理の必要性」で説明したADODB.ConnectionオブジェクトのBeginTransCommitTransRollBackTransという各メソッドを呼び出す必要はない。MTSおよびCOM+の管理ツールで,どのプログラムがトランザクション処理を必要とするのかを指定しておけば,トランザクション処理はMTSおよびCOM+の内部で自動的に処理される。

     さらに,MTSおよびCOM+では,1つのサーバー内で管理されているプログラムだけでなく,別のサーバー上で管理されているプログラムも含めてグループ化することができる。すなわち,ビジネスロジック層に相当するプログラムが複数のサーバーに分散している場合でも,それらをまとめてトランザクションとして扱うことができるのである。

     トランザクション機能については,Chapter 4で詳しく説明する。

Fig.1-14 トランザクション機能のサポート
fig.1-14

 上記の2)および3)の機能によって,3階層アプリケーションやN階層アプリケーションを実装するときに懸念される,クライアント/サーバー間の通信とトランザクション処理についての問題はすべて解決される。

prev Chapter 1 9/11 next