6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 335
|
|
1 | |
Динамическое обновление клиента и сервера28.09.2016, 14:53. Показов 2032. Ответов 5
Метки нет (Все метки)
Здравствуйте!
У меня возникло несколько вопросов. Допустим, сервис работает мультипоточно в единственном экземпляре и к нему с определенной периодичностью подключаются клиенты. Если мне понадобится обновить сервер (Например, добавить пару методов в контракт): 1) Могу ли я это сделать динамически без перекомпиляции? Чутье подсказывает, что нельзя. 2) Тогда можно ли клиенту динамически обновиться? Мне нужна удобная система для обновлений. Подскажите, как это реализовывается?
0
|
28.09.2016, 14:53 | |
Ответы с готовыми решениями:
5
Обновление базы от сервера на локальный компьютер через клиента Динамическое обновление части страницы по решению сервера Клиента Сервера Обновление игрового клиента |
28.09.2016, 15:05 | 2 |
Можете, если служба конфигурируется в файле конфигурации, а не в коде. Именно для того он и создан.
В теории можно (запросив через MEX все контракты и все поддерживаемые в них операции), но думаю, потом их вызов будет затруднен. Если только через рефлексию пробовать. Я так не делал, больше ничего не подскажу.
1
|
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 335
|
|
28.09.2016, 15:08 [ТС] | 3 |
insite2012, Насчет файла конфигурации: я настраиваю все через него, но я же там пишу только конечные точки, элементы поведения.
Достаточно этот файл пересоздать или как?
0
|
28.09.2016, 15:17 | 4 |
Сообщение было отмечено Kertis138 как решение
Решение
А больше ничего и не надо. Хост независим от самой службы. Вы можете, изменив конфиг, полностью изменить службу, и перезапустив хост все будет другое.
0
|
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
|
30.09.2016, 08:01 | 5 |
Сообщение было отмечено Kertis138 как решение
Решение
Kertis138, насколько я помню, при реализации взаимодействия клиент-сервер на платформе WCF клиент обязательно должен поддерживать все методы контракта сервиса, в противном случае при попытке вызова будет сгенерировано исключение типа "несовпадение контрактов между клиентом и сервисом".
Так что клиентов также придётся перевести на изменённый контракт и перекомпилировать.
1
|
30.09.2016, 23:51 | 6 | ||||||||||
Сообщение было отмечено Kertis138 как решение
Решение
Совершенно необязательно. Тестовый код ниже. В контракте сервиса два метода, а в контракте клиента один. И тем не менее код работает.
Только в том случае, если используется svcutil.exe Если же все пишется ручками, этого не потребуется. Исходя из задумки ТС, как я ее понял, это делается так. Пишется набор контрактов, и служба предоставляет какой-то один. Клиент не знает, какой именно, запрашивает метаданные конечной точки, и ищет в своем наборе контрактов подходящие. Если нашел - динамически создает прокси и использует его. PROFIT! Тестовая служба:
1
|
30.09.2016, 23:51 | |
30.09.2016, 23:51 | |
Помогаю со студенческими работами здесь
6
Обновление игрового клиента С сервера вызвать клиента Синхронизация клиента и сервера Настройка клиента - сервера Связь сервера и клиента Соединение клиента и сервера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |