Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Динмический WCF- сервис / 10 сообщений из 10, страница 1 из 1
01.02.2016, 11:03
    #39159893
talja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
Доброго времени суток!
Есть задача, совсем нетривиальная. Если упростить, то примерно так:
разработать сервис ServiceMain, который будет вызывать WCF- сервисы других серверов. Функционал WCF- сервисов одинаков, но при этом заранее неизвестно, сколько таких сервисов может быть.
То есть вероятна ситуация, что в любое время будет добавлен еще один сервер с захостенным WCF-сервисом. При этом не должно быть необходимости править код сервиса ServiceMain, нужно просто откорректировать файл конфигурации. И ServiceMain должен работать.

То есть получаем динамический wcf-сервис, который в реале может находиться где-угодно.

Как реализовать такое?
Прошу подсказать, если это вообще возможно.
...
Рейтинг: 0 / 0
01.02.2016, 12:38
    #39159989
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
собственно, wcf и так размещается где угодно.

Что именно вы будете править в конфиг файле по вашей задаче?
...
Рейтинг: 0 / 0
01.02.2016, 12:49
    #39160008
talja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
Winnipuh,
в моем случае проблема в том, что я заранее не знаю, где будет размещен wcf-сервис.
В процессе эксплуатации ServiceMain может появиться новый wcf-сервис, и нужно, чтобы ServiceMain мог с ним работать без добавления новых ServiceReference и правки кода.
Нужно, чтобы достаточно было указать в файле конфигурации IP к новому серверу, endpoint к службе на этом сервере.
...
Рейтинг: 0 / 0
01.02.2016, 13:05
    #39160041
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
talja, ну, смотрите сами - если сможете уложить в конфигу и вызывать из нее все 3 (A,B и C), то получится. Сами готовы такое имплементировать? Хотя мне идея не нравится.
...
Рейтинг: 0 / 0
01.02.2016, 13:10
    #39160057
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
taljaWinnipuh,
в моем случае проблема в том, что я заранее не знаю, где будет размещен wcf-сервис.
В процессе эксплуатации ServiceMain может появиться новый wcf-сервис, и нужно, чтобы ServiceMain мог с ним работать без добавления новых ServiceReference и правки кода.
Нужно, чтобы достаточно было указать в файле конфигурации IP к новому серверу, endpoint к службе на этом сервере.

сделайте один раз сервис референсе, создавайте конфигурацию в приложении, а в конфиге как параметры - список имен хостов
или
меняйте в приложении адреса endpoints
...
Рейтинг: 0 / 0
01.02.2016, 13:19
    #39160076
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
WinnipuhtaljaWinnipuh,
в моем случае проблема в том, что я заранее не знаю, где будет размещен wcf-сервис.
В процессе эксплуатации ServiceMain может появиться новый wcf-сервис, и нужно, чтобы ServiceMain мог с ним работать без добавления новых ServiceReference и правки кода.
Нужно, чтобы достаточно было указать в файле конфигурации IP к новому серверу, endpoint к службе на этом сервере.

сделайте один раз сервис референсе, создавайте конфигурацию в приложении, а в конфиге как параметры - список имен хостов
или
меняйте в приложении адреса endpoints
Человек хочет все динамически делать, никаких сервис референсов или прокси не предполагается, видимо.
...
Рейтинг: 0 / 0
03.02.2016, 21:34
    #39162443
ProBiotek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
talja,

Все эти сервисы реализуют единый интерфейс ( Функционал WCF- сервисов одинаков )?
Можно динамически конфигурировать ChannelFactory (в том числе задавая удаленный адрес).
Вот первая попавшаяся ссылка в гугле про то как это делать
http://www.c-sharpcorner.com/UploadFile/ff2f08/channel-factory-in-wcf/

Это абсолютно нормальный режим работы, когда адрес удаленного сервиса может быть не известен заранее.

Конфигурируйте себе этих ChannelFactory сколько угодно, на каждый удаленный сервис. Затем в нужный момент делайте CreateChannel, работайте с ним и закрывайте. Или держите канал открытым все время - если вам это нужно.

Вы можете в своем ServiceMain сделать метод "AddAdress"/"DeleteAdress" куда пулять адреса, которые нужно динамически добавить/удалить из обработки.
...
Рейтинг: 0 / 0
04.02.2016, 11:28
    #39162756
talja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
ProBiotek, спасибо.
Получила еще наводку на Discovery Service: http://geekswithblogs.net/shaunxu/archive/2012/07/06/service-discovery-in-wcf-4.0-ndash-part-1.aspx


Отпишусь по итогу, какой вариант был выбран в качестве рабочего
...
Рейтинг: 0 / 0
04.02.2016, 12:58
    #39162866
МихаилР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
taljaПолучила еще наводку на Discovery Service:
В принципе, вам дали абсолютно верную наводку.

Ну а так, я могу навскидку назвать 3 способа автоматически публиковать/обнаруживать сервисы:
1) Discovery Service. Поднимаете 1 Discovery сервис, на котором автоматически публикуются все остальные сервисы.
2) Routing Service. Единая точка входа, которая затем перенаправляет запросы на остальные сервисы (но здесь нужно прописывать роутинги на новые сервисы)
3) Вычитывание из метаданных. Тут будет много ручной работы, но вцелом идея в том, что в WSDL можно публиковать множество endpoints, в том числе и на абсолютно разных машинах. Поэтому нужно будет написать собственную генерацию WSDL, которая будет лежать на отдельной машине, и в которой будут перечисляться все машины, которые предлагают такие сервисы.
...
Рейтинг: 0 / 0
21.02.2016, 18:07
    #39176480
L.Otujktd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динмический WCF- сервис
Можно в ServiceMain сделать методы для регистрации/дерегистрации дочерних сервисов параметризуемых байндингом и типом реализуемого сервисом интерфейса но в таком случае асе равно придется как-то генерить информацию для клиентского кода.
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Динмический WCF- сервис / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]