方法 : クライアント アプリケーションを構築する
「方法 : リモート処理が可能な型を構築する」で定義したリモート型を使って、「ホスト アプリケーションの構築」で作成したアプリケーションにホストされるクライアントを構築するには、アプリケーション自体をリモート オブジェクトのクライアントとして登録し、そのオブジェクトをクライアントのアプリケーション ドメイン内にあるかのように呼び出します。.NET リモート システムはクライアント呼び出しを受け取り、それをリモート オブジェクトに転送し、結果をクライアントに返します。簡単なリモート処理クライアントを構築する方法を次のコード プロシージャに示します。
簡単なリモート処理クライアントを構築するには
System.Runtime.Remoting 名前空間をインポートします。
クライアント アプリケーションがリモート オブジェクトを見つけられるようにクライアント構成ファイルを作成し、そのファイルをクライアント アプリケーションと同じフォルダに保存します。たとえば、次の構成ファイルは、リモート処理システムに対し、
RemotableType
リモート オブジェクトの型情報はRemotableType
アセンブリにあり、このクライアントは https://localhost:8989/RemotableType.rem にあるRemotableType
オブジェクトの作成と使用を試みることを通知します。<configuration> <system.runtime.remoting> <application> <client> <wellknown type="RemotableType, RemotableType" url="https://localhost:8989/RemotableType.rem" /> </client> </application> </system.runtime.remoting> </configuration>
この構成ファイルの URL 属性の詳細については、「アクティベーション URL」を参照してください。このアプリケーションをネットワーク経由で実行するには、クライアント構成の "localhost" をリモート コンピュータの名前で置き換える必要があります。
メモ : 上記の構成ファイルには設定が少ししかありませんが、.NET リモート処理で発生するほとんどの問題は、これらの設定の一部が正しくないか、クライアント アプリケーションの構成設定に一致していないことが原因で発生します。名前の入力を間違える、ポートの指定を忘れる、属性を無視するなどの問題がよくあります。リモート処理アプリケーションで問題が発生した場合は、最初に構成設定をチェックしてください。
クライアント アプリケーションを
Client.
language-extension (または、コンパイルする言語の言語拡張子を付けた別のファイル名を使用) として保存します。ファイルは、「方法 : リモート処理が可能な型を構築する」で構築したRemotableType.dll
のコピーを保存したディレクトリと同じディレクトリに保存します。メモ : クライアント アプリケーションを、Listener.exe アプリケーションと同じディレクトリに保存しないでください。同じディレクトリにすると、アセンブリと型の解決の問題が発生するため、リモート参照の受け取りと利用ができないことがあります。
.NET Framework SDK に含まれているコマンド ライン ツールでクライアント アプリケーション、つまり呼び出し側の実行可能ファイルをコンパイルします。たとえば、クライアント アプリケーション
Client.
language-extension をコンパイルするには、コマンド プロンプトで、ディレクトリをクライアント アプリケーションを保存したフォルダに変更し、次のコマンドを入力します。vbc /r:RemotableType.dll Client.vb
csc /noconfig /r:RemotableType.dll Client.cs
使用例
' 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
// 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());
}
}
参照
処理手順
関連項目
概念
リモート アプリケーションの構成
サーバー アクティベーション