2016-07-21 6 views
0

私は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をオーバーライドする私の唯一の選択肢ですか?

+1

"エンティティ"はどのように見えますか?それらは、複数のナビゲーションプロパティ(循環参照さえある可能性もあります)を持つEntity Frameworkクラス、またはネスティングがほとんどない痩せたDTOにあふれていますか? – CodeCaster

+0

この情報だけでお手伝いすることはできません。あなたは[mcve]を提供できますか?サービス、運用、データ契約はどのように見えるのですか?返されたシンプルなPOCOか何か他のものはありますか?あなたは "エンティティ"と言います。エンティティフレームワークを使用していますか?もしそうなら、どのバージョン? [XmlSerializer'を 'DataContractSerializer'に置き換えてみましたか(https://msdn.microsoft.com/en-us/library/ms733901(v=vs.110).aspx)しましたか?その場合は、パフォーマンスにどのような影響がありますか? – dbc

+0

はい - 私はPOCO(何も特別なもの)を返す単純なロードコールを持っています - データ - 5プロパティ - すべての文字列 - 1つ長い。シリアル化すると、10個のCPUのうち1個だけが100%で実行され、残りのすべてがデータをシリアル化するとアイドル状態になることがわかりますが、実際のロードコールではすべてのプロセッサが使用されます。 – d1trut5r

答えて

-1

リンク:Transfer large amount of data in WCF service

別の可能性は、WCF-サービスによってシリアライズする必要があるレコードの量を削減することです。最後のリクエスト以降にレコードが更新されたかどうかをチェックし、フロントエンドに変更されたレコードのみを返すことができます。

+0

こんにちは、フィードバックのおかげで - 残念なことにそうでした。私たちは50,000件のリクエストを受け取りました。リクエストを処理する必要があります。 – d1trut5r

+0

あなたは答えとしてリンクを掲示すべきではありませんが、そのリンクで議論されていることを説明してください。この特定のリンクは、OPが既に成功しているWCFからの大きな回答をどのように送ることができるかを説明しています。 – CodeCaster

関連する問題