私はWCFをわかりやすく理解できないという奇妙なシナリオがあります。WCFから50,000のエンティティを返すパフォーマンスが悪い
私は50,000レコードをリストし、自分のフロントエンドに戻す「エンティティ」を作成します。 プロセス全体が完了するまでに2秒かかります。
しかし、シリアライズ開始サーバー側は自分の「コード」外ですが、データをシリアル化するために1つのプロセッサしか使用しません。これには4分かかりますか? "onserialize"をオーバーライドする以外は、他にどのようなオプションがありますか?
私はBasicHttpChannelを使用します - 現在セキュリティはありません - エンコードはデフォルトであり、MTOMではありません。
アドバイスはありがたいです - ありがとう!
EDIT:
私はPOCO(何も特別な)を返す単純なロード・コール持っている - データのみ - 5つのプロパティ - すべての文字列 - 1長期。
EDIT: 明示するには、データ(POCO)が「呼び出し」が返されるところの「エントリポイント」に再び到達するまで、WCF経由でフロントエンドからデータをロードするには2秒かかります。
その後、私は1つのプロセッサ "スパイク"を約100%の約4分間しか見ません - 私の意見はデータがシリアル化されて返される場所です - 私はWCFにもっと多くのプロセッサを許可するオプションがあるかどうかを知りたいOnSerializingをオーバーライドする私の唯一の選択肢ですか?
"エンティティ"はどのように見えますか?それらは、複数のナビゲーションプロパティ(循環参照さえある可能性もあります)を持つEntity Frameworkクラス、またはネスティングがほとんどない痩せたDTOにあふれていますか? – CodeCaster
この情報だけでお手伝いすることはできません。あなたは[mcve]を提供できますか?サービス、運用、データ契約はどのように見えるのですか?返されたシンプルなPOCOか何か他のものはありますか?あなたは "エンティティ"と言います。エンティティフレームワークを使用していますか?もしそうなら、どのバージョン? [XmlSerializer'を 'DataContractSerializer'に置き換えてみましたか(https://msdn.microsoft.com/en-us/library/ms733901(v=vs.110).aspx)しましたか?その場合は、パフォーマンスにどのような影響がありますか? – dbc
はい - 私はPOCO(何も特別なもの)を返す単純なロードコールを持っています - データ - 5プロパティ - すべての文字列 - 1つ長い。シリアル化すると、10個のCPUのうち1個だけが100%で実行され、残りのすべてがデータをシリアル化するとアイドル状態になることがわかりますが、実際のロードコールではすべてのプロセッサが使用されます。 – d1trut5r