Если вы контролируете оба конца связи (как на стороне сервера, так и на клиенте), и оба .NET, у вас есть два варианта:
- либо добавьте свои сервисные ссылки, как обычно (если вы не контролируете обе стороны) - в этом случае вы получите прокси-класс на стороне клиента, который реализует прокси для методов сервиса, и все контракты данных дублируются (вы получаете классы в своем пространстве имен прокси-клиента, которые сериализуются и десериализуются из одного и того же представления XML в сообщении, которое отправляется взад и вперед - но классы разные, поскольку они живут в разных пространствах имен)
или, необязательно:
- вы можете поместить все ваши сервисные контракты, контракты на данные и т. Д. В отдельную сборку "MyService.Contracts" (называйте это как вам удобно), а затем вы можете поделиться этой сборкой; на стороне сервера ваш код, реализующий контракт на обслуживание, будет иметь ссылку на эту общую сборку, а на стороне клиента вы делаете то же самое, в основном: ваш клиентский проект добавит ссылку на эту общую сборку, и теперь у вас есть все ваши контракты данных (ваши типы «сообщений») только один раз - в общем пространстве имен сборки.
Вариант № 2 имеет свои явные преимущества, но опять же:
- it only работает, если вы контролируете обе стороны связи
- it only работает, если обе стороны имеют код .NET
- , поскольку вы не используете встроенный механизм Add Service Reference, вам может потребоваться вручную создать часть конфигурации на стороне клиента (это действительно не так сложно)
Я надеюсь, что это даст вам несколько идей и идей - если у вас есть дополнительные конкретные вопросы - вы знаете, где их задать!