RRQMSocket は、統合された超軽量ネットワーク通信サービス フレームワークです。高同時接続、高同時処理、イベントサブスクリプション、プラグイン拡張、マルチスレッド処理、メモリプール、オブジェクトプールなどの特徴を備えており、ユーザーはより簡単かつ迅速にネットワークフレームワークを構築できます。伝送効率の点では、同期伝送は20w/s、非同期伝送は60w/sに達します。サーバーの受信と処理の効率は、スレッドの数に依存します。
サポート環境:
.NET Framework 4.5 以降。
.NETCore3.1以降。
.NETStandard2.0以降。
サポートされているフレームワーク:
WPF
ウィンフォーム
ブレイザー
ザマリン
単核症
団結
その他 (つまり、すべての C# システム)
特徴:
1. オブジェクトプール
RRQMSocket にはオブジェクト プールの多くのアプリケーションがあり、最も重要なものは接続オブジェクト プールと処理オブジェクト プールの 2 つです。接続オブジェクト プールとは、クライアントが正常に接続すると、まず接続オブジェクト プール内で TcpSocketClient を検索し、存在しない場合は作成することを意味します。クライアントがオフラインになると、その TcpSocketClient がリサイクルされます。これが ID を再利用する理由です。
次に、RRQMSocket では、データを受信するスレッドと IOCP カーネル スレッドが分離されます。つまり、クライアントは 10,000 個のデータをサーバーに送信しますが、サーバーは受信後の処理が非常に遅くなります。次に、従来の iocp は受信速度を確実に低下させ、輻輳が発生していることをクライアントの TCP ウィンドウに通知し、クライアントに送信を一時停止させます。ただし、RRQMSocket では、受信したデータはすべてキューに格納されますが、同時に、受信したメッセージ情報を処理するためにスレッドが割り当てられます。 lake」を使用すると、データ処理能力が大幅に向上します。
2. マルチスレッド
処理オブジェクトプールの存在により、マルチスレッド処理が容易になります。クライアント接続が完了すると、クライアント補助クラス (TcpSocketClient) のメッセージ処理ロジック スレッドが自動的に割り当てられ、サーバー スレッドの数が 10 の場合、最初に接続されたクライアントはスレッド 0 に割り当てられ、2 番目の接続はスレッド 0 に割り当てられます。スレッド No. 1 などに循環的に割り当てられます。クライアントはデータを受信すると、現在のスレッドが所有するキューにデータを入れ、実行のためにスレッドをウェイクアップします。
3. 従来の IOCP と RRQMSocket
RRQMSocket の IOCP も従来のものとは異なり、Microsoft の公式の例を挙げると、MemoryBuffer を使用してメモリを解放し、それを均等に分割し、データを受信した後、セッションごとに領域を割り当てます。データをコピーしてからコピーする処理です。 RRQMSocket は、各受信の前にメモリ プールから使用可能なメモリ ブロックを取得し、データの受信後にそのメモリ ブロックを直接スローするため、小規模な設計ではありますが、コピー操作が回避されます。 , しかし、64kbのデータを1000w回送信すると性能が10倍も違います。したがって、これに基づいてファイル転送の効率は高くなります。
4. データ処理アダプター
皆さんも HPSocket や SuperSocket などの他の Socket 製品を使ったことがあると思いますが、RRQMSocket の設計も他の製品の優れた設計思想を取り入れており、データ処理アダプターもその 1 つですが、他の Socket 製品との違いは何ですか?他の製品の設計では、RRQMSocket のアダプター機能がより強力になっており、実際のデータを無視して、必要なデータをシミュレートして、データのパケット化の問題を解決できます。スティッキー パケットの問題を解決するには、HTTP プロトコルを直接解析し、アダプターによる処理後に HttpRequest オブジェクトを返すこともできます。
5. 粘着性のあるパッケージと下請けソリューション
RRQMSocket で TCP パケットのスタックやサブパケットの問題に対処するのは非常に簡単です。さまざまなデータ処理アダプターを変更するだけです。たとえば、固定ヘッダーを使用するには、FixedHeaderDataHandlingAdapter のインスタンスを TcpSocketClient と TcpClient に割り当てるだけです。対応するプロセッサには、固定長、終端文字の分割などもあります。