- - PR -
.Net Remoting で複数のサービスを起動させる場合の対応
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-16 17:48
はじめまして、
ASP.Net を使用してアプリケーション開発を行っています。 これから、よろしくお願いします。 現在 ASP.Net から .Net Remoting のサービスを呼び出し、 データベースのトランザクションを行うプログラムを作成しようとしています。 ここで問題となるのが各サービスがバインドするチャンネル(ポート番号) なのですが複数のサービスを同一のポートで動作させることはできないのですか? クライアント側のコーディングでアプリケーションを指定するときに tcp://サーバ名:ポート名/アプリケーション名 で定義していたので、同一サーバ、同一ポート上に複数のアプリケーションを 割り当てることができると思っていたのですが… tcp://localhost:10000/App1 tcp://localhost:10000/App2 これができないとするとアプリケーションが増えるごとに 専用のポートを確保しなければならないと思うのですが 皆さんはどうなされているんですか? そもそも、大量のサービスを作成することが間違いなのでしょうか? | ||||
|
投稿日時: 2003-11-17 08:46
TCP/IPの構成や、ネットワークを利用するプログラミングはされたことがありますか?おありでないなら、この機会に勉強してください。なぜできないか、理解できると思います。
ヒント: 結局、口は1つなんですよ。その判別を行うのが・・・ | ||||
|
投稿日時: 2003-11-17 09:52
Jitta さん、ありがとうございます。
・IP アドレス(口) ・ポート番号(判断するもの) ということでしょうか Webサービスと同じように考えていたもので ポートはひとつだけバインドすれば、 アプリケーション名(クラス名?)で判別できると思っていました。 ということは、クライアントからの要求を受け付ける スーパーサーバのような存在があり、 そのプログラムが各アプリケーションをキックして結果をクライアントに 返却するような構造を作るのが良いのでしょうか? | ||||
|
投稿日時: 2003-11-17 10:35
・IPアドレス→場所(役所とか銀行とか考えて)
・ポート番号→1つの窓口 ・サーバアプリケーション→受付嬢 って考えてみると分かりやすいのかな
| ||||
|
投稿日時: 2003-11-17 11:03
そうですね。 ウェブサーバも、結局はTCPのポート、デフォルト80で口を開けて待っています。ネットワークの口は1つしかなく、TCPなどのフォーマット、ポート番号によって、内部で口を開けているバッファに渡されます。もともと、ポート番号は「アプリケーション専用」とするようになっていますから、例えば80番はWebサーバ、1521番はOracleのTNS Lisntenerなど、アプリケーション専用のポートにしてしまってかまわないと思います。 #予約番号には注意。3万以上じゃなかったかな? | ||||
|
投稿日時: 2003-11-17 11:38
アティさん ありがとうございます
面白いたとえですね、でもとても解りやすいです でも .netRemoting の場合ひとつの窓口には 一人の受付嬢しかいないみたいですね 受付嬢がいろいろな振る舞いをするようですけど | ||||
|
投稿日時: 2003-11-17 11:43
Jittaさん 引き続きありがとうございます
よくわかりました、ありがとうございます。 更新プロが100本ほどあるとして、100個のサービスを作成して 各サービスがポートをバインドするのは現実的ではないでしょうか?… | ||||
|
投稿日時: 2003-11-17 19:18
このような方法もあると思います。 通信プロトコルがDCOMになりますが、.NET Remotingアプリケーションの ホストプロセスをDllhost.exeにする。 後、ベンダから提供されているチャネルを使用するなど。 |