Această secțiune descrie modul de specificare a ordinii și dimensiunii pachetelor de schimbare care sunt încărcate în baza de date client utilizând cadrul de sincronizare. Exemplele din această secțiune discută următoarele tipuri și evenimente ale serviciilor Sync Framework:
Pentru informații despre cum să executați codul de probă, a se vedea. În subcapitolul „Exemple de aplicații la instrucțiunile din“ secțiunea de programare sarcini comune client de sincronizare și server.
Pentru fiecare tabel sincronizat, modificările sunt selectate din baza de date a serverului în ordinea următoare: inserați, actualizați și apoi ștergeți. Modificările se aplică bazei de date a clientului în următoarea ordine: ștergeți, inserați și apoi actualizați. Dacă sunt sincronizate mai multe tabele, ordinea de procesare a fiecărui tabel este determinată de ordinea în care obiectul SyncTable corespunzător a fost adăugat la colecția de tabele pentru agentul de sincronizare. De exemplu, dacă tabelele Client și OrderHeader sunt adăugate în această ordine, vor fi selectate mai întâi inserțiile pentru tabelul Client. apoi actualizați și ștergeți pentru aceasta. După aceasta, schimbările vor fi selectate pentru tabela OrderHeader. Toate modificările pentru tabelul Client sunt aplicate bazei de date a clientului într-o singură tranzacție (dacă nu se utilizează nici o metodă de dozare), atunci a doua tranzacție va aplica modificări tabelului OrderHeader. Dacă tabelele Client și OrderHeader sunt legate la același obiect SyncGroup. Inserțiile, actualizările și ștergerile pentru ambele tabele sunt selectate o singură dată. Toate modificările sunt aplicate bazei de date client în cadrul aceleiași tranzacții (din nou, dacă nu utilizați lotul).
În mod implicit, Sync Framework nu împarte modificările în pachete. Modificările sunt descărcate de pe server și transferate pe server din baza de date client ca modul. Pentru multe aplicații, este logic să împărțiți modificările în pachete mai mici. De exemplu, dacă sesiunea de sincronizare este întreruptă, puteți reporni sincronizarea din ultimul pachet și nu puteți trimite nicio modificare. Este posibil să existe un câștig de performanță, deoarece clientul trebuie gestionat în orice moment cu un pachet mai mic de modificări. Având în vedere toate aceste avantaje, Sync Framework oferă aplicațiilor posibilitatea de a descărca modificările de pachete către client (atunci când se trimit la server, ambalajele nu sunt acceptate).
Pentru a permite procesarea în bloc, trebuie să atribuiți o valoare proprietății BatchSize. și setați proprietatea SelectNewAnchorCommand la o comandă pentru a returna valorile punctului de ancorare pentru fiecare pachet de modificări. Fără ambalaj, aplicațiile utilizează noile valori de legare noi pentru a determina limitele superioare și inferioare ale întregului set de modificări pentru descărcare. Pentru mai multe informații, consultați Noțiuni introductive: Sincronizarea clientului și a serverului. Atunci când se utilizează maxim pachetizarea de legare valoare obținută determină limita superioară a întregului set de modificări, iar noi si ultimele valori de ancorare definesc limitele superioare și inferioare ale fiecărui pachet de modificări. SessionProgress eveniment oferă o modalitate convenabilă de a monitoriza progresele înregistrate de sincronizare și BatchProgress proprietate oferă acces la informații cu privire la progresele înregistrate la nivel de pachete.
Următoarele exemple de coduri demonstrează sincronizarea tabelelor Client și OrderHeader în proba de bază de date Sync Framework. Modificările pentru aceste tabele sunt încărcate în pachete, cu 50 de modificări per pachet. Sincronizarea inițială încarcă 10 linii. Toate rândurile sunt încărcate într-un singur pachet și aplicate într-o singură tranzacție. Sincronizarea ulterioară încarcă 92 de linii în două pachete. Fiecare pachet conține modificări din tabelul Client și din tabelul OrderHeader. și fiecare pachet este aplicat într-o tranzacție separată.
Elementele cheie ale API
Această secțiune oferă exemple de cod care ilustrează utilizarea elementelor-cheie ale API pentru a simplifica și a modifica pachetele. Următorul exemplu de cod este o clasă derivată din clasa SyncAgent. Acest cod creează un obiect SyncGroup pentru tabelele Client și OrderHeader.
Următorul exemplu de cod creează o procedură stocată care emite noi valori de legare, valoarea maximă de legare și numărul curent de pachete pentru inserări și actualizări. Această procedură permite serviciului de sincronizare a serverului să selecteze pachetele de schimbare din baza de date a serverului. Logica în această procedură stocată este dată ca exemplu. Orice logică poate fi utilizată dacă transmite valorile afișate. Una dintre limitările codului exemplu este aceea că pachetele goale pot fi generate dacă șirul a fost modificat de mai mult de 50 de ori între sincronizări. Puteți adăuga o logică pentru a rezolva această problemă.