私は新しいWCF 4.5 Websocket サービスを調べていました。ブラウザ経由でサービスを呼び出す際に問題が発生しました。
結局のところ、(多くのグーグル検索の後)、Web ソケットのクライアントとして Web ブラウザーを扱っている場合、WCF 4.5 が機能する唯一の方法は、OperationContractを ' Action="*"で定義する場合です。 'タグ[ブラウザーから「特定の」関数を呼び出す明示的な方法はないため、「ws.send("asd")」を呼び出すだけでサーバーにメッセージを送信できます。したがって、単一のハンドラーを定義する必要があります。サービスへのすべての受信呼び出し。同様に、コールバック関数は 1 つしか存在できません]
ここで、'Action="*"'を使用すると、コントラクトを定義するときにデータ型 ' Message ' のみを使用できます。
エコーサーバーを作成したいが、データをアップロード/ダウンロードしたい場合、デフォルトの(バッファリングされた)モードでは、データ転送速度は想定されているものではありません(20MBファイル40 ~ 50 秒かかります)。速度を向上させる唯一の方法は、モードを「ストリーミング」に設定することです(「 StreamResponse 」を使用してみました)。
しかし、ここでの問題は、 Contracts を定義するときにデータ型として' Message 'しか使用できず、Message は SOAP 型定義を使用するため、別の方法で明示的に定義されている場合でも、' Buffered ' モードを使用することです。【間違っていたら訂正お願いします】
だから、私の質問は、WCF 4.5 Websockets で「ストリーミング データ転送」を実現する方法はありますか。
そして、はい、byteStreamMessageEncoding (4.5 で提供される最新のもの) を使用しています。そして、「netHttpBinding」はブラウザでは機能しないため、web.configで「カスタムバインディング」を使用しています。