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

サーバーを作成する

  1. 新しい Visual Basic プロジェクトを開始します。 [ 新しいプロジェクト ] ダイアログ ボックスで、[ ActiveX EXE] を選択し、[ 開く] をクリックします。 Class1 は既定で作成されます。

  2. Class1 モジュールに次のコードを追加します。

    Public Function ServerTime() As String
        ServerTime = Time
    End Function
    
  3. [ プロジェクト ] メニューの [ プロジェクトのプロパティ ] オプションをクリックし、[ 全般 ] タブを選択します。

  4. [ プロジェクト名] フィールドに「 DCOMDemo_Svr」と入力します。

  5. [ プロジェクトの説明 ] フィールドに、「 DCOMDemo_Svr - サーバー」と入力します[無人実行] オプションをオンにします。

    注:

    このオプションは、UI を持たないサーバーで常にオンにして、サーバーの実行中に任意の種類のダイアログ ボックスが表示されないようにする必要があります。 サーバーが対話型ユーザーではない ID で実行されている間に何らかの種類のユーザー操作がある場合は、サーバーがハングしているように見える可能性があります。

  6. [コンポーネント] タブを選択し、[リモート サーバー ファイル] オプションをチェックします。

    注:

    このオプションをオンにすると、Visual Basic コンパイラは、このサーバーを使用するクライアント アプリケーションをパッケージ化するために必要な VBR ファイルと TLB ファイルを生成します。 これらのファイルには、クライアント コンピューターに含める必要があるレジストリ エントリが含まれています。

  7. [ プロジェクトのプロパティ ] ダイアログ ボックスを閉じます。

  8. [ ファイル ] メニューの [ 名前を付けて保存] を選択し、このプロジェクトを に c:\DCOMDemo\Server folder保存します。

  9. [ ファイル ] メニューの [ DCOMDemo_Svr作成 ] を選択し、サーバーをコンパイルします。

  10. [ プロジェクト ] メニューの [ プロジェクトのプロパティ ] オプションを選択し、[ コンポーネント ] タブを選択します。

  11. [ コンポーネント ] タブで [ バージョン互換性] を選択し、[ バイナリ互換性 ] オプションを選択し、作成したサーバーの実行可能ファイル (DCOMDemo_Svr.exe) とプロジェクトのバイナリ互換性を設定します。 このオプションを選択すると、サーバーを再コンパイルすると、すべての GUID が同じ状態に保たれることを保証できます。

クライアントを作成する

  1. [ ファイル ] メニューの [ 新しいプロジェクト ] オプションを選択し、[ Standard EXE] を選択し、[OK] をクリック します。 Form1 は既定で作成されます。

  2. [ プロジェクト ] メニューの [ プロジェクトのプロパティ ] オプションをクリックし、[ 全般 ] タブを選択します。

  3. [ プロジェクト名] フィールドに「 DCOMDemo_Cli」と入力します。

  4. [ プロジェクトの説明 ] フィールドに、「 DCOMDemo_Cli Project - Client」と入力します。

  5. [ プロジェクト ] メニューの [ 参照] を選択します。 使用可能な参照の一覧から、[ DCOMDemo_Svr - サーバー] を選択します。

  6. Form1 にコマンド ボタンを配置し、ボタンのキャプションを [実行] に変更します。

  7. ボタンの 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
    
  8. [ ファイル ] メニューの [ 名前を付けて保存] を選択し、プロジェクトをクライアントのフォルダーに保存します c:\DCOMDemo\Client

  9. F5 キーを押して IDE でクライアントを実行し、テストします。

  10. [ ファイル ] メニューの [ DCOMDemo_Cli作成 ] を選択してクライアントをコンパイルし、Visual Basic を閉じます。

サーバーをパッケージ化する

パッケージと展開ウィザードを使用して、通常どおりにサーバーを配布用にパッケージ化します。 サーバーは、DCOM を使用してリモート クライアントによってインスタンス化されます。 サーバーのパッケージの作成中に、このサーバーをリモート オートメーション サーバーとして使用するかどうか、およびこの目的でサポート ファイルを含めるかどうかを確認するダイアログ ボックスが表示されます。 DCOM はリモート オートメーションではないため、[ いいえ ] ボタンをクリックするだけです。 リモート オートメーションは、DCOM に置き換えられた古いテクノロジです。

クライアントをパッケージ化する

クライアントをパッケージ化するときは、サーバーがクライアントと同じコンピューター上で実行されないことを考慮して、実行する必要がある特定の手順がいくつかあります。 クライアントのパッケージに加えられた変更により、タイプ ライブラリ (.tlb ファイル) だけがインストールされ、サーバーの実行可能ファイルの代わりにいくつかの追加のレジストリ エントリが含まれていることが保証されます。これは、クライアントのコンピューターでは実行されないため必要ありません。

次の手順を使用してクライアントをパッケージ化します。

  1. パッケージと展開ウィザードを開始し、クライアントのプロジェクトを選択します。

  2. [ パッケージ ] ボタンをクリックします。 [ パッケージの種類 ] ダイアログ ボックスで、[ 標準セットアップ パッケージ] を選択し、[ 次へ] をクリックします。

  3. [ パッケージ フォルダー ] ダイアログ ボックスで、パッケージを格納するフォルダーを選択し、[ 次へ] をクリックします。 この場合、 c:\DCOMDemo\Client\Package です

    注:

    サーバーの依存関係情報がないことを示すダイアログ ボックスが表示される場合があります。 このサーバーには依存関係がないため、[ OK] をクリックします

    [インクルード ファイル] ダイアログ ボックスに表示されます。

  4. サーバーの実行可能ファイルを配布したくないので、DCOMDemo_Svr.exe サーバーの実行可能ファイルの選択を解除し、[追加] ボタンをクリックします。

  5. [種類のファイル] コンボ ボックスをリモート サーバー ファイル (*.vbr) に変更します。

  6. サーバーのプロジェクトがあるフォルダー (この場合 c:\DCOMDemo\Server) をポイントし、関連する VBR ファイル DCOMDemo_Svr.VBR を選択します。 [ 開く] をクリックすると、[ ファイルの追加 ] ダイアログ ボックスが閉じます。

    注:

    その 2 つのファイル ( DCOMDemo_Svr.VBRDCOMDemo_Svr.TLB) が含まれています。 [ 次へ ] ボタンをクリックします。 [ リモート サーバー ] ダイアログ ボックスで、サーバーが実行されているコンピューターの名前 (Net アドレス) を定義できます。 通常、このフィールドは空白のままにしておきます。これは、サーバーがインストールされる場所がわからない可能性があるためです。 空白のままにすると、クライアントをインストールするときにメッセージが表示されます。 このサンプルでは、空白のままにします。

  7. [次へ] をクリックして、操作を続行します。 これで、パッケージと展開ウィザードの標準手順に進むことができます。 この場合は、残りのすべてのダイアログ ボックスの [次へ ] をクリックします。

サーバーをインストールする

先ほど作成した配布パッケージを使用して、実行するコンピューターにサーバーをインストールします。 開発用コンピューターを使用してサーバーを実行する場合は、Visual Basic がサーバーのコンパイル時に登録を行うため、インストールする必要はありません。

クライアントをインストールする

先ほど作成した配布パッケージを使用して、実行するコンピューターにクライアントをインストールします。 このクライアントは DCOM サーバーを使用し、配布パッケージの作成時にサーバーの実際の場所を空白のままにしたため、この場所を指定する必要があります。 セットアップでこの場所の入力を求められたら、サーバーをインストールしたコンピューターの名前を指定します。

サーバーのセキュリティを設定する

Windows NTまたは Windows 2000 コンピューターにサーバーをインストールした場合は、サーバーのセキュリティを構成する必要があります。 これを行うには、次の手順に示すように Dcomcnfg を使用します。これは、クライアント コンピューターとサーバー コンピューターの両方がドメインの一部であり、クライアント コンピューターにログオンしているユーザーがドメイン ユーザーとしてログオンしていることを前提としています。 推奨される設定は、1 つの構成に過ぎません。 これらは汎用であり、サーバーへの幅広いアクセスを提供します。 これは単なる例です。 実際のアプリケーションをデプロイするときに、セキュリティが環境の問題となる場合は、より制限の厳しいオプションを選択する必要があります。 また、この例のサーバーをテストするために使用しているコンピューターが他のサーバーの実行に使用されている場合は、次の変更を行う前に現在の設定をメモし、テストが完了したらすぐに元の設定に戻ります。

  1. サーバー コンピューターで、[ スタート ] ボタンをクリックし、[ 実行] を選択します。 [ 実行 ] ダイアログ ボックスに「 Dcomcnfg」と入力し、[OK] をクリック します。 Dcomcnfg を実行するには、管理者権限が必要です。
  2. [ 既定のプロパティ ] タブを選択し、[このコンピューターで分散 COM を有効にする] がオンになっていることを確認します。
  3. [既定の認証レベル][接続] に設定し、[既定の偽装レベル][識別] に設定します。
  4. [ 既定のセキュリティ ] タブを選択します。
  5. [既定のアクセス許可] パネルの [既定の編集] ボタンをクリックします。
  6. [アクセスを許可する] 権限を持つ一覧に [すべてのユーザー] と [システム] が含まれていることを確認します。 そうでない場合は、[ 追加] ボタンを使用して一覧に追加できます。 一覧が完了したら 、[OK] をクリックします
  7. [既定の起動アクセス許可] パネルの [既定の編集] ボタンをクリックします。
  8. [起動を許可する] アクセス許可を持つ一覧に [すべてのユーザー] と [システム] が含まれていることを確認します。 そうでない場合は、[ 追加] ボタンを使用して一覧に追加します。 一覧が完了したら 、[OK] をクリックします
  9. [アプリケーション] タブ 選択し、サーバー DCOMDemo_Svr.Class1 を強調表示し、[ プロパティ ] ボタンをクリックします。
  10. [ 全般 ] タブを選択し、[ 認証レベル ] を [既定] に設定し、[ 場所 ] タブを選択します。オンになっている唯一のオプションは、[このコンピューターでアプリケーションを実行する] です。
  11. [ セキュリティ ] タブを選択し、[既定のアクセス許可を使用する] オプションと [既定の起動アクセス許可を使用する] オプションがオンになっていることを確認します。
  12. [ID] タブを選択し、起動中のユーザー オプションチェック、[OK] をクリックして [サーバーのプロパティ] ダイアログ ボックスを閉じ、もう一度 [OK] をクリックして Dcomcnfg を閉じます。 ご覧のとおり、テスト サーバーではすべての既定の設定が使用されます。 独自のサーバーをデプロイするときは、アプリケーションに固有の設定を定義する必要があります。 すべてのカスタム設定は、既定の設定よりも優先されます。

これで、サーバーをテストする準備ができました。 クライアント コンピューターでクライアントを起動し、[ 実行 ] ボタンをクリックします。 サーバーの時刻を示すメッセージ ボックスが表示されます。 このサンプルを正常にテストできない場合は、「参照」セクションに記載されているトラブルシューティングの記事「Q269330」を参照してください。