WCF между .NET 2010 и любым типом клиентов - PullRequest
1 голос
/ 02 мая 2011

Я полностью готов к работе с WCF, но мне нужен проект, который нуждается в этом.Хотя это и не указано в качестве требования, я хочу, чтобы эта служба работала без проблем с любым клиентом, независимо от технологии, в которой она написана (например, Java).

По сути, клиент отправит мне блок XML, который я проверюи процесс.Если все хорошо, я собираюсь вернуть XML-документ с двумя полями в нем (код выхода и сообщение).

Если я использую DataContracts (с 1 только для записи и 2 только для чтения), это поможет, или есть что-то большее, чем я вижу.

Большое спасибо!

Клей

Ответы [ 2 ]

1 голос
/ 02 мая 2011

DataContracts не являются «решением»;DC - один из возможных подходов к сериализации сообщений.хотите ли вы использовать DC, зависит от того, как XML должен выглядеть или может выглядеть, а также от того, как вы хотите или должны отображать объекты в памяти программы на сообщения (XML-документы или фрагменты).

В частности, если вы хотите или нуждаетесь в атрибутах xml в сообщениях, то DataContracts, вероятно, не является подходящим способом.

DC может поддерживать этот тип входного сообщения:

<request>
  <flavor>7</flavor>
  <param>eiueuie</param>
</request>

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

<request flavor='7'>
  <param>eiueuie</param>
</request>

..., в которых любой данных сообщения хранится в атрибутах xml.Если вы хотите использовать атрибуты XML, то вы, вероятно, хотите использовать XML Serializer.Если вам все равно, так или иначе, DC, вероятно, будет в порядке.

НО, сериализатор Xml не может отобразить частные поля или свойства в элементы XML, в то время как DC может.Итак, если ваша объектная модель требует этого, вы не можете использовать XML Serializer и вам следует использовать DC.

Чтобы узнать больше о компромиссе между DC и XMLS, прочитайте это .


Сказав все это, решение о том, использовать DC или нетэто только одна часть вашего дизайна.Вам также необходимо решить, хотите ли вы полную поддержку конверта SOAP (которая допускает такие вещи, как подписи сообщений и т. Д.) Или вам нужен более простой формат сообщения «REST», который, вероятно, лучше называть «простым старым XML».

А также существуют такие вещи, как создание экземпляров, размещение и активация (использовать IIS или сам хост?), Ведение журнала / аудит, безопасность (аутентификация и авторизация) и так далее.

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

0 голосов
/ 02 мая 2011

Контракт с данными - это просто определение передаваемых данных - это не объект домена, поэтому принятие решения о том, что будет прочитано, не имеет смысла.Клиент десериализует ответ, и вы не сможете контролировать его обработку данных = клиент может изменить ответ в любом случае.Ответ также может быть изменен любым компонентом обработки в конвейере WCF.

Просто начните с DataContract и базовой службы SOAP (basicHttpBinding) или базовой службы REST (webHttpBinding + webHttpBehavior), и все будет в порядке.

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