5

今日、セルフホスティングの WCF サービスに ServiceHost を使用しています。

WCF サービスの近くで、直接ソケット操作用の独自の TCP プログラムをホストしたい (ある種のブロードキャスト TCP ストリームへのリーエンなど)

URL 名前空間を制御する必要があります (そのため、example.com:port/myserver/stream?id=1 や example.com:port/myserver などの適切な URL を使用して、クライアントが TCP ストリームをサービスに直接送信できるようにする必要があります)。 /stream?id=anything であり、一度に 1 つのソケットに対して 1 つのクライアントという考えに煩わされないように、WCF サービスを自分のサーバーと同じポートに保持したい、またはそうあるべきであるwww.example.com:port/myWCF/stream?id=222... を呼び出すことができ、80 だけでなく任意のポートで動作するようにしたい)

これで私を助けてくれる体はありますか?

現在、WCFのみを使用しています。そして、私はそれがどのように機能するかを楽しんでいません。これは、TCP をクリアするために移行を開始したい理由の 1 つです。)

net-tcp バインディングやその他のクールな WS-* バインディングは使用できません (今日は、Flash、AJAX などのクライアントが簡単に接続できるように、最も単純なものを使用しています)。

大量のデータ転送をリアルタイムで行うために、ソケットを使用する前に作成したような接続プロトコルを実装する際に、高速で簡単な接続プロトコルが必要でした。

だから..何かアイデアはありますか?お願いします - 助けが必要です。

4

3 に答える 3

1

純粋なソケットにドロップダウンする場合は、サービスをプロキシとして機能させることもできます。WCF サービスが他のポートでリッスンし、アプリが目的のポートでリッスンするようにします。アプリでリクエストを受け取ったら、手動でヘッダーを解析し、サービスまたは WCF サービス向けの天気を確認します。WCF サービスを対象とする場合は、WCF サービスへの TCP 接続を開き、受信したデータをそれに渡し、WCF の応答をクライアントに返すだけです。

一方、独自のカスタム バインディングを作成することで、WCF を大幅に高速化できます。多くの場合、リフレクションを使用して行われるシリアル化で WCF が失われます (これは低速です)。これを回避すると、速度が大幅に向上します。

于 2010-04-12T12:15:31.860 に答える
0

WCF の問題がパフォーマンスである場合は、バイナリ ネット TCP バインディングを試して、XML シリアル化を排除してパフォーマンスを向上させる必要があります。

リアルタイム ゲームなどの一部の高トラフィック アプリケーションでは、UDP がプロトコルを通過するため、通信の大部分に UDP を使用します。TCP を使用すると、順序付けと信頼性が組み込まれますが、これにはパフォーマンスが犠牲になります。これは、パケットを正しい順序でアプリケーションに渡したり、失われたパケットを待機したりできるように、順序が正しくないパケットを待機するように暗黙的に遅延させるためです。再送信する。代わりに、UDP を使用して、TCP より厳密でないデータ検証用の独自のスキームを実装できます。

WCF で使用できる UDP オプションがありますが、独自に実装することもできます。WCF はメッセージ ポンプに過ぎず、さまざまなステップを必要なものに置き換えることができます。

于 2010-04-06T23:19:49.627 に答える
-1

これが役立つかどうかはわかりませんが、Net TCP 共有サービスをオンにしてみてください。

于 2010-04-11T11:05:43.347 に答える