Вопрос

Мне было интересно, есть ли у кого-нибудь хорошие советы по разработке контрактов WCF с учетом совместимости веб-служб, как с точки зрения более старых технологий веб-служб Microsoft (напримерWSE) и технологии, отличные от Microsoft, такие как Java, вызывающие веб-службы WCF.

Например:существуют ли какие-либо специальные правила, которые необходимо учитывать при указании DateTime в качестве типа в вашем контракте?Как насчет словарей и хэш-таблиц?С какими проблемами вы можете столкнуться при использовании различных доступных привязок?

Это было полезно?

Решение

Проблемы с датой и временем WCF

Что касается вашего вопроса DateTime, вы правы, беспокоясь о передаче DateTime через WCF.Это лишь одно звено из многих, которые жалуются на трудности...http://daveonsoftware.blogspot.com/2008/07/wcf-datetime-field-adjusted.html

Относительно эквивалентности типов

В соответствии с разделом 3.1.3 книги Джувала Лоуи "Программирование сервисов WCF", 2-е издание...

WCF предлагает неявные контракты данных для примитивных типов, потому что существует промышленный стандарт для схем этих типов.

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

Чтобы иметь возможность использовать пользовательский тип в качестве параметра операции, существует два требования:во-первых, тип должен быть сериализуемым, а во-вторых, и у клиента, и у службы должно быть локальное определение этого типа, которое приводит к одинаковой схеме данных.

Возможно, вы также захотите ознакомиться с разделом F.4.Контракты с данными, которые являются частью его Стандарта кодирования WCF.Пункт № 9 применим к вашему вопросу...

Не передавайте типы, специфичные для .NET, такие как как Type, в качестве параметров операции.

Привязки Устанавливают Ожидания

Привязки, основанные на WSHttpBindingBase (поиск в Reflector.NET для его четырех производных), будут наиболее совместимыми, поскольку они предназначены для взаимодействия.

Рекомендация к книге

Я очень рекомендую книгу Юваля: http://www.bookpool.com/sm/0596521308

Другие советы

Поэтому, если вы хотите взаимодействовать со службами, отличными от Microsoft, вы, вероятно, захотите держаться подальше от любого непримитивного типа.WCF использует сериализацию для кодирования данных для передачи, и Java, например, не сможет десериализовать хэш-таблицу.Однако WCF построен поверх SOAP, поэтому, немного поработав, вы сможете заставить любую функцию SOAP работать между JAVA-клиентом и службой WCF или наоборот.

Просто не забывайте составлять контракты из примитивов, и у вас все должно получиться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top