Сериализация массива WCF - PullRequest
       5

Сериализация массива WCF

3 голосов
/ 14 апреля 2009

Я использую WCF OperationContract, который принимает массив целых чисел в качестве аргумента. Он использует basicHttpBinding.

Я заметил, что сгенерированный SOAP от клиента, сгенерированного с помощью Visual Studio «Добавить веб-ссылку», включает в себя xmlns, таким образом:

<ids>
  <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">100</string>
  <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">101</string>
  <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">102</string>
   ... etc
</ids>

Это увеличит размер сериализованного потока с большими массивами. Есть ли способ устранить этот атрибут xmlns?

Для клиента WCF сгенерированный SOAP выглядит примерно так, как я ожидал:

<ids xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <a:string>100</a:string>
  <a:string>101</a:string>
  <a:string>102</a:string>
  ... etc..
</ids>

Ответы [ 2 ]

1 голос
/ 16 апреля 2009

Это, к сожалению, функция прокси клиента, а не вашего сервиса. В этом примере вы смотрите на клиента, использующего сериализацию XML против сериализации контракта данных. Одно просто лучше, чем другое, делает XML более компактным.

Возможно, вам повезет больше с генератором типов в WSE 3.0 ( ссылка ). Возможно, есть набор тегов атрибутов XML, которые вы можете поместить в класс, чтобы он лучше сериализовался, и, возможно, это интегрированы в WSE, но я не на все 100%.

Вы должны сообщить нам, что вы решили. Очень интересно.

0 голосов
/ 15 апреля 2009

Я не слишком знаком с сериализацией, но может ли это быть различием между SOAP 1.1 и 1.2? Держу пари, что вы можете указать любой формат. Есть ли веская причина не просто использовать клиент WCF?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...