|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Есть клиентское приложение, есть WCF сервис. Сейчас так приложение версии 1 - сервис версии 1 приложение версии 2 - сервис версии 2 .. приложение версии 7 - сервис версии 7 Хотелось бы упростить, сделать так, чтобы версия клиента умела работать с сервисом версии текущей и всеми предыдущими. Вопрос в следующем. Сейчас сделано: MySvs mysvc; ... mysvc = new MySvc(...); Можно ли один раз объявить переменную mysvc (как?) и затем создавать тот сервис, который указан? Типа: КакТо mysvc; ... if(the_current_version==1) mysvc = new MySvc_1(...); else if(the_current_version==2) mysvc = new MySvc_2(...); ... else if(the_current_version==12) mysvc = new MySvc_12(...); Как объявить переменную? или как сделать по-другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2017, 18:35 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг Хупин КакТо mysvc; iMySvc А не проще заставлять клиентов принудительно обновляться? P.S. И эти люди на 70-ти страницах доказывают преимущество десктопа над вебом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2017, 21:33 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг Хупин, Если не менялся функционал, то почему выпускаете новую версию? Если менялся, то в коде ТАМ ГДЕ менялся придётся ставить проверку if version. Что тут такого? Даже у автомобиля есть версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 07:03 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг ХупинMySvc_12 С другой стороны если у вас интерфейс вер.12 включает все методы старые, т.е. совместимость снизу ввепх, то вы всегда берете последнюю и в клиенте только одна переменная. Как в COM объектах берется из реестра последний MS OFFICE ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 07:17 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Petro123Ролг Хупин, Если не менялся функционал, то почему выпускаете новую версию? Если менялся, то в коде ТАМ ГДЕ менялся придётся ставить проверку if version. Что тут такого? Даже у автомобиля есть версии. Что-то меняется в клиенте, что-то в сервисе, как внутри, так и в тех классах, которые участвуют в прокси, потому и выпускается новая версия. Сейчас так и делается, выпускаются новые версии, юзеру рекомендуется использовать только свежие. Но бывают моменты,когда у юзера установлены две весрии сервиса по каким-то причинам, например, какое-то клиентское приложение работает только с предыдущей версией сервиса, а какое-то с новой, приложение 1 (12)- сервис 12 приложение 2 (12)- сервис 12 приложение 2 (13) - сервис 13 и хотелось бы не устанавливать приложение 2 в двух экземплярах, тем более, что на одной машине инсталлятор не даст установить, а чтобы было так приложение 1 (12)- сервис 12 приложение 2 (13)- сервис 12,сервис 13 Т.е. дав свежую версию приложения юзер может использовать ее с любым сервисом предыдущих версий. То, что в коде надо разводить ветки типа if( v==11) ... else if (v==12) .. else if (v==13) это нормально. Вопрос, как бы объявить переменную для сервиса в клиенте? моли одну объявить, чтобы не копировать код полностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 10:27 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг ХупинТо, что в коде надо разводить ветки типа if( v==11) ... else if (v==12) .. else if (v==13) это нормально. Вопрос, как бы объявить переменную для сервиса в клиенте? моли одну объявить, чтобы не копировать код полностью. Это не нормально. Должна быть одна переменная и никаких if-ов. Тот велосипед, что Вы пытаетесь придумать, называется Versioning. Вот несколько ссылок на эту тему: https://msdn.microsoft.com/en-us/library/ff384251.aspx https://docs.microsoft.com/en-us/dotnet/framework/wcf/best-practices-data-contract-versioning https://docs.microsoft.com/en-us/dotnet/framework/wcf/service-versioning ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 10:38 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Как делаем мы, коротоко:
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 10:49 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг Хупинили как сделать по-другому?Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 11:56 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Алексей КРолг Хупинили как сделать по-другому?Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента. Мне было бы проще наоборот, на клиенте мутить с версиями и проверками ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 12:17 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Алексей КРолг Хупинили как сделать по-другому?Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента. +1 Просто и понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 12:27 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг ХупинАлексей Кпропущено... Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента. Мне было бы проще наоборот, на клиенте мутить с версиями и проверками А вот ваше Мутить не понятна. Перевести фразу Клиент работает с версией на момент разработки? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 12:30 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг ХупинАлексей Кпропущено... Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента. Мне было бы проще наоборот, на клиенте мутить с версиями и проверками Существует по крайней мере 6 подходов как мутить с версиями на клиенте :) Например к адресу добавлять версию: https://api.example.com/v1/service.svc ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 12:37 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
skyANA, Вариант с прокси лучше во всех отношениях. Так можно в принципе отказаться от версии API и перейти на версии отдельных методов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 13:02 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Petro123Ролг Хупинпропущено... Мне было бы проще наоборот, на клиенте мутить с версиями и проверками А вот ваше Мутить не понятна. Перевести фразу Клиент работает с версией на момент разработки? Переводить не надо, работает и работает.. проблема не в этом, хотелось бы чтобы текущий клиент умел работать с предыдущими версиями сервиса тоже. Хотелось вообще с минимальными изменениями клиента такое сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 13:03 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
skyANAРолг ХупинТо, что в коде надо разводить ветки типа if( v==11) ... else if (v==12) .. else if (v==13) это нормально. Вопрос, как бы объявить переменную для сервиса в клиенте? моли одну объявить, чтобы не копировать код полностью. Это не нормально. Должна быть одна переменная и никаких if-ов. Тот велосипед, что Вы пытаетесь придумать, называется Versioning. Вот несколько ссылок на эту тему: https://msdn.microsoft.com/en-us/library/ff384251.aspx https://docs.microsoft.com/en-us/dotnet/framework/wcf/best-practices-data-contract-versioning https://docs.microsoft.com/en-us/dotnet/framework/wcf/service-versioning Да, я понимаю, что такое Versioning, но подумалось, что небольшой частный велосипед мог бы решить проблему ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 13:04 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг Хупинтекущий клиент умел работать с предыдущими версиями сервиса тоже Теперь я не понял, зачем новый клиент должен работать с предущей. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 13:07 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг ХупинskyANAпропущено... Это не нормально. Должна быть одна переменная и никаких if-ов. Тот велосипед, что Вы пытаетесь придумать, называется Versioning. Вот несколько ссылок на эту тему: https://msdn.microsoft.com/en-us/library/ff384251.aspx https://docs.microsoft.com/en-us/dotnet/framework/wcf/best-practices-data-contract-versioning https://docs.microsoft.com/en-us/dotnet/framework/wcf/service-versioning Да, я понимаю, что такое Versioning, но подумалось, что небольшой частный велосипед мог бы решить проблему Хорошо бы сразу писать о том, о чём Вам подумалось. То есть вопрос сводится к тому, как проще всего вбить костыль, верно? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 13:19 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг Хупин, тогда давайте разбираться... Что такое the_current_version и откуда оно берётся? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 13:20 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
skyANAРолг Хупин, тогда давайте разбираться... Что такое the_current_version и откуда оно берётся? Возможно, я погорячился с идеей простого решения. Ну, ок. the_current_version - это строка с версией, которая может быть указана в начале работы клиентского приложения с сервисом, это может быть укзаано юзером в конфиге, или же это можеть быть запрошено у самого сервиса через простой RESTful запрос,который для всех версий сервисов неизменен. Т.е. имея урл клиентапп спрашивает версию и далее реагирует ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 14:15 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг Хупинthe_current_version - это строка с версией Версией чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 16:56 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
skyANAРолг Хупинthe_current_version - это строка с версией Версией чего? сервиса ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 17:12 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг Хупин, хм, к примеру сервис отвечает, что версия у него 3, а клиент умеет работать только с 2, что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 17:16 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
Ролг Хупин, Каким образом 2 сервиса разных версий на клиенте оказываются? Может один сервис с несколькими версиями? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 17:31 |
|
Как объявить переменную?
|
|||
---|---|---|---|
#18+
skyANAРолг Хупин, хм, к примеру сервис отвечает, что версия у него 3, а клиент умеет работать только с 2, что делать? вот! в этом случае генерировать ошибку клиенту. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2017, 17:41 |
|
|
start [/forum/topic.php?fid=20&fpage=40&tid=1399746]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
51ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 302ms |
total: | 477ms |
0 / 0 |