問題タブ [client-server]
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 - 非同期リモート呼び出しのキャンセル
クライアントが .NET Remoting を使用してサーバーと通信するクライアント サーバー アーキテクチャがあります。サーバーは、すべてのビジネス ロジックとデータベースのやり取りを処理します。実行に時間がかかり、返されるデータセットが非常に大きくなる可能性がある操作を追加する必要があります。そのために非同期呼び出しを採用することを考えています。ここで問題が発生します。クライアントがこの非同期呼び出しを行い、操作が SQL クエリを開始し、ユーザーがクライアントを閉じるか [キャンセル] をクリックすると、操作はどうなるでしょうか? SQL サーバーとの通信でビジー状態になっている保留中の非同期呼び出しをキャンセルする方法はありますか?
ありがとう。
wcf - WCF Reliable Sessions はメッセージの順序付けにどのように影響しますか?
信頼できるセッションを有効にすることについて Microsoft のドキュメントに記載されていることの 1 つは、サービスが受信した順序でメッセージを処理できるということです。
これは、1 つのセッション内のメッセージが順番に処理されるということですか? それとも、サービス内のすべてのセッションのすべてのメッセージが順番に処理されるということですか?
信頼できるセッションを有効にしなくても、netTcpBinding が既に信頼できることはわかっています。ただし、信頼できるセッションを有効にせずに WsDualHttpBinding のようなものを使用するとします...クライアントがリクエスト A を送信してからリクエスト B を送信すると、サービスが A の前に B を受信する可能性はありますか? それとも、クライアント A がメッセージ A を送信し、クライアント B がメッセージ B を送信した場合、A の前に B を処理する可能性があるということですか?
c# - マルチクライアント、C#の非同期ソケット、ベストプラクティス?
私はc#のtcp / ipソケットをよりよく理解しようとしています。私には、純粋に教育目的で機能するMMOインフラストラクチャ(ゲームの世界、地図、プレーヤーなど)を作成できるかどうかを確認したいと思っています。 「OMGZizは私のr0x0rMMORPGをWoWよりも優れたものにするつもりです!!!」のもう1つになるつもりです、あなたは私が話していることを知っています。
とにかく、この種のシステムの設計にどのように取り組むのか、どのようなものが必要なのか、そして何に注意すべきなのか、誰かが光を当てることができるかどうか疑問に思いました。
私の最初のアイデアは、システムを個別のクライアント/サーバー接続に分割し、各接続(独自のポート)でプレーヤー/モンスターの位置の更新、チャットメッセージの送受信などの特定のタスクを実行することでした。パケットに含まれる情報を知るためにデータにヘッダーを付ける必要がないため、データの処理が簡単になります。
それは理にかなっていて便利ですか、それとも私は物事を複雑にするだけですか?
あなたの応答は非常に高く評価されています。
client-server - サーバー アプリケーションの設計方法論
学部在学中に、Linux 用の POSIX ソケットを使用するネットワーク プログラミング コースを受講することにしました。参考資料として、TCP/IP を使用した Internetworking (comer と stevens) という本を使用しました。2008年はかなり時代遅れで、まだ適用可能なテキストであり、いくつかのサーバー設計を経ています.
この本であまり取り上げられていない設計の 1 つは、クライアントがバックエンド アプリケーション サーバーに接続し、単一の TCP 接続を介して複数の要求をサーバーに送信する場合です。複数のリクエストがスレーブソケットを介してサーバーに送信され、応答が同じスレーブソケットを介して送信されるためです。スレーブ ソケットは、応答と要求が同じソケットを介して受信されると輻輳します。全二重通信速度を可能にするために、エンドポイントとエンドポイント間の 2 番目の TCP 接続を許可する方が良いオプションでしょうか? サーバーのパフォーマンスを向上させるために使用できる他のアーキテクチャは何ですか?
client-server - リクエスト、レスポンス、サーバーの違いは何ですか?
リクエスト、レスポンス、サーバーの違いは何ですか?
datetime - サーバー時間を維持するための最良の方法は何ですか
多くのアプリケーションはサーバー時間を頻繁に必要とします。
サーバーへの要求を最小限に抑えて、クライアントマシンでサーバー時間を維持するための最良の方法は何ですか。
networking - ステートマシンを使用するネットワークサーバー/クライアントの汎用アーキテクチャ
全て、
そこで、クライアントがサーバーと通信するために使用したい単純なプロトコルを作成することを発明しました。これは典型的な(私が思うに)三相レイアウトです:
- 接続の確立(最終的には機能のネゴシエーションが含まれます)
- 実際のデータ交換-パケットは楽しく行き来し、それに応じて動作するそれぞれの受信者によって解釈されます
- 接続のティアダウン-一方の側は「これ以上したくない」と言い、もう一方の側は「そうなる」と言います(最終的には、会話を閉じるだけでなく、完了するまでもう一方の側がデータを送信できるようになります)
フレームワークは単純なセットアップです。サーバーはjava.net.ServerSocket.accept()を実行し、クライアントによる着信接続を処理するスレッドを開始します。これにより、サーバーが存在するホスト/ポートへのjava.net.Socket()が作成されます。が待っています。双方がjava.io.InputStreamとjava.io.OutputStreamを使用し、互いにデータを吐き出し、送信メッセージを組み立て、受信メッセージを解析します。これまでのところ、問題ありません。
これまでのところ、プロトコルはハードコーディングされています。接続の確立とティアダウンはほとんど問題ありませんが、データ交換の部分(私は全二重になりたい)はかなり混乱しています。
それで、私は考えます。これを良い方法で行い、同じ名前のデザインパターンを使用してステートマシンをセットアップしましょう。サーバーとクライアントのそれぞれの状態、遷移が発生するために発生する必要のあるイベントの種類、および遷移が発生したときに実行する必要のあるアクションについては、かなり明確です。それはよさそうだ-紙の上では、つまり。実際には、紙では解決できないいくつかの質問に悩まされてきました。
特に、ステートマシンの入力は...少し多様です。どうすれば、データの書き込み、データの読み取り、接続の確認(接続が閉じているか、切断されている可能性があります)を同時に行うことができますか?また、第1フェーズと第3フェーズでは、応答の待機時間が無限になる可能性を回避するためにタイマーを取得する必要があります。
ですから、理論ステートマシンとコードステートマシンの間のギャップを埋める助けに感謝します。
ところで、私はC / C ++ / C#も読むことができます-Javaに翻訳する必要はありません(これは私が使用しているものです)。
java - j2me サービスの検出と検出可能時間の同時発生
シンプルなクライアント/サーバー アプリケーションを作成しようとしています (すべてのアプリケーションは Bluetooth サービスとクライアントです)。クライアント コードは、Bluetooth デバイスを見つけて、ローカル データベースに登録します。しかし、調査が実行されているときは、発見できません。(サーバー コードは別のスレッドで実行されます)。エミュレーターは動作しますが (スキャン時間は 0)、実際の電話 (2 つの SE と 1 つの nokia) にインストールすると、スキャン時間は 10 ~ 15 秒です。この期間中、デバイスは別のデバイスによって検出されません。
何か案が?
.net - リモート処理のパフォーマンスは時間の経過とともに低下します
私は、通信目的で .NET 2.0 Remoting (サーバーのアクティブ化、TCP チャネルを介したバイナリ形式、Vista Ultimate) を使用するクライアント サーバー ソリューションに取り組んでいます。現在、私はアプリケーションのプロファイリングを行っており、すべてを同じマシンで実行しています。アプリケーションを起動すると、数分間はすべてが正常に機能し、その後突然、各リモート呼び出しの実行に数秒かかることに気付きました。私は両端にログインしており、すべての通話を記録しています。サーバー側の実装は実行にほんの一瞬しかかかりませんが、リモート呼び出し全体は低速です。さらにプロファイリングを行うと、サーバー側でリモート処理が低下することが示されました。リモート サービスの内部作業は数分の 1 秒以内に実行されますが、応答は非常に遅くなります。サーバーを再起動すると、すべてが数分間正常に戻ります。
誰かがそのようなことを経験しましたか?
ありがとう!
更新: リモート オブジェクトの有効期間を 1 日などに設定した場合でも、同じ問題が発生することを確認しました。
更新: Ingo Ramer ( HOWTO: Use Interface-based remote objects with config files ) によって提案されたパターンを使用しています。
クライアントコード:
サーバー側には、次のような適切な構成ファイルしかありません。
RemotingConfiguration.Configure("MyDomainService.exe.config", false); 以外は何もしません。私のサーバーでもクライアントコードでもありません。
c++ - C++ 用の単純な非同期マルチスレッド HTTP 要求ライブラリ
正直に言うと、現在、オンライン ゲーム用のクライアント/サーバーを作成しようとしています。私は貧乏でリソースが限られているため、PHP バックエンドを使用してサーバーの基本的な部分をテストし、最終的な目標は C++ でサーバー エンドを再構築することです。
Windows (XP および Vista が望ましい) 用の C++ ライブラリを探しています。これにより、ネットワークの問題の各部分に 1 つの専用の有限数のスレッドを使用できます。例として、スレッドを使用してプレイヤーの位置情報をサーバーに報告したい (そして、他のプレイヤーの位置情報に関する応答を受信する) が、そのエリアの 3D アートワークでバックグラウンド ダウンロードする別のスレッドが必要です。 /players、および組み込みのチャット システム用の別のスレッドなど。これらはすべて、互いに完全に独立している必要があります。
私はライブラリで何をしたいのかを知っています。設計のビットを理解しました。この正確な目的のための優れたライブラリがおそらくすでに存在することを知っているので、車輪を再発明するのは少しばかげていると感じています。それで、あなたの提案は何ですか?サーバーにデータを送信し、応答を受け入れる必要があります。理想的には、リクエストは完了時にイベントをトリガーする必要があり (そのため、すぐにデータを取得して何かを行うことができます)、複数のトランザクションを同時に処理できる必要があります。HTTP は素晴らしいボーナスですが、必要に応じて HTTP プロトコルを自分で処理できます。
ありがとう!