WCFプリミティブ型vs複合型
-
21-09-2019 - |
質問
よって、WCFサービスのリストを返しオブジェクトを記述する者は、システム。
記録数は確かに大きりしているのか教えてくださいまっていただいた皆様ありがとう人がいます。より新しい列挙型で複雑なタイプの消費量より帯域幅させることによ性値(男女)またはプリミティブ型のためこのようなbool IsMale?
解決
非常に少ない点への切り替えbool;るなどが有名ですが、これら:
<gender>male</gender> (or an attribute gender="male")
または
<isMale>true</isMale> (or an attribute isMale="true")
ない;-p
の記録カウントは本当に大---
場合帯域幅が問題となり、 制御の両端のサービス, しくは変更できるエンティティのようなものその他のオプション:
- 前の圧縮データとしては、例えばgzip、パス(代)
byte[]
またはStream
, このよMTOMのサービス - (またはスイッチをシリアライザ;proobuf-netは、WCFフック、実現できる重要な帯域幅に改善し、デフォルトの
DataContractSerialier
(してもらうことを目的としてをMTOM).試験に基づくNorthwindデータ (こちら) そのまま縮小736,574バイト133,010. や 削減のCPUに必要な工程で(win win).のための情報を低減させることができenumsを整数、通常は必要だけを1バイトの列挙型値を1バイトの特定の分野対<gender>Male</gender>
, は、下UTF8は21バイトをより多くのその他のエンコーディング)gender="male"
14バイトまでとなります。
しかし、いずれかを変更様お休み頂きますので予めサービスの場合についての呼び出し側予定者正規のソープ...
他のヒント
enum
を使用しない理由は、XMLスキーマがenum
の概念に相当を持っていないということです。つまり、それは名前付きの値の概念がありません。結果は、列挙型は、常にプラットフォーム間で翻訳していないということです。
の代わりに使用ブール値、または単一文字のフィールドます。
あなたが特定の問題に実行するか、または変更の必要性に遭遇するまで、
の私はあなたがどのような方法でそれをモデル化することをお勧めしたいが、最も自然なようです。の
WCFは、抽象基本的な細部に設計されており、帯域幅が懸念されるならば、私はブール値、intまたは列挙型はすべて、おそらく4バイトになると思います。あなたは、ビットマスクを使用するか、1バイトを使用することによって最適化することができます。
ここでも、APIおよび保守の使いやすさは、あなたが好きですこれは、おそらくもっと重要なのですか?
if( user[i].Sex == Sexes.Male )
if( user[i].IsMale == true; ) // Could also expose .IsFemale
if( user[i].Sex == 'M' )
など。もちろん、あなたは複数を公開することができます。
所属していません StackOverflow