2009-08-20 3 views
4

私は安らかなサービスをアップグレードしており、DataContractSerializerを使用してレスポンスを出力しています。以前のバージョンでは、XmlSerializerを使用したカスタムシリアル化が使用されました。このバージョンでは属性が多く使用されていてDCSは決して使用しないため、gzipで圧縮したときの新しい応答サイズは以前のバージョンの1.5倍です。 (または圧縮されていないときはサイズの3倍近く)。DataContractSerializer XML XMLシリアライザ出力の2倍のサイズ - これは本当に高速でスケーラビリティに優れていますか?

私の質問は、DCSが実際にXmlSerializerよりも高速でスケーラブルなソリューションになるかどうかです。

+1

DCSは一般的に高速です。高速に最適化されていますが、やや制限されています(属性はサポートされていません)。シリアライズ/デシリアライゼーション、または小規模なペイロードのスピードを重視する必要があります。通常、どちらも選択できません。 –

+0

あなた自身のためにいくつかの測定をする必要があるでしょう - あなたの与えられたシナリオでもっと重要なのは:スピード(デ)シリアライゼーション、またはXMLペイロードのサイズです - あなたは本当に最終的にそれを決めることができます –

+0

入力したマーク。これは高速になるように設計されているので(パブリックAPI、モバイルユーザー、応答時間要件)、それはかなり簡単な呼び出しです。私はガイダンスのすべてがスピードに関して誤解を招くように見えることに少し失望しています。うまくいけば、この非常に有用な情報が出てくるでしょう。 –

答えて

4

誰が速くてスケーラビリティになると言いましたか?私はそれがDCSの重要な利点の1つであることを覚えていません。かつてDCSがより速くシリアル化できると言われていましたが、送信時間はしばしばシリアル化時間を短くします。 10%速くシリアル化し、大きなペイロードを生成すると、実際には全体のレイテンシが20%増加することがあります。

サイズが気に入らない場合は、DataMember attributeの短い名前を使用して元のXMLを縮小できます。この方法はXmlSerializerでもXmlElement属性を使用して動作します。 DCSを使用すると、要素対属性のサイズの経済性のために、XmlSerializerの最小サイズの点で常に不利になります。

+1

私が行った検索のほとんどは、XmlSerializerでDCSをお勧めします。あなたの答えは、原則として自分の懸念に同意することを示唆しているようです。誰か?誰でも実世界のベンチマークのラインに沿って何かを持っていますか? –

+0

研究はどこで手に入りましたか?ここでは、 "DCSは涼しい、XmlSerializerは昨日sooooです"という態度ですが、私はそれに同意せず、それを理解しません。ベンチマークするのは難しいことではありません。しかし、私は、perfがあなたを他のものよりも選択するための主要な基準であるべきではないことを示唆します。保守性、保守性、信頼性などを見てください。 – Cheeso

+0

Cheesoの返信をありがとう。私はスピードが一般的に二次的であるという見通しに同意し、DCSが優れた技術であることに同意しないことに私は同意します。 私は、私たち自身のサイトとパートナーの両方に遭遇しなければならないスケーラビリティと応答時間の要件を備えた、非常に人身売買された公開されたAPIに取り組んでいます。一般公開されているので、私は下位互換性も維持できなければなりません。つまり、私はこの決定にしばらくお待ちしています。 –

1

XMLペイロードのサイズを縮小するという考えでは、DataContractSerializerがXMLSerializerよりも遅いと答えているようです。 (私にとって、実世界のパフォーマンスを測定する上で重要な要素です)。 DCSには良い点がいくつかありますが、速度が重要な場合はスキップしてください。

誰かがこれに同意しないかどうか本当に興味があります。

+1

私は、XMLのサイズがパフォーマンスの良い尺度であるとは思っていません。 XMLは圧縮されますか?暗号化された?テキストとして送信されますか?どのエンコーディングで?バイナリとして?これは、XMLシリアライザがほとんどのオプションを提供していないことを除いて、間違った方法です。 –

+0

xバイト/秒をダウンロードでき、ソリューションaが10バイト、ソリューションbが20の場合、サイズがパケットのサイズを下回らない限り、aはbと同じ長さで送信するのに2倍の時間がかかります。 私は、ネットワーク速度がCPUよりもかなりボトルネッキングしていると仮定しているので、10-15%のCPU時間はおそらく式をかな​​り変更しません。私の質問では、応答のサイズをプレーンテキストで指定し、gzip圧縮で指定しました。エンコーディングは、サイズを線形に変更するので、問題ではありません。つまり、JSONSerializerも使用しています。その柔軟性はいいです –

関連する問題