Як задати порядок і розмір пакета для змін

У цьому розділі описується, як вказати порядок і розмір пакетів змін, які завантажуються в клієнтську базу даних з використанням платформ Sync Framework. У прикладах, наведених у цьому розділі, обговорюються наступні типи і події служб Sync Framework:

Відомості про способи запуску зразка коду см. В підрозділі «Зразки додатків в розділах інструкцій» розділу Програмування поширених завдань синхронізації клієнта і сервера.

Для кожної синхронізованої таблиці зміни вибираються з бази даних сервера в наступному порядку: вставки, оновлення, а потім видалення. Зміни застосовуються до клієнтської бази даних в наступному порядку: видалення, вставки, а потім оновлення. Якщо синхронізується кілька таблиць, порядок обробки кожної таблиці визначається порядком, в якому відповідний об'єкт SyncTable був доданий в колекцію таблиць для агента синхронізації. Наприклад, якщо таблиці Customer і OrderHeader додані в цьому порядку, в першу чергу будуть обрані вставки для таблиці Customer. а потім оновлення та видалення для неї. Після цього будуть обрані зміни для таблиці OrderHeader. Всі зміни для таблиці Customer застосовуються до клієнтської бази даних в рамках однієї транзакції (якщо не використовується пакетування), після цього в другій транзакції застосовуються зміни до таблиці OrderHeader. Якщо таблиці Customer і OrderHeader прив'язані до одного і того ж об'єкту SyncGroup. то вставки, оновлення та видалення для обох таблиць вибираються один раз. Всі зміни застосовуються до клієнтської бази даних в рамках однієї транзакції (знову ж, якщо не використовується пакетування).

За замовчуванням Sync Framework поділяє зміни на пакети. Зміни завантажуються з сервера і передаються на сервер з клієнтської бази даних у вигляді модуля. Для багатьох додатків є сенс ділити зміни на більш дрібні пакети. Наприклад, якщо сеанс синхронізації перерваний, синхронізацію можна повторно почати з останнього пакета, а не перепосилать всі зміни. Може виникнути і виграш в продуктивності, оскільки клієнтові необхідно в кожен момент часу давати раду меншим за розміром пакетом змін. З огляду на всі ці переваги, Sync Framework надає додаткам можливість завантаження на клієнт пакетів змін (при передачі на сервер пакетування не підтримується).

Щоб включити пакетну обробку, необхідно привласнити значення властивості BatchSize. а властивості SelectNewAnchorCommand привласнити команду для повернення значень точок прив'язки для кожного пакету змін. Без пакетування програм така сама нове і останнє значення прив'язки для визначення верхньої і нижньої меж всього набору змін для завантаження. Додаткові відомості див. У розділі Приступаючи до роботи: синхронізація клієнта і сервера. При використанні пакетування максимальне отримане значення прив'язки визначає верхню межу всього набору змін, а нове і останнє значення прив'язки визначають верхню і нижню межі кожного пакету змін. Подія SessionProgress надає зручний спосіб моніторингу ходу виконання синхронізації, а властивість BatchProgress надає доступ до інформації про хід виконання на рівні пакетів.

Наступні приклади коду демонструють синхронізацію таблиць Customer і OrderHeader в зразку бази даних служб Sync Framework. Зміни для цих таблиць завантажуються в пакетах, по 50 змін на кожен. Початкова синхронізація завантажує 10 рядків. Всі рядки завантажуються в одному пакеті і застосовуються в одній транзакції. Подальша синхронізація завантажує 92 рядки в двох пакетах. Кожен пакет містить зміни з таблиці Customer і таблиці OrderHeader. і кожен пакет застосовується в окремій транзакції.

Ключові елементи API-інтерфейсу

У цьому розділі наведені приклади коду, що ілюструють використання ключових елементів API-інтерфейсу для впорядкування і пакетування змін. Наступний приклад коду являє собою клас, який є похідним від класу SyncAgent. Цей код створює об'єкт SyncGroup для таблиць Customer і OrderHeader.

Наступний приклад коду створює збережену процедуру, яка виводить нові значення прив'язки, максимальне значення прив'язки і поточне число пакетів для вставок і оновлень. Ця процедура дозволяє службі синхронізації сервера вибрати пакети змін з бази даних сервера. Логіка в цій збереженій процедурі приведена як приклад. Можна використовувати будь-яку логіку, якщо вона видає показання значення. Одним з обмежень коду прикладу є те, що можуть породжуватися порожні пакети, якщо рядок змінилася більше 50 разів між синхронізації. Можна додати логіку, щоб обробити подібний випадок.

Схожі статті