У нас есть некоторые объекты, которые предоставляются службами WCF (с использованием wsHttpBinding
) и сериализованы в XML. Вот выдержка из одного из них:Анализ 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 КБ).
Теперь я ожидаю, что нам нужно будет обрезать наш объектный граф, но я хотел бы узнать, какие биты данных вносят наибольший вклад в сериализованное сообщение. Например, это список объектов Address
, или это некоторый фрагмент данных в объектах InternationalExperience
.
Вы знаете инструмент, который будет захватывать и анализировать отправляемые XML-сообщения, чтобы я мог узнать, что занимает больше всего пространства?
Спасибо за предложение, но мой вопрос не в том, как получить сообщение. Трассировка WCF сделает это для меня, или я могу даже загрузить DataContractSerializer, сериализовать в MemoryStream и затем записать на диск. Я ищу совет по анализу захваченного XML. –