- PR -

.Net Remoting で複数のサービスを起動させる場合の対応

投稿者投稿内容
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2003-11-16 17:48
はじめまして、
ASP.Net を使用してアプリケーション開発を行っています。
これから、よろしくお願いします。

現在 ASP.Net から .Net Remoting のサービスを呼び出し、
データベースのトランザクションを行うプログラムを作成しようとしています。
ここで問題となるのが各サービスがバインドするチャンネル(ポート番号)
なのですが複数のサービスを同一のポートで動作させることはできないのですか?

クライアント側のコーディングでアプリケーションを指定するときに
tcp://サーバ名:ポート名/アプリケーション名
で定義していたので、同一サーバ、同一ポート上に複数のアプリケーションを
割り当てることができると思っていたのですが…
tcp://localhost:10000/App1
tcp://localhost:10000/App2

これができないとするとアプリケーションが増えるごとに
専用のポートを確保しなければならないと思うのですが
皆さんはどうなされているんですか?

そもそも、大量のサービスを作成することが間違いなのでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-17 08:46
 TCP/IPの構成や、ネットワークを利用するプログラミングはされたことがありますか?おありでないなら、この機会に勉強してください。なぜできないか、理解できると思います。

ヒント:
結局、口は1つなんですよ。その判別を行うのが・・・
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2003-11-17 09:52
Jitta さん、ありがとうございます。

・IP アドレス(口)
・ポート番号(判断するもの)
ということでしょうか

Webサービスと同じように考えていたもので
ポートはひとつだけバインドすれば、
アプリケーション名(クラス名?)で判別できると思っていました。

ということは、クライアントからの要求を受け付ける
スーパーサーバのような存在があり、
そのプログラムが各アプリケーションをキックして結果をクライアントに
返却するような構造を作るのが良いのでしょうか?
アティ
ベテラン
会議室デビュー日: 2003/08/14
投稿数: 91
お住まい・勤務地: KANAGAWA
投稿日時: 2003-11-17 10:35
・IPアドレス→場所(役所とか銀行とか考えて)
・ポート番号→1つの窓口
・サーバアプリケーション→受付嬢
って考えてみると分かりやすいのかな
引用:

・IP アドレス(口)
・ポート番号(判断するもの)

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-17 11:03
引用:

駆け出しプログラマさんの書き込み (2003-11-17 09:52) より:

ということは、クライアントからの要求を受け付ける
スーパーサーバのような存在があり、
そのプログラムが各アプリケーションをキックして結果をクライアントに
返却するような構造を作るのが良いのでしょうか?


 そうですね。
 ウェブサーバも、結局はTCPのポート、デフォルト80で口を開けて待っています。ネットワークの口は1つしかなく、TCPなどのフォーマット、ポート番号によって、内部で口を開けているバッファに渡されます。もともと、ポート番号は「アプリケーション専用」とするようになっていますから、例えば80番はWebサーバ、1521番はOracleのTNS Lisntenerなど、アプリケーション専用のポートにしてしまってかまわないと思います。
#予約番号には注意。3万以上じゃなかったかな?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2003-11-17 11:38
アティさん ありがとうございます

引用:

・IPアドレス→場所(役所とか銀行とか考えて)
・ポート番号→1つの窓口
・サーバアプリケーション→受付嬢
って考えてみると分かりやすいのかな



面白いたとえですね、でもとても解りやすいです
でも .netRemoting の場合ひとつの窓口には
一人の受付嬢しかいないみたいですね
受付嬢がいろいろな振る舞いをするようですけど
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2003-11-17 11:43
Jittaさん 引き続きありがとうございます

引用:

 ウェブサーバも、結局はTCPのポート、デフォルト80で口を開けて待っています。ネットワークの口は1つしかなく、TCPなどのフォーマット、ポート番号によって、内部で口を開けているバッファに渡されます。もともと、ポート番号は「アプリケーション専用」とするようになっていますから、例えば80番はWebサーバ、1521番はOracleのTNS Lisntenerなど、アプリケーション専用のポートにしてしまってかまわないと思います。
#予約番号には注意。3万以上じゃなかったかな?



よくわかりました、ありがとうございます。

更新プロが100本ほどあるとして、100個のサービスを作成して
各サービスがポートをバインドするのは現実的ではないでしょうか?…
Hisashi.O
会議室デビュー日: 2003/08/04
投稿数: 7
投稿日時: 2003-11-17 19:18

このような方法もあると思います。

通信プロトコルがDCOMになりますが、.NET Remotingアプリケーションの
ホストプロセスをDllhost.exeにする。

後、ベンダから提供されているチャネルを使用するなど。

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