「リモート処理が可能な型の構築」で定義したリモート型を使って、「ホスト アプリケーションの構築」で作成したアプリケーションにホストされるクライアントを構築するには、アプリケーション自体をリモート オブジェクトのクライアントとして登録し、そのオブジェクトをクライアントのアプリケーション ドメイン内にあるかのように呼び出します。.NET リモート システムはクライアント呼び出しを受け取り、それをリモート オブジェクトに転送し、結果をクライアントに返します。簡単なリモート処理クライアントを構築する方法を次のコード例に示します。
' Client.vb
Imports System
Imports System.Runtime.Remoting
Public Class Client
Public Shared Sub Main()
RemotingConfiguration.Configure("Client.exe.config")
Dim remoteObject As New RemotableType()
Console.WriteLine(remoteObject.StringMethod())
End Sub 'Main
End Class 'Client
[C#]
// Client.cs
using System;
using System.Runtime.Remoting;
public class Client{
public static void Main(){
RemotingConfiguration.Configure("Client.exe.config");
RemotableType remoteObject = new RemotableType();
Console.WriteLine(remoteObject.StringMethod());
}
}
.NET Framework SDK に含まれているコマンド ライン ツールでこのクラスをクライアント (呼び出し元) 実行可能ファイルにコンパイルするには、これを Client.
language-extension という名前 (または別の任意の名前) で保存します。language-extension は、コンパイルする言語を示します。ファイルは、「リモート処理が可能な型の構築」トピックで構築した RemotableType.dll
のコピーを保存したディレクトリと同じディレクトリに保存します。これは、Listener.exe
アプリケーションのディレクトリとは別のディレクトリであることに注意が必要です。同じディレクトリにすると、アセンブリと型の解決の問題が発生するため、リモート参照の受け取りと利用ができないことがあります。そのディレクトリのコマンド プロンプトで次のコマンドを入力します。
[Visual Basic]
vbc /r:RemotableType.dll Client.vb
[C#]
csc /noconfig /r:RemotableType.dll Client.cs
このコマンドでは、ファイル名は次のとおりです。
[Visual Basic]
Client.vb
[C#]
Client.cs
例からもわかるように、Client
クラスは RemotableType
クラスの構成を読み込むために、Client.exe.config
ファイルを見つけられることが必要です。このファイルは Client.exe
と同じディレクトリに保存する必要があり、別のディレクトリに保存されている場合は構成ファイルが見つからず、例外がスローされます。このリスナ (ホスト) アプリケーション ドメイン用の構成ファイル Client.exe.config
のコードを次に示します。
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown
type="RemotableType, RemotableType"
url="https://localhost:8989/RemotableType.rem"
/>
</client>
</application>
</system.runtime.remoting>
</configuration>
このファイルは、リモート処理システムに対し、RemotableType
リモート オブジェクトの型情報は RemotableType
アセンブリにあり、このクライアントは https://localhost:8989/RemotableType.rem にある RemotableType
オブジェクトの作成と使用を試みることを通知します。構成ファイルの URL 属性の詳細については、「アクティベーション URL」を参照してください。このアプリケーションをネットワーク経由で実行するには、クライアント構成の "localhost" をリモート コンピュータの名前で置き換える必要があります。
メモ 上の構成ファイルには設定が少ししかありませんが、.NET リモート処理で発生するほとんどの問題は、これらの設定が正しくないか、クライアント アプリケーションの構成設定に一致していないことが原因で発生します。名前の入力を間違える、ポートの指定を忘れる、属性を無視するなどの問題がよくあります。リモート処理アプリケーションで問題が発生した場合は、最初に構成設定をチェックしてください。
参照
基本的な .NET リモート処理アプリケーションの構築 | 構成 | サーバー アクティベーション | リモート処理設定スキーマ | <wellknown>