powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как объявить переменную?
25 сообщений из 79, страница 1 из 4
Как объявить переменную?
    #39508548
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть клиентское приложение, есть 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(...);

Как объявить переменную? или как сделать по-другому?
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508590
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин КакТо mysvc;

iMySvc

А не проще заставлять клиентов принудительно обновляться?

P.S. И эти люди на 70-ти страницах доказывают преимущество десктопа над вебом.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508618
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Если не менялся функционал, то почему выпускаете новую версию?
Если менялся, то в коде ТАМ ГДЕ менялся придётся ставить проверку if version.
Что тут такого? Даже у автомобиля есть версии.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508619
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинMySvc_12
С другой стороны если у вас интерфейс вер.12 включает все методы старые, т.е. совместимость снизу ввепх, то вы всегда берете последнюю и в клиенте только одна переменная.
Как в COM объектах берется из реестра последний MS OFFICE
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508661
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)

это нормально.

Вопрос, как бы объявить переменную для сервиса в клиенте? моли одну объявить, чтобы не копировать код полностью.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508663
Фотография 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
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508665
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как делаем мы, коротоко:
    Есть некий MySvcClient, что является частью NuGet-пакета. В коде объявляется переменная var client = new MySvcClient(); Запросы идут на ServiceProxy, который определяет какая версия сервиса соответсвует версии клиента и пересылает запрос куда надо.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508687
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинили как сделать по-другому?Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508695
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КРолг Хупинили как сделать по-другому?Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента.

Мне было бы проще наоборот, на клиенте мутить с версиями и проверками
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508700
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КРолг Хупинили как сделать по-другому?Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента.
+1
Просто и понятно.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508702
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинАлексей Кпропущено...
Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента.

Мне было бы проще наоборот, на клиенте мутить с версиями и проверками
А вот ваше Мутить не понятна.
Перевести фразу Клиент работает с версией на момент разработки?
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508706
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинАлексей Кпропущено...
Сервер поддерживает все версии контрактов. Клиент работает с актуальной версией контракта сервера на момент разработки клиента.

Мне было бы проще наоборот, на клиенте мутить с версиями и проверками
Существует по крайней мере 6 подходов как мутить с версиями на клиенте :)

Например к адресу добавлять версию: https://api.example.com/v1/service.svc
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508725
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Вариант с прокси лучше во всех отношениях. Так можно в принципе отказаться от версии API и перейти на версии отдельных методов.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508727
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ролг Хупинпропущено...


Мне было бы проще наоборот, на клиенте мутить с версиями и проверками
А вот ваше Мутить не понятна.
Перевести фразу Клиент работает с версией на момент разработки?

Переводить не надо, работает и работает.. проблема не в этом, хотелось бы чтобы текущий клиент умел работать с предыдущими версиями сервиса тоже.
Хотелось вообще с минимальными изменениями клиента такое сделать.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508728
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, но подумалось, что небольшой частный велосипед мог бы решить проблему
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508730
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинтекущий клиент умел работать с предыдущими версиями сервиса тоже
Теперь я не понял, зачем новый клиент должен работать с предущей.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508740
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин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, но подумалось, что небольшой частный велосипед мог бы решить проблему
Хорошо бы сразу писать о том, о чём Вам подумалось.

То есть вопрос сводится к тому, как проще всего вбить костыль, верно? :)
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508741
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин, тогда давайте разбираться...

Что такое the_current_version и откуда оно берётся?
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508770
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРолг Хупин, тогда давайте разбираться...

Что такое the_current_version и откуда оно берётся?

Возможно, я погорячился с идеей простого решения.

Ну, ок.

the_current_version - это строка с версией, которая может быть указана в начале работы клиентского приложения с сервисом, это может быть укзаано юзером в конфиге, или же это можеть быть запрошено у самого сервиса через простой RESTful запрос,который для всех версий сервисов неизменен.
Т.е. имея урл клиентапп спрашивает версию и далее реагирует
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508874
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинthe_current_version - это строка с версией
Версией чего?
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508884
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРолг Хупинthe_current_version - это строка с версией
Версией чего?

сервиса
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508887
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

хм, к примеру сервис отвечает, что версия у него 3, а клиент умеет работать только с 2, что делать?
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508901
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Каким образом 2 сервиса разных версий на клиенте оказываются? Может один сервис с несколькими версиями?
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508906
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРолг Хупин,

хм, к примеру сервис отвечает, что версия у него 3, а клиент умеет работать только с 2, что делать?

вот! в этом случае генерировать ошибку клиенту.
...
Рейтинг: 0 / 0
Как объявить переменную?
    #39508909
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ролг Хупин,
Каким образом 2 сервиса разных версий на клиенте оказываются? Может один сервис с несколькими версиями?


сделал два сервис референса в студии на версию 2 и версию 3 - вот они и есть
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 1 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как объявить переменную?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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