この特集のトップページへ
Chapter 6:ビジネスロジックの設計



  COLUMN    COMコンポーネントの再登録と参照設定

 これから順次COMコンポーネントに対してメソッドを追加してゆくわけだが,動作をチェックしたい場合には,dllファイルを作り直してCOM+カタログに再登録するという作業が必要となる。このとき,COM+に登録されているコンポーネントが利用中であるため,COM+アプリケーションをシャットダウンしないとdllファイルの作成に失敗することがある。このことは,「4.2.3 COMコンポーネントのアップデート」においてすでに説明したとおりである。また,dllファイルをドラッグ&ドロップし直す場合には,古いCOMコンポーネントをあらかじめ削除しておかないと,正しく更新されないことがあるという点も説明した。これらの問題を避けるため,dllファイルを更新する場合には,(1)アプリケーションを事前にシャットダウンしてからdllファイルを作る,(2)COM+カタログに登録されている古いCOMコンポーネントを削除してから新しく作成したdllファイルをドラッグ&ドロップする,という2つの工程を踏む必要がある。ただし,(2)の工程でCOMコンポーネントを削除すると,COMコンポーネントやそれに備わるメソッドに設定されていたトランザクション,コンストラクタ文字列,セキュリティといったプロパティの値は消滅する。そのため,COMコンポーネントを登録し直した段階で,そのCOMコンポーネントのプロパティを再度設定しなければならない点に注意したい。

 ところで,BusinessプロジェクトはDataObjDataObj.Customerコンポーネント)を参照しているわけだが,DataObjプロジェクト内にあるコンポーネントのプログラムを変更した場合にはBusinessプロジェクトが参照している内容と食い違うことになる。しかし,Visual Basicのプロジェクトのプロパティにおいて,[ActiveXコントロールのアップグレード]が有効になっている場合(デフォルトでは有効)には,プロジェクトファイルを読み込み直したときに,参照設定が最新のものに自動更新される(Fig.6-36)。すなわち,Businessプロジェクトを開き直すたびに,DataObjプロジェクト内にあるコンポーネントの最新の参照設定が反映されるということである。しかし逆にいうと,DataObjプロジェクト内のコンポーネントの実装を変更した場合,Businessプロジェクトを開き直さない限り,古い参照設定をそのまま使い続けてしまうということなので注意したい。古い参照設定を使い続けた場合,実行時に「型が違います」というエラーが発生することがある。

Fig.6-36 プロジェクトのプロパティ
fig6_36

 また,DataObjプロジェクトをコンパイルしてdllファイルを作る場合に参照設定されていると,dllファイルが利用中であるために更新できないというエラーが発生する。つまり,BusinessプロジェクトがDataObjを参照設定して開いている場合には,DataObjプロジェクトにおいてdllファイルを作成することができないということになる。

 今回のサンプルアプリケーションではDataObjプロジェクトとBusinessプロジェクトという2つのプロジェクトファイルを使って開発を進めていくわけであるが,BusinessプロジェクトがDataObjを参照設定して使っているため,(1)Businessプロジェクトを開いているあいだはDataObjプロジェクトにおいてdllファイルを作成することができない,(2)DataObjプロジェクトにおいて新しいdllファイルを作成したならばBusinessプロジェクトを開き直さないと参照設定には反映されない,という2つの点に注意する必要がある。

 そのため,実際の開発においては,DataObjプロジェクトを編集したいのであれば,(1)いったんBusinessプロジェクトを閉じる,(2)DataObjプロジェクトでdllファイルを作成する,(3)Businessプロジェクトを開き直す,という手順を踏まなければならない。

prevpg.gif Chapter 6 15/92 nextpg.gif