リモート アプリケーションの構成
.NET リモート処理インフラストラクチャでは、リモート処理を円滑に機能させるために特定の情報が必要です。リモート処理可能な型を構成するには、2 つの方法があります。1 つは、サーバー コードとクライアント コードで構成メソッドを直接呼び出す方法で (詳細については、「プログラムによる構成」を参照)、もう 1 つは、リモート処理構成セクションを作成し、それをアプリケーションの構成ファイル、Web.config ファイル、または Machine.config ファイルに含める方法です (詳細については、「リモート オブジェクトの設定」を参照)。どちらの構成プロセスにも長所と短所があるので、必要に応じて選択してください。
型をリモート処理可能にするには、リモート処理システムに次の情報を通知する必要があります。
その型に必要なアクティベーションの種類。
その型を説明する完全なメタデータ。
その型に対する要求を処理するために登録したチャネル。
その型のオブジェクトを一意に識別する URL。サーバー アクティベーションの場合、その型に固有の URI (Uniform Resource Identifier) であることが必要です。クライアント アクティベーションの場合は、そのインスタンスに固有の URL が割り当てられます。
リモート サーバー オブジェクトのプロキシを作成してリモート サーバー オブジェクトへのメソッド呼び出しをディスパッチするために、クライアントとサーバーの両方のリモート処理インフラストラクチャがこの情報を認識している必要があります。場合によっては、クライアントが、クライアントとサーバーの両方で利用できる特殊な構成になっていることがあります。クライアント アプリケーションがクライアント側でアクティブ化されるオブジェクトを要求している場合、クライアントは、そのインスタンスに関連付けられている有効期間を延長するように要求できます。また、クライアントがある種のコールバックを必要としている場合は、クライアント自体が、そのコールバックをリッスンするチャネルをアクティブに登録する必要があります。それ以外の場合は、.NET リモート処理システムが互換性のあるクライアント チャネルを自動的に検出します (互換性のあるクライアント チャネルがシステムにある場合)。サーバーは、クライアント側でアクティブ化されるオブジェクトに対して既定の有効期間を指定したり、特定のカスタム オブジェクト アクティベータを使用するように指定したりする場合があります。
.NET Framework リモート処理サーバーの TCP サーバー チャネルまたは HTTP サーバー チャネルを構成する場合に、サーバー コンピュータに複数のネットワーク インターフェイス カード (NIC) があるか、IP アドレスが固定されていない NIC (ワイヤレス NIC など) があるときは、machineName プロパティを使用するようにチャネルを構成して、.NET Framework リモート処理がサーバー コンピュータを検出できるようにする必要があります。詳細については、「チャネルおよびフォーマッタの構成プロパティ」の machineName プロパティの説明を参照してください。
リモート処理可能オブジェクトに関するすべての情報をインスタンスが作成される前に通知する場合、new キーワード (Visual Basic では New) を使用できます。それ以外の場合は、Activator.GetObject または Activator.CreateInstance を使用する必要があります。
メモ : |
---|
アプリケーション構成ファイルには .NET リモート処理関連の設定はわずかしかありませんが、.NET リモート処理を使用する場合の問題の多くは、これらの設定の一部が正しくないか、クライアント アプリケーションの構成設定に一致していないことが原因で発生します。よくある誤りには、名前の誤入力、ポートの未指定、属性の指定漏れなどがあります。リモート処理アプリケーションに問題がある場合は、まず構成設定を確認してください。 |
関連項目
参照
概念
メタデータの問題
アクティベーション URL
プログラムによる構成
.NET Framework リモート処理での自動逆シリアル化
チャネルおよびフォーマッタの構成プロパティ
インターネット インフォメーション サービス (IIS) でのリモート オブジェクトのホスト
リモート処理の例 : インターネット インフォメーション サービス (IIS: Internet Information Services) でのホスティング
その他の技術情報
Copyright © 2007 by Microsoft Corporation.All rights reserved.