- PR -

C# remotingでのクライアントオブジェクトの登録

1
投稿者投稿内容
とっちゃん
会議室デビュー日: 2005/06/13
投稿数: 8
投稿日時: 2005-08-09 17:23
初歩的な質問ですみません。お知恵をお貸しください。

現在remotingの機能を使いメッセージの送受信を行うアプリケーションを作成するため
いろいろ調べているのですがひとつわからないことがあります。

たとえばMSDNライブラリでRemotingConfiguration.RegisterWellKnownClientTypeメソッド
のドキュメント
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemruntimeremotingremotingconfigurationclassregisterwellknownclienttypetopic.asp

を見ると以下のようなサンプルコードがあります。(抜粋)

ChannelServices.RegisterChannel(new TcpChannel());

RemotingConfiguration.RegisterWellKnownClientType(
typeof(HelloService),
"tcp://localhost:8082/HelloServiceApplication/MyUri"
);

HelloService service = new HelloService();
. . .

if(service == null) {
Console.WriteLine("Could not locate server.");
return;
}

ここで service == null でサーバへの未接続を判定していますが、このコードを実行すると
サーバが起動していない場合でも service == null になることがありません。
実際MSDNライブラリを探してみるとnewでオブジェクトを作成する時点ではサーバには接続さ
れずプロキシが作成されるだけで実際の接続はメッセージの送信時という記述があります。

にもかかわらず、MSDNのドキュメントには上記のようなサンプルがあちこちにあったりしま
す。
そんなわけでサーバの起動の有無をこのサンプルでは判断できないのですが、皆さんはこのよう
な場合どんな方法をお使いですか。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-08-09 18:20
引用:

とっちゃんさんの書き込み (2005-08-09 17:23) より:

ここで service == null でサーバへの未接続を判定していますが、このコードを実行すると
サーバが起動していない場合でも service == null になることがありません。
実際MSDNライブラリを探してみるとnewでオブジェクトを作成する時点ではサーバには接続さ
れずプロキシが作成されるだけで実際の接続はメッセージの送信時という記述があります。

にもかかわらず、MSDNのドキュメントには上記のようなサンプルがあちこちにあったりしま
す。
そんなわけでサーバの起動の有無をこのサンプルでは判断できないのですが、皆さんはこのよう
な場合どんな方法をお使いですか。


なんか、RegisterActivatedClientType のサンプルそのままで、チェック部分は修正忘れという感じがしますね。

サーバの起動を確認するのであれば、Httpのリクエストを投げてみるなり、メソッドを呼んでみるなりしないと無理だと思います。
※確実に調べようと思えばメソッドを呼び出すしかない気もしますが…

ひょっとしたらチャネルでチェックする方法とかもあるかもしれませんが、良く知りませんです。

--追記
httpのリクエストとか書きましたが、tcpチャネルでしたね…


[ メッセージ編集済み 編集者: なちゃ 編集日時 2005-08-09 18:22 ]
とっちゃん
会議室デビュー日: 2005/06/13
投稿数: 8
投稿日時: 2005-08-10 11:20
なちゃさんありがとうございます。

やはりリクエストを投げるなりメソッドを実行するしは方法はありませんか。
サーバー未起動の場合メソッドを実行してから接続不可で例外が発生するまで
結構時間がかかってしまうので、もっと早くサーバー状態を検知できればと思った
のですが。
1

スキルアップ/キャリアアップ(JOB@IT)