Совместное использование объектов в службах WCF - PullRequest
0 голосов
/ 16 августа 2010

У меня проблема похожая на этот вопрос: Проблема с WCF и несколькими пространствами имен

Основное различие, которое я имею, состоит в том, что я не контролирую оба конца провода. Моя установка похожа на это:

My.Objects My.LoginService My.Service1 My.Service2

Первое, что вы делаете, это входите в систему через службу входа и получаете защитный билет. Объект билета находится в пространстве имен My.Objects. Для каждого последующего вызова в My.Service1 и My.Service2 вы должны передать билет безопасности для аутентификации вызова. Проблема, с которой я сталкиваюсь, заключается в том, что вместо того, чтобы клиент (на данный момент .net, но Java и другие в будущем) увидел один My.Objects.Ticket, ссылки на который разрешаются как My.LoginService.Ticket, My.Service1.Ticket, и My.Service2.Ticket. Когда клиент пытается передать объект, полученный во время входа в систему, любой другой функции, он получает ошибку несоответствия объектов.

Как я могу заставить каждую службу разрешать объекты в пространстве имен My.Objects?

Ответы [ 3 ]

0 голосов
/ 16 августа 2010

Создайте сборку, ссылающуюся на одну из служб с типом заявки, а затем сделайте ссылку на эту сборку из вашего основного проекта.

0 голосов
/ 19 августа 2010

Существует простой способ обмениваться типами между клиентом и службой, просто добавив ссылку на сборку общего типа на свой клиент ПЕРЕД добавлением ссылки на службу.

Подробный сценарий и пример проекта можно найти там:

http://blog.walteralmeida.com/2010/08/wcf-tips-and-tricks-share-types-between-server-and-client.html

0 голосов
/ 16 августа 2010

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

Посмотрите на сообщение в блоге, которое я собрал, и атрибут (из другого блога, на который я наткнулся), чтобы внедрить его в операции, которые должны его использовать:

http://theburningmonk.com/2010/08/wcf-using-the-netdatacontractserializer-to-share-your-type/

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