WP приложение с WCF - PullRequest
       2

WP приложение с WCF

1 голос
/ 08 ноября 2011

Я делаю приложение WP7, которое подключается к базе данных SQL через WCF.Но после добавления клиентского прокси и его тестирования я получил эту ошибку.

Имя типа или пространства имен IExtensibleDataObject не существует в пространстве имен System.Runtime.Serialization (отсутствует ссылка на сборку?)

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Очевидно (и согласно этому блогу ) .NET Compact Framework, используемый WP7, не предоставляет IExtensibleDataObject в пространстве имен System.Runtime.Serialization.

Альтернативой является использование инструмента генерации прокси-сервера Silverlight Service Model для создания клиентского прокси. Полученный код должен работать на WP7.

0 голосов
/ 09 ноября 2011

Возможно, стоит проверить вашу потребность в реализации IExtensibleDataObject.Это разработано для прямой совместимости между контрактами данных различных версий, см. Совместимые с форвардными контрактами данных .

Если вы (1) не работаете над сценарием, который требует циклических данных (например, отправка сообщения в службу и его отправка обратно с тем же договором на данные в нем) и (2) не нужно поддерживать клиента, использующего новый договор на данные, отправляющий сообщение службе, которая понимает толькопредыдущая версия контракта на данные, которая затем возвращает сообщение, используя отправленные данные, обратно в новую версию клиента.Хотя это может быть важным сценарием, это не то, что каждый должен поддерживать.Часто обратной совместимости достаточно.И подход IExtensibleDataObject предполагает, что дополнительные данные, содержащиеся в новом контракте данных, могут быть проигнорированы логикой старой службы и просто возвращены вызывающей стороне без изменений.Опять же, это относится к некоторым случаям, а не к другим.В простейшем случае, что заставило бы вас поддерживать новую версию телефонного приложения, возвращающую данные в более старую версию службы?

Если вы не думаете, что вам нужна эта возможность, тогдавозможно, стоит подумать об удалении контракта IExtensibleDataObject из вашего сервиса.

Если вам нужен такой стиль прямой совместимости, тогда другим вариантом будет работа без прокси-серверов, созданных WCF, создание канала, отправка и получение системы..ServiceModel.Channels.Messages и обработайте сообщение SOAP самостоятельно, включая решение, что вы хотите сделать с дополнительными элементами XML, которые не были частью исходного контракта.Определенно сложная тема, но это можно сделать, если вы решите на это.

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