WCF - Сервисный контракт из другой сборки - PullRequest
2 голосов
/ 22 июня 2011

Я пытался найти ответ с прошлой недели и ничего не нашел.Может быть, я просто ищу по неправильным ключевым словам ...

По сути, у нас есть работающий сервис WCF, а затем у нас есть отдельный dll с другим ServiceContract в нем.Мы хотим знать, возможно ли выставить отдельную DLL в текущем запущенном сервисе, и если можно, то как?

Мы все еще новичок в WCF, поэтому, пожалуйста, извините, если это глупый вопрос.: (

Мы работаем с .NET 3.5 SP1 и C #.

С уважением

РЕДАКТИРОВАТЬ: Мы хотим разделить наш сервис на «модули». Поэтому реализации сервиса (Методы, т. Д.) И контракты (интерфейсы) находятся в отдельных библиотеках. Допустим, у вас есть модуль под названием «Клиенты». Мы хотим, чтобы все, что связано с клиентами, было в одной и той же отдельной библиотеке (DLL) вместо одного большого базового класса, которыйнаследует от нескольких интерфейсов. Это огромная служба, и нам нужно, чтобы несколько разработчиков работали над различными разделами одной и той же службы одновременно. Это то, что мне было поручено выяснить, но если это можно сделать, то это можетЯ надеюсь, что это имеет больше смысла ??

Ответы [ 3 ]

4 голосов
/ 22 июня 2011

Предполагается, что вы спрашиваете, как реализовать контракт на обслуживание, объявленный в одной DLL, в службе, работающей в отдельной DLL / приложении:

Изменения, соответствующие изменениям после публикации

  1. добавить ссылку на DLL с контрактом на обслуживание к приложению, содержащему сервис
  2. . В файле .cs с имплементацией сервиса добавить оператор использования для пространства имен контракта на обслуживание
  3. выводит сервис из контракта на обслуживание (у вас будут проблемы, если вы определите свои контракты на обслуживание как конкретные классы, а не интерфейсы, и вы хотите выставить несколько контрактов на свой сервис
  4. Если сам хостинг, то создайте передачу ServiceHostобъект типа службы в другой сборке, если на хостинге IIS создайте файл .svc, ссылающийся на класс в другой сборке как службу
  5. Добавьте элемент службы в файл конфигурации, указав полное имяservice
  6. Добавить конечную точку к сервису вуникальный адрес для нового контракта
1 голос
/ 22 июня 2011

Когда вы берете другую сборку (dll) в качестве ссылки в «основном» проекте, добавьте директиву using в файл, в котором создается служба WCF. Затем вы можете просто использовать указанный сервисный контракт для настройки работающей службы с правильными конечными точками и привязкой (конфигурацией).

0 голосов
/ 04 декабря 2011

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

WCFMainLib затем действует как прокси для подключения ко всем другим WCFModuleLib на локальном хосте (или других серверах) для получения данных.

WCFMainlib реализует интерфейсы контрактов на обслуживание IWCFModuleLib1, IWCFModuleLib2 и т. Д. И предоставляет их WCFClient. Фактическая реализация интерфейсов будет тогда вызовом к действительным WCFModuleLibs.

Это может привести к некоторым накладным расходам, но в целом также вводит несколько «функций», которые могут принести пользу вашему боссу или доступности услуг.

ИЛИ, если вы просто хотите делегировать работу по программированию, возможно, вы можете сказать каждой команде работать с частичными классами для вашей WCFLib с каждым контрактом на обслуживание в частичном классе, а затем выполнять ночную компиляцию.

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