Аналог SyncFramework/DataSync для .Net 4.5 desktop
От: Ilya81  
Дата: 14.02.14 05:55
Оценка:
Имеется задача буферизации данных, в целом SyncFramework здесь мог б быть полезен. Но как я посмотрел, он уже не поддерживается, и на 4.5 его не переносят. Вместо него предлагают DataSync для Windows Azure, а desktop-версии у него вроде как нет. Вот хочу знать, какие есть альтернативы в настоящее время именно для desktop-сервера на .Net 4.5.
syncframework .net 4.5 desktop
Re: Аналог SyncFramework/DataSync для .Net 4.5 desktop
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 14.02.14 10:11
Оценка:
Здравствуйте, Ilya81, Вы писали:

I>Имеется задача буферизации данных, в целом SyncFramework здесь мог б быть полезен. Но как я посмотрел, он уже не поддерживается, и на 4.5 его не переносят. Вместо него предлагают DataSync для Windows Azure, а desktop-версии у него вроде как нет. Вот хочу знать, какие есть альтернативы в настоящее время именно для desktop-сервера на .Net 4.5.


Sync Framework — это набор unmanaged-библиотек и .Net-ных оберток поверх них (самые распоследние собраны под .Net 2.0). Все это хозяйство даже ставится отдельно, путем запуска MSI-ников. Зачем Sync Framework "переносить на 4.5"?
Re[2]: Аналог SyncFramework/DataSync для .Net 4.5 desktop
От: Ilya81  
Дата: 14.02.14 12:37
Оценка:
Здравствуйте, scale_tone, Вы писали:

_>Здравствуйте, Ilya81, Вы писали:


I>>Имеется задача буферизации данных, в целом SyncFramework здесь мог б быть полезен. Но как я посмотрел, он уже не поддерживается, и на 4.5 его не переносят. Вместо него предлагают DataSync для Windows Azure, а desktop-версии у него вроде как нет. Вот хочу знать, какие есть альтернативы в настоящее время именно для desktop-сервера на .Net 4.5.


_>Sync Framework — это набор unmanaged-библиотек и .Net-ных оберток поверх них (самые распоследние собраны под .Net 2.0). Все это хозяйство даже ставится отдельно, путем запуска MSI-ников. Зачем Sync Framework "переносить на 4.5"?


Я про другое — может есть какие их аналоги из open source? Проблема ещё в том, что найти даже сложно, всё в результатах поиска какие-то программы сихнронизации данных, а не framework'и/toolkit'ы.
Re[3]: Аналог SyncFramework/DataSync для .Net 4.5 desktop
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 14.02.14 15:54
Оценка: 16 (2)
Здравствуйте, Ilya81, Вы писали:

I>Я про другое — может есть какие их аналоги из open source? Проблема ещё в том, что найти даже сложно, всё в результатах поиска какие-то программы сихнронизации данных, а не framework'и/toolkit'ы.


Найти аналог Sync Framework действительно трудно. Так как непонятно, что искать.

Sync Framework — это, по сути, набор примитивов, конструктор такой. Он никакой конкретной задачи сам по себе не решает (после установки дистрибутива ничего ни с чем магическим образом не начнет синхронизироваться).
Он только предоставляет кирпичики для реализации решений синхронизации данных, объединенных двумя общими базовыми идеями:
1) версия сущности может и должна состоять из двух чисел — собственно, версии (счетчика) и идентификатора реплики.
2) версии всех сущностей в реплике можно зазиповать, представить в сильно сжатом виде. Этот вид называется knowledge, и этого сжатого представления версий достаточно для обнаружения изменений и конфликтов между двумя репликами. Т.е. чтобы сравнить две копии БД, достаточно сравнить их knowledge-и.

По сути, основная алгоритмическая ценность всей либы лежит в парочке классов, реализующих математические операции над knowledge-ами (сложить, вычесть etc.). Которые, при желании, можно и самому написать.

У общей схемы синхронизации с knowledge-ами есть важные преимущества:
а) Необязательно иметь мастер-копию данных (некое главное хранилище, через которое все друг с другом синхронизируются).
б) Трафик, потребный для сравнения двух версий БД между собой, очень мал: достаточно передать knowledge.

Само собой, у нее есть и недостатки:
x) Версии сущностей нужно либо хранить и атомарно обновлять вместе с самой сущностью (а это лишнее место на диске, лишнее процессорное время при обновлениях и требование по поддержке транзакций к хранилищу), либо каждый раз вычислять в процессе синхронизации (а это может быть супер-долго).
y) Knowledge тоже нужно либо вычислять каждый раз (что тоже может быть небыстро), либо хранить (и опять же, транзакционно обновлять).
z) и др.

Далее из этих кирпичиков строятся компоненты для синхронизации конкретных видов данных, лежащих в конкретных хранилищах. E.g. SqlSyncProvider для БД под MS SQL Server или FileSyncProvider для файлов. При этом с помощью этих компонентов нельзя просто так взять и засинхронизировать, скажем, Oracle с SQL Server-ом (и тем более, SQL Server c папкой на диске) — не заработает.

Я это все к чему: задачу синхронизации данных нельзя рассматривать как абстрактную. И соответственно, не имеет смысла искать в сети некую либу, заменяющую Sync Framework в деле синхронизации всего и вся.
Конкретное решение всегда придется выбирать исходя из множества исходных условий задачи. Вот лишь некоторые из них:
1. Есть ли мастер-копия данных?
2. Каков средний размер сущности (наименьший неделимый кусок синхронизируемых данных)?
3. Как много может быть сущностей?
4. Как часто и на каких репликах меняются данные?
5. Насколько велика вычислительная мощность девайса, где хранится реплика (диапазон от 0 до бесконечности)?
6. Нужна ли атомарная синхронизация (т.е. допускается ли частично успешное применение изменений)?
7. И т.д.

И, соответственно, замену Sync Framework-у нужно искать под конкретную задачу. У Вас она (задача) какая?
Re[4]: Аналог SyncFramework/DataSync для .Net 4.5 desktop
От: Ilya81  
Дата: 17.02.14 10:00
Оценка:
Примерно так:
1. Есть центральная копия, которая является образцом, остальные — локально буферизованные данные.
2. Пока сложно сказать, думаю счёт на единицы килобайт.
3. Тоже пока сложно сказать, но не больше десятка-другого думаю.
4. На некоторых — иногда несколько раз в секунду.
5. Ещё не известно, но должно хватить.
6. Для некоторых сущностей нужна.

Смысл применения — не писать заново управляющие синхронизацией строки, т. е. не изобретать велосипед самостоятельно.
Re[5]: Аналог SyncFramework/DataSync для .Net 4.5 desktop
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 17.02.14 10:24
Оценка:
Здравствуйте, Ilya81, Вы писали:

I>Смысл применения — не писать заново управляющие синхронизацией строки, т. е. не изобретать велосипед самостоятельно.


А клиенты на чем написаны и по какому протоколу общаются с центральной копией?
Re[6]: Аналог SyncFramework/DataSync для .Net 4.5 desktop
От: Ilya81  
Дата: 21.02.14 03:15
Оценка:
Здравствуйте, scale_tone, Вы писали:

_>Здравствуйте, Ilya81, Вы писали:


I>>Смысл применения — не писать заново управляющие синхронизацией строки, т. е. не изобретать велосипед самостоятельно.


_>А клиенты на чем написаны и по какому протоколу общаются с центральной копией?


И центральный сервер, и буферизующие — всё будет на .Net 4.5. Протокол здесь вообще жёстко не задаётся, подо что будут инструменты, то и выберу. Пока пробую на WCF .Net TCP, но это не окончательный выбор.
Re[7]: Аналог SyncFramework/DataSync для .Net 4.5 desktop
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 21.02.14 09:26
Оценка:
Здравствуйте, Ilya81, Вы писали:

I>Пока пробую на WCF .Net TCP, но это не окончательный выбор.


Т.е. между репликами даже есть стабильный коннект? И даже по любому порту?!
Ну-у, в таких-то шоколадных условиях стоит ли заморачиваться с кастомными решениями по синхронизации? Чем не подходит штатная репликация SQL Server-a, к примеру?

Или вообще заюзать какую-нибудь документо-ориентированную БД с репликацией из коробки?..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.