Share via


Sync Framework 2.0 – first look

 

Я думаю, Вы помните приложение на прошлых techdays, которое позволяет поиграться с sync framewok.

 

clip_image001

 

Приложение позволяет синхронизировать списки строк вида ключ:значение. Можно вводить разные строки и понимать как ведет себя sync framework в случае конфликтов, etc.

Я немного переписал приложение.

Основная вещь, которую я добавил, это поддержка Simple Providers, про которые я немного рассказывал в сегодняшнем вебкасте https://www.microsoft.com/rus/events/detail.mspx?eventid=1032403993 .

Итак, что же нужно для использования SimpleProviders?

шаг 0) создаем потомок класса FullEnumerationSimpleSyncProvider

шаг 1) создаём метод get MetadataSchema, описываем структуру нашего хранилища.

         public const uint CUSTOM_FIELD_ID = 0;
        public const uint CUSTOM_FIELD_LMT = 1;

        public override ItemMetadataSchema MetadataSchema
        {
            get
            {
                CustomFieldDefinition[] customFields = new CustomFieldDefinition[] 
                {
                       new CustomFieldDefinition(CUSTOM_FIELD_ID,typeof (string),256),
                       new CustomFieldDefinition(CUSTOM_FIELD_LMT,typeof (UInt64))
                };

                IdentityRule[] identityRule = new IdentityRule[] {
                 new IdentityRule(new uint[] {CUSTOM_FIELD_ID})
                                                                 };

                return new ItemMetadataSchema(customFields, identityRule);
            }
        }

шаг 2) создаем метод EnumerateItems

         public override IEnumerable<ItemFieldDictionary> EnumerateItems(FullEnumerationContext context) {

            List<ItemFieldDictionary> items = new List<ItemFieldDictionary>();

            foreach (var s in localParsedList)
            {
                items.Add(
                    ConstructDictionary(
                        s.Key,
                        s.Value.LWT));
            }

            return items;
        }
шаг 3) определяем какой обьект будет ходить по сети и описывать изменения в обьекте, реализуем метод LoadChangeData
 шаг 4) создаем операции Crate, Update, Delete

пример приложения можно скачать тут

https://cid-86f85843ad29b3e9.skydrive.live.com/self.aspx/Public/samples/sync%20framework%202.0%20samples/sync2%7C_2009%7C_02%7C_05%7C_public.zip