代码之家  ›  专栏  ›  技术社区  ›  John Rayner

分析XML序列化对象图以找出占用大部分空间的内容

  •  1
  • John Rayner  · 技术社区  · 15 年前

    我们有一些由wcf服务公开的对象(使用 wsHttpBinding )并序列化为XML。以下是其中一个的摘录:

    [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 ...
    
    }
    

    如您所见,有许多集合,其中一些包含的对象下面还有更多的子对象。当我们对我们的生产数据运行此操作时,我们发现虽然大多数个人记录都很好,但有些记录会转换为非常大的序列化消息(例如,>500 KB)。

    现在我希望我们需要开始修剪对象图,但我想找出哪些数据位对序列化消息的贡献最大。例如,它是 Address 对象,或者它是 InternationalExperience 物体。

    您知道有一个工具可以捕获和分析正在发送的xml消息,以便我能够找出占用空间最大的是什么吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Rubens Farias    15 年前

    不久前我写了一篇 article for CodeProject 在这里,我描述了如何构建一个wcf hoster(不是您的问题)并实现了一个 IEndpointBehavior 显示消息内容。

    也许你可以试试。

        2
  •  0
  •   Alex    15 年前

    是的,有一个工具。您可以使用wcf配置文件工具启用消息日志记录,并检查大消息。svctraceviewer允许您分析跟踪数据。在msdn中搜索“消息日志”。