1

私はこれにかなりの数時間取り組んできましたが、私が経験していることに対する解決策は見つかりませんでした。

basicHttpBindingを使用してprotobufを介して3000のDTOのリストをシリアル化しています。WCFが実際にエンコードされたデータとともにノードを送信していることがわかります。問題は、この応答のサイズが約1 MBであり、呼び出しの最後のメソッドをステップ実行してから完了するまでに30秒かかることです。リストで.take(100)を実行すると、応答には約1〜2秒かかり、.take(1)は瞬時に実行されます。

3000レコードリストをprotobufを使用してメモリストリームに手動でシリアル化しようとしましたが、ほぼ瞬時にデータの転送に関係していると思いました。

これは、サービスとサイトが実行されているどのマシンでも複製できます。何か案は?

4

1 に答える 1

0

WCFを他のいくつかのテクノロジと比較するためのプロトタイピング中に、同様の問題が発生しました。protobuf-netを使用してシリアル化するようにWCFを構成したと思いましたが、正しく機能していませんでした。私にとって最も頭を悩ませたのは、エラーがなかったことです。WCFはサイレントにデフォルトでDataContractSerializerに設定されました。DataContractSerializerは、使用されるWCFバインディングに応じて、バイナリまたはXMLのいずれかでシリアル化します。basicHTTPBindingの場合、XMLにシリアル化されるため、当然、応答が大きく遅くなります。

Protobuf-netを使用してWCFが実際にシリアル化されていることを確認することをお勧めします。これが発生しているかどうかは、wireshark(または同様のツール)でパケットの内部を覗いてみることができるはずです。

これが<333に役立つことを願っています

于 2012-06-15T14:57:01.157 に答える