1

wsHttpBindingWCF サービスによって ( を使用して) 公開され、XML にシリアル化されるオブジェクトがいくつかあります。以下はそのうちの 1 つの抜粋です。

[DataContract]
public class Person
{
    [DataMember] private string _forename;
    [DataMember] private string _middleInitial;
    [DataMember] private string _surname;
    [DataMember] private List<EducationRecord> _educationRecords;
    [DataMember] private List<Address> _addresses;
    [DataMember] private List<InternetAddress> _internetAddresses;
    [DataMember] private List<PhoneNumber> _phoneNumbers;
    [DataMember] private List<InternationalExperience> _internationalExperience;
    [DataMember] private List<ProfessionalQualification> _professionalQualifications;
    [DataMember] private List<KnownLanguage> _knownLanguages;

    // And there's more ...

}

ご覧のとおり、多くのコレクションがあり、含まれているオブジェクトの中には、その下にさらに子オブジェクトがあるものがあります。これを本番データに対して実行すると、ほとんどの Person レコードは問題ありませんが、非常に大きなシリアル化されたメッセージ (たとえば、500 KB を超える) に変換されるものがあることがわかります。

ここで、オブジェクト グラフの刈り込みを開始する必要があると思いますが、シリアル化されたメッセージに最も貢献しているデータのビットを見つけたいと思います。たとえば、それはAddressオブジェクトのリストですか、それともInternationalExperienceオブジェクト内のデータの一部ですか。

送信されている XML メッセージをキャプチャして分析し、最も多くのスペースを占めているものを特定できるツールを知っていますか?

4

2 に答える 2

0

はい、ツールがあります。WCF 構成ファイル ツールを使用してメッセージ ログを有効にし、大きなメッセージを調べることができます。SvcTraceViewer を使用すると、トレース データを分析できます。MSDN で「メッセージ ログ」を検索します。

于 2009-10-17T16:52:30.843 に答える
0

しばらく前に、CodeProject の記事を書きました。そこでは、WCF ホスティング サービスを構築する方法 (あなたの問題ではありません) を説明し、IEndpointBehaviorメッセージ コンテンツを表示するために を実装しました。

多分あなたはそれを試してみることができます。

于 2009-10-15T21:17:43.520 に答える