2010-01-08 4 views
1

Для тех, кто знаком с Microsoft Sync Framework, этот вопрос для вас. Это касается управления версиями приложений. Предположим, что я выпускаю версию 1.0 своего программного обеспечения, и файл sdf локальной базы данных создается из веб-службы версии 1.0, и жизнь продолжается некоторое время, и пользователь использует приложение и помещает данные в локальную базу данных и все такое, а затем версия 2.0 моего программного обеспечения выходит, и их изменения в базе данных (схема), такие как новые столбцы, новые таблицы, изменения нулевой способности и т. д.Версия обновления для версии Sync Вопрос

Как это работает, что, если у пользователя есть данные в базе данных версии 1.0, и я опубликовал новую веб-службу 2.0, потому что версия 2.0 программного обеспечения выпущена, и база данных версии 1.0 больше не может синхронизироваться с веб-сервисом 2.0, как я могу получить их данные из база данных версии 1.0? Более того, как я могу полностью обновить каждого до версии 2.0, не потеряв ни одного из их данных 1.0?

ответ

0

Вы не можете снести v1. веб-сервис (http://example.com/sync/v1.0/). Все ваши клиенты v1 продолжают синхронизировать с веб-службой v1. Клиенты обновляются до версии v2. sdf с помощью запуска сценариев развертывания, которые обновляют базу данных до версии v2. во время процесса установки (инструкции CREATE, ALTER, DROP). После обновления клиенты синхронизируются с услугой v2 (http://example.com/sync/v2.0/).

После того, как все клиенты подтверждены для обновления до версии v2, вы можете снести v1. веб-сервис. Если количество клиентов неизвестно, вы должны полагаться на бизнес-децит, как долго вы держите v1. вверх. Необычно, что службы, работающие с 2-3 версиями, поддерживают старые клиенты.

+0

Это имеет смысл, за исключением того, что это не означает, что мне придется иметь разные версии базы данных серверов. Поскольку службы версии 1 и версии 2 будут загружаться из одной и той же базы данных сервера. Как мне обрабатывать перевод? Я знаю, что это зависит от того, какие изменения сделаны, но давайте предположим, что это огромное изменение. –

+0

Если ISA-часть службы синхронизации не может быть согласована, вы собираетесь укусить пулю и поддерживать две разные базы данных и иметь некоторые средства для связи между ними (например, репликация). К сожалению, в распределенных системах все зависимости схемы (и Sync Framework представляет один, точно так же, как и репликация btw) имеют эту неотъемлемую проблему при v + развертывании, просто потому, что вы не можете одновременно обновлять всех участников и, как правило, даже не в приемлемом временном окне , Обновления являются одним из самых больших решений в любом распределенном приложении. –

1

В нашем проекте, использующем структуру синхронизации по WCF, мы поддерживаем разные версии данных. В нашем случае мы используем разные syncServerProviders в зависимости от того, какую версию данных использует клиент. Если произошла смена схемы базы данных, вы можете настроить поставщика синхронизации, написав em вручную, чтобы выбрать или обновить столбцы, поддерживаемые версией данных клиентов.

+1

Прохладный история брат. Только то, что мне нужно, и это работает. –

Смежные вопросы