問題タブ [remoting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NETRemotingSpeedとVPN
クライアントアプリケーションとオブジェクトサーバー間の通信に.NETRemotingを使用するプロジェクトに取り組んでいます。開発の場合、クライアント、サーバー、およびMSSQLデータベースはすべてローカル開発マシンで実行されています。
私がオフィスで働いているときは、応答性は問題ありません。
ただし、自宅で仕事をしていると、速度が大幅に遅くなります。VPNから切断すると、速度が上がります(私は信じていますが、それは希望的観測かもしれません)。ワイヤレス接続を完全にオフにすると、すぐにフルスロットルになります。
私の想定では、リモーティングトラフィックは、ホームルーターやVPNに関係なく、すべての速度を低下させているポイントを経由してルーティングされています。
リモーティングトラフィックを完全にローカライズされたままにする方法について誰かが考えていますか?
c# - 非同期リモート呼び出し
別の Windows サービスで実行されているリモーティング シングルトン サーバーがあります (彼女を RemotingService と呼びましょう)。RemotingService のクライアントは ASP.NET インスタンス (多数) です。
現在、リモート クライアントは RemotingService を呼び出し、RemotingService 呼び出しが処理されている間はブロックします。ただし、リモーティング サービスは非常に複雑になり (より多くの RPC 呼び出しと複雑なアルゴリズムを使用)、asp.net ワーカー スレッドが非常に長い時間 (4 ~ 5 秒) ブロックされます。
この msdn articleによると、リモート RPC ごとに asp.net ワーカー スレッドがブロックされるため、これを行うとうまくスケーリングされません。非同期ハンドラーに切り替えて、asp.net ワーカー スレッドを解放することをお勧めします。
非同期ハンドラーの目的は、ハンドラーが元の要求を処理している間に、ASP.NET スレッド プール スレッドを解放して追加の要求を処理できるようにすることです。
これは問題ないように見えますが、リモート処理の呼び出しが依然としてスレッド プールからスレッドを使用しています。これは、asp.net ワーカー スレッドと同じスレッド プールですか?
asp.net ワーカー スレッドを解放するために、リモート シングルトン サーバーを非同期システムに変えるにはどうすればよいですか?
いくつかの重要な情報を見逃している可能性があります。質問に答えるために他に知っておくべきことがあれば教えてください。
.net - リモート サーバーの自動検出。放送するかどうか?
.Net リモート処理と通信するクライアント/サーバー アプリケーションがあります。クライアント側の構成を必要とせずに、クライアントがネットワーク上のサーバーを見つけられるようにする必要があります。
私の知る限り、リモーティングでの検出はサポートされていません。クライアントがブロードキャスト メッセージを介してサーバーを見つけることができる UDP ソリューションを実装する準備ができています。
先に進む前に、集合的なSOの知恵を聞きたい. これが最善の方法ですか?他の提案はありますか?
c# - .NET リモート サーバー オブジェクトに接続する最も簡単な方法は何ですか?
クライアント コードがリモート オブジェクトに関して必要な情報をすべて認識している場合、それに接続する最も簡単な方法は何ですか?
これは私が現在行っていることです:
.net - .NETリモーティングに使用されるIPポートに出入りするバイトを測定するにはどうすればよいですか?
.NET Remotingを使用して、Windowsサービスから「コントローラー」アプリケーションに定期的なステータス更新を取得しています。このアプリケーションは、サービスの実行状況に関するライブ統計を表示するために使用されます。
結果として生じるネットワークトラフィックは膨大であり、更新用のデータのサイズの何倍にもなります。そのため、非常に非効率的な方法でリモートコードを誤って実装したことは明らかです。修正に向けた最初のステップとして、サービスがコントローラーとの通信に使用しているIPポートのトラフィックを監視して、ベースラインを確立して修正を確認できるようにする必要があります。
トラフィック統計を取得するために使用できるユーティリティやコーディング手法を誰かが推奨できますか?ポートの「送信バイト数」カウントで十分です。
c# - .NET Remoting の使用時に未処理の例外をキャッチする方法
特定の例外がクライアント/サーバーの境界を越えないように、サーバー上のリモート オブジェクトでスローされた未処理の例外をすべてキャッチし、カスタム例外に変換する前にログに記録したいと考えています。
カスタムチャンネル同期を使用する必要があると思いますが、これを確認したり、他のアドバイスをしたりできる人はいますか?
c# - サービス メディエータを使用しない .NET IPC
.NET アセンブリをプラグインとして使用する 2 つの無関係なプロセスがあります。ただし、どちらのプロセスもいつでも開始/停止できます。サーバーである特定のプロセスに依存することはできません。実際、1 つのプロセスの複数のコピーが実行されている可能性がありますが、他のプロセスの 1 つのみです。
私は最初にこの記事に基づいて解決策を実装しました。ただし、これには、サーバーを実装するものをクライアントの前に実行する必要があります。
クライアントが最初に実行されたときにサーバーに何らかの通知を実装する最良の方法は何ですか?
c# - Java と .NET を使用してアプリケーションをブリッジするために Hessian バイナリ リモーティング プロトコルを使用した人はいますか?
Hessianはカスタム バイナリ シリアライゼーション プロトコル (オープンソースだと思います) であり、バイナリ クロス プラットフォーム リモーティング フレームワークの基礎を形成します。ここで誰かがそれを使用したことがあるかどうかを知りたいです。もしそうなら、一方の Java アプリと他方の C# アプリを橋渡しするソリューションから、どのようなパフォーマンスが期待できるでしょうか。(単純なクラスをシリアライズしていると考えてみましょう。単純なクラスの配列、リスト、辞書である可能性があります。)
c# - C#でリモート処理を介して外部IPアドレスを取得する
C#アプリケーションが実行されているコンピューターの外部IPを確認する必要があります。
アプリケーションでは、サーバーへの接続(.NETリモーティングを介して)があります。サーバー側でクライアントのアドレスを取得する良い方法はありますか?
(もう少し明確にするために、質問を編集しました。私が少し漠然としていたときに、質問に答えるために最善を尽くしたすべての親切な人々に謝罪します)
解決策:
自分に合った方法を見つけました。CommonTransportKeys.IPAddressにアクセスできるカスタムIServerChannelSinkProviderとIServerChannelSinkを実装することで、CallContextにクライアントIPを簡単に追加できます。
そして後で(クライアントからリクエストを受け取ったとき)、このようにCallContextからIPを取得します。
これで、IPをクライアントに送り返すことができます。