Структура:
Server - Desktop Application
Я хотел бы иметь механизм автообновления в настольном приложении.Это может быть достигнуто с помощью таких вещей, как Squirel.Windows, и выходит за рамки этого вопроса.Еще одно замечание: у DesktopApp есть несколько вариантов для разных ОС (Mac и Windows).
Проблема в том, что сервер не всегда является последней версией.Например:
Server.v1 - DesktopApp.v1
Server.v2 - DesktopApp.v1
Server.v1 и Server.v2 имеют различное поведение и критические изменения.Как структурировать автоматическое обновление в DesktopApp управляемым способом?
Версия сервера также может внезапно перейти на другую версию, например, с Server.v2 на Server.v1.Это вне нашего контроля.
ПРИМЕЧАНИЕ. Сервер не соответствует semver, поэтому младшие номера версий могут иметь серьезные изменения
Предложение 1)
Сделайте DesktopApp обратно совместимым, как это
if(serverVersion == Server.v1) {
MetodOfLogicThatWorksOnV1();
};
if(serverVersion >= Server.v2) {
MetodOfLogicThatWorksOnV2();
};
Теперь я могу свободно обновлять DesktopApp.v1 столько раз, сколько я хочу, и он будет полностью обратно совместим.Все пользователи приложения Desktop используют последнюю версию.
Беспокойство: может через некоторое время вызвать очень сложную логику, что делает ее подверженной ошибкам
Предложение 2)
Создание DesktopAppМеханик обновления знает, когда он должен понизить
if(serverVersion == Server.v1) {
DesktopApp.SelfUpdater.Update(v1);
};
if(serverVersion >= Server.v2) {
DesktopApp.SelfUpdater.Update(latest);
};
Теперь пользователи получат разные версии DesktopApp в зависимости от того, к какой версии сервера они подключены.
Беспокойство: пользователям придется обновлять / понижать версиюв зависимости от версии.Будет сложно поддерживать эту логику обновления.Исправление ошибки теперь необходимо будет сделать как для DesktopApp.v1, так и для DesktopApp.v2
Предложение 3)
Создать 1 DesktopApp на версию сервера
if(serverVersion != clientVersion) {
DesktopApp.SelfUpdater.Update(serverVersion);
};
Это означает, чтоЯ знаю, что версия Сервера всегда будет предназначена для точной версии DesktopApp, которую я использую
Беспокойство: необходимо создать очень много версий DesktopApp, а исправления ошибок необходимо развернуть во многих версиях.
Вопрос:
Как я могу структурировать автоматическое обновление настольного приложения, когда у вас несколько версий сервера, с разрывом изменений между версиями каждого сервера?