Переносимые / совместимые контракты WCF

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

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


person Randolpho    schedule 27.01.2009    source источник


Ответы (2)


Проблемы WCF DateTime

Что касается вашего вопроса о 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

person EnocNRoll - AnandaGopal Pardue    schedule 27.01.2009

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

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

person Steve Severance    schedule 27.01.2009