1

我们有一些由 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 ...

}

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

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

您是否知道有一种工具可以捕获和分析正在发送的 XML 消息,以便我可以找出占用最多空间的内容?

4

2 回答 2

0

前段时间,我为 CodeProject 写了一篇文章,其中描述了如何构建 WCF 托管程序(不是您的问题)并实现了一个IEndpointBehavior显示消息内容的方法。

也许你可以试一试。

于 2009-10-15T21:17:43.520 回答
0

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

于 2009-10-17T16:52:30.843 回答