Рассчитать размер пакета (datacontract), который идет над WCF? - PullRequest
4 голосов
/ 29 февраля 2012

Можно ли рассчитать размер (комплексного) объекта (с dataContract), который я отправляю через WCF?Мне нужно рассчитать размер как для объекта запроса, так и для объекта ответа, и мне нужно сделать это в приложении winform.

Могу ли я выполнить сериализацию объектов и затем получить общий размер?

Ответы [ 3 ]

2 голосов
/ 29 февраля 2012

Вы можете вручную сериализовать / десериализовать объекты самостоятельно. Вот простой пример сериализации и получения длины.

[DataContract(Name = "Person", Namespace = "http://www.woo.com")]
    class Person
    {
        [DataMember()]
        public string Name;
        [DataMember()]
        public int Age;        
    }

код вызова (в консольном приложении)

        Person p = new Person();
        p.Name = "Sean Cocteau";
        p.Age = 99;

        DataContractSerializer ds = new DataContractSerializer(p.GetType());

        using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
        {
            ds.WriteObject(ms, p);                
            // Spit out

            Console.WriteLine("Output: " + System.Text.Encoding.UTF8.GetString(ms.ToArray()));
            Console.WriteLine("Message length: " + ms.Length.ToString());
        }

        Console.ReadKey();

В отношении выполнения этого автоматически, скажем, при каждом вызове WCF может потребоваться создание собственной пользовательской привязки , которая добавляет это к сообщению.

0 голосов
/ 29 февраля 2012

Вы можете использовать svctraceviewer для отслеживания активности и сообщения , а затем вы можете увидеть фактическое сообщение, передаваемое по WCF.Однако кажется, что этот инструмент может не дать вам общий размер.

Этот пост может помочь.

0 голосов
/ 29 февраля 2012

Я думаю, что перехватчик сообщений поможет, вы можете добавить поведение конечной точки к конечной точке и обработать httpwebrequest / response.

Для получения дополнительной информации, перехватчик сообщений WCF Google, вы найдете много полезных вещей.

Надеюсь, это поможет.

...