Visual Basic を使用して DCOM クライアント/サーバー アプリケーションを作成する
この記事では、Visual Basic を使用して分散コンポーネント オブジェクト モデル (DCOM) クライアント/サーバー アプリケーションを作成、パッケージ化、デプロイする方法について説明します。
元の製品バージョン: Visual Basic
元の KB 番号: 266717
概要
この記事では、Visual Basic を使用して DCOM クライアント/サーバー アプリケーションを作成、パッケージ化、デプロイする方法について説明します。 DCOM クライアント/サーバー アプリケーションを作成するには、Visual Basic のEnterprise Editionが必要です。 Microsoft は、リーダーが同じコンピューター上で実行されるクライアント/サーバー アプリケーションの作成に既に精通していることを前提としています。
詳細
DCOM を使用してクライアント アプリケーションがリモート サーバーをインスタンス化できるようにコードを変更する必要はありません。 違いは、クライアントをパッケージ化してデプロイする方法です。 さらに、クライアントとサーバーのインストール後に行う必要があるセキュリティ設定がいくつかあります。 これらの設定は、 Dcomcnfg というユーティリティを使用して行うことができます。
次の手順では、クライアント/サーバー アプリケーションを配布して構成する方法を示します。 サーバー DCOMDemo_Svrに名前を付け、クライアントにDCOMDemo_Cliという名前を付けます。 それぞれに個別のフォルダーを作成します。 この記事では、これらのフォルダー を呼び出します c:\DCOMDemo\Server and c:\DCOMDemo\Client
。
サーバーを作成する
新しい Visual Basic プロジェクトを開始します。 [ 新しいプロジェクト ] ダイアログ ボックスで、[ ActiveX EXE] を選択し、[ 開く] をクリックします。 Class1 は既定で作成されます。
Class1 モジュールに次のコードを追加します。
Public Function ServerTime() As String ServerTime = Time End Function
[ プロジェクト ] メニューの [ プロジェクトのプロパティ ] オプションをクリックし、[ 全般 ] タブを選択します。
[ プロジェクト名] フィールドに「 DCOMDemo_Svr」と入力します。
[ プロジェクトの説明 ] フィールドに、「 DCOMDemo_Svr - サーバー」と入力します。 [無人実行] オプションをオンにします。
注:
このオプションは、UI を持たないサーバーで常にオンにして、サーバーの実行中に任意の種類のダイアログ ボックスが表示されないようにする必要があります。 サーバーが対話型ユーザーではない ID で実行されている間に何らかの種類のユーザー操作がある場合は、サーバーがハングしているように見える可能性があります。
[コンポーネント] タブを選択し、[リモート サーバー ファイル] オプションをチェックします。
注:
このオプションをオンにすると、Visual Basic コンパイラは、このサーバーを使用するクライアント アプリケーションをパッケージ化するために必要な VBR ファイルと TLB ファイルを生成します。 これらのファイルには、クライアント コンピューターに含める必要があるレジストリ エントリが含まれています。
[ プロジェクトのプロパティ ] ダイアログ ボックスを閉じます。
[ ファイル ] メニューの [ 名前を付けて保存] を選択し、このプロジェクトを に
c:\DCOMDemo\Server folder
保存します。[ ファイル ] メニューの [ DCOMDemo_Svr作成 ] を選択し、サーバーをコンパイルします。
[ プロジェクト ] メニューの [ プロジェクトのプロパティ ] オプションを選択し、[ コンポーネント ] タブを選択します。
[ コンポーネント ] タブで [ バージョン互換性] を選択し、[ バイナリ互換性 ] オプションを選択し、作成したサーバーの実行可能ファイル (DCOMDemo_Svr.exe) とプロジェクトのバイナリ互換性を設定します。 このオプションを選択すると、サーバーを再コンパイルすると、すべての GUID が同じ状態に保たれることを保証できます。
クライアントを作成する
[ ファイル ] メニューの [ 新しいプロジェクト ] オプションを選択し、[ Standard EXE] を選択し、[OK] をクリック します。 Form1 は既定で作成されます。
[ プロジェクト ] メニューの [ プロジェクトのプロパティ ] オプションをクリックし、[ 全般 ] タブを選択します。
[ プロジェクト名] フィールドに「 DCOMDemo_Cli」と入力します。
[ プロジェクトの説明 ] フィールドに、「 DCOMDemo_Cli Project - Client」と入力します。
[ プロジェクト ] メニューの [ 参照] を選択します。 使用可能な参照の一覧から、[ DCOMDemo_Svr - サーバー] を選択します。
Form1 にコマンド ボタンを配置し、ボタンのキャプションを [実行] に変更します。
ボタンの click イベントに次のコードを配置します。
Dim MyObj As DCOMDemo_Svr.Class1 On Error GoTo err1 Set MyObj = CreateObject("DCOMDemo_Svr.Class1") MsgBox "Server Time=" & MyObj.ServerTime & " Client Time=" & Time Exit Sub err1: MsgBox "Connection failed: Error " & Err.Number & " - " & Err.Description
[ ファイル ] メニューの [ 名前を付けて保存] を選択し、プロジェクトをクライアントのフォルダーに保存します
c:\DCOMDemo\Client
。F5 キーを押して IDE でクライアントを実行し、テストします。
[ ファイル ] メニューの [ DCOMDemo_Cli作成 ] を選択してクライアントをコンパイルし、Visual Basic を閉じます。
サーバーをパッケージ化する
パッケージと展開ウィザードを使用して、通常どおりにサーバーを配布用にパッケージ化します。 サーバーは、DCOM を使用してリモート クライアントによってインスタンス化されます。 サーバーのパッケージの作成中に、このサーバーをリモート オートメーション サーバーとして使用するかどうか、およびこの目的でサポート ファイルを含めるかどうかを確認するダイアログ ボックスが表示されます。 DCOM はリモート オートメーションではないため、[ いいえ ] ボタンをクリックするだけです。 リモート オートメーションは、DCOM に置き換えられた古いテクノロジです。
クライアントをパッケージ化する
クライアントをパッケージ化するときは、サーバーがクライアントと同じコンピューター上で実行されないことを考慮して、実行する必要がある特定の手順がいくつかあります。 クライアントのパッケージに加えられた変更により、タイプ ライブラリ (.tlb ファイル) だけがインストールされ、サーバーの実行可能ファイルの代わりにいくつかの追加のレジストリ エントリが含まれていることが保証されます。これは、クライアントのコンピューターでは実行されないため必要ありません。
次の手順を使用してクライアントをパッケージ化します。
パッケージと展開ウィザードを開始し、クライアントのプロジェクトを選択します。
[ パッケージ ] ボタンをクリックします。 [ パッケージの種類 ] ダイアログ ボックスで、[ 標準セットアップ パッケージ] を選択し、[ 次へ] をクリックします。
[ パッケージ フォルダー ] ダイアログ ボックスで、パッケージを格納するフォルダーを選択し、[ 次へ] をクリックします。 この場合、 c:\DCOMDemo\Client\Package です。
注:
サーバーの依存関係情報がないことを示すダイアログ ボックスが表示される場合があります。 このサーバーには依存関係がないため、[ OK] をクリックします 。
[インクルード ファイル] ダイアログ ボックスに表示されます。
サーバーの実行可能ファイルを配布したくないので、DCOMDemo_Svr.exe サーバーの実行可能ファイルの選択を解除し、[追加] ボタンをクリックします。
[種類のファイル] コンボ ボックスをリモート サーバー ファイル (*.vbr) に変更します。
サーバーのプロジェクトがあるフォルダー (この場合
c:\DCOMDemo\Server
) をポイントし、関連する VBR ファイル DCOMDemo_Svr.VBR を選択します。 [ 開く] をクリックすると、[ ファイルの追加 ] ダイアログ ボックスが閉じます。注:
その 2 つのファイル ( DCOMDemo_Svr.VBR と DCOMDemo_Svr.TLB) が含まれています。 [ 次へ ] ボタンをクリックします。 [ リモート サーバー ] ダイアログ ボックスで、サーバーが実行されているコンピューターの名前 (Net アドレス) を定義できます。 通常、このフィールドは空白のままにしておきます。これは、サーバーがインストールされる場所がわからない可能性があるためです。 空白のままにすると、クライアントをインストールするときにメッセージが表示されます。 このサンプルでは、空白のままにします。
[次へ] をクリックして、操作を続行します。 これで、パッケージと展開ウィザードの標準手順に進むことができます。 この場合は、残りのすべてのダイアログ ボックスの [次へ ] をクリックします。
サーバーをインストールする
先ほど作成した配布パッケージを使用して、実行するコンピューターにサーバーをインストールします。 開発用コンピューターを使用してサーバーを実行する場合は、Visual Basic がサーバーのコンパイル時に登録を行うため、インストールする必要はありません。
クライアントをインストールする
先ほど作成した配布パッケージを使用して、実行するコンピューターにクライアントをインストールします。 このクライアントは DCOM サーバーを使用し、配布パッケージの作成時にサーバーの実際の場所を空白のままにしたため、この場所を指定する必要があります。 セットアップでこの場所の入力を求められたら、サーバーをインストールしたコンピューターの名前を指定します。
サーバーのセキュリティを設定する
Windows NTまたは Windows 2000 コンピューターにサーバーをインストールした場合は、サーバーのセキュリティを構成する必要があります。 これを行うには、次の手順に示すように Dcomcnfg を使用します。これは、クライアント コンピューターとサーバー コンピューターの両方がドメインの一部であり、クライアント コンピューターにログオンしているユーザーがドメイン ユーザーとしてログオンしていることを前提としています。 推奨される設定は、1 つの構成に過ぎません。 これらは汎用であり、サーバーへの幅広いアクセスを提供します。 これは単なる例です。 実際のアプリケーションをデプロイするときに、セキュリティが環境の問題となる場合は、より制限の厳しいオプションを選択する必要があります。 また、この例のサーバーをテストするために使用しているコンピューターが他のサーバーの実行に使用されている場合は、次の変更を行う前に現在の設定をメモし、テストが完了したらすぐに元の設定に戻ります。
- サーバー コンピューターで、[ スタート ] ボタンをクリックし、[ 実行] を選択します。 [ 実行 ] ダイアログ ボックスに「 Dcomcnfg」と入力し、[OK] をクリック します。 Dcomcnfg を実行するには、管理者権限が必要です。
- [ 既定のプロパティ ] タブを選択し、[このコンピューターで分散 COM を有効にする] がオンになっていることを確認します。
- [既定の認証レベル] を [接続] に設定し、[既定の偽装レベル] を [識別] に設定します。
- [ 既定のセキュリティ ] タブを選択します。
- [既定のアクセス許可] パネルの [既定の編集] ボタンをクリックします。
- [アクセスを許可する] 権限を持つ一覧に [すべてのユーザー] と [システム] が含まれていることを確認します。 そうでない場合は、[ 追加] ボタンを使用して一覧に追加できます。 一覧が完了したら 、[OK] をクリックします 。
- [既定の起動アクセス許可] パネルの [既定の編集] ボタンをクリックします。
- [起動を許可する] アクセス許可を持つ一覧に [すべてのユーザー] と [システム] が含まれていることを確認します。 そうでない場合は、[ 追加] ボタンを使用して一覧に追加します。 一覧が完了したら 、[OK] をクリックします 。
- [アプリケーション] タブ を 選択し、サーバー DCOMDemo_Svr.Class1 を強調表示し、[ プロパティ ] ボタンをクリックします。
- [ 全般 ] タブを選択し、[ 認証レベル ] を [既定] に設定し、[ 場所 ] タブを選択します。オンになっている唯一のオプションは、[このコンピューターでアプリケーションを実行する] です。
- [ セキュリティ ] タブを選択し、[既定のアクセス許可を使用する] オプションと [既定の起動アクセス許可を使用する] オプションがオンになっていることを確認します。
- [ID] タブを選択し、起動中のユーザー オプションチェック、[OK] をクリックして [サーバーのプロパティ] ダイアログ ボックスを閉じ、もう一度 [OK] をクリックして Dcomcnfg を閉じます。 ご覧のとおり、テスト サーバーではすべての既定の設定が使用されます。 独自のサーバーをデプロイするときは、アプリケーションに固有の設定を定義する必要があります。 すべてのカスタム設定は、既定の設定よりも優先されます。
これで、サーバーをテストする準備ができました。 クライアント コンピューターでクライアントを起動し、[ 実行 ] ボタンをクリックします。 サーバーの時刻を示すメッセージ ボックスが表示されます。 このサンプルを正常にテストできない場合は、「参照」セクションに記載されているトラブルシューティングの記事「Q269330」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示