- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
DataBase Tool Microsoft Sync Framework
2017.05.05 18:08
Microsoft Sync Framework
I work for Microsoft in the Windows Live division as a Software Design Engineer. One of the most interesting problems in the distributed world is managing and synchronizing changes in data elements on various endpoints. Microsoft released a CTP of its sync framework that is out for pre RTM preview (Read this). The API consists of three major components:
- Sync runtime - This is the actual sync runtime that performs transfer of knowledge and metadata and performs actual synchronization. This is the actual underlying sync engine.
- Metadata store - Keeps track of metadata of elements at a given endpoint. The API includes a SQL CE implementation of metadata store that can be used out of the box. This component can be customized to address a specific solution.
- Providers - The actual storage provider for elements. The API includes the filesystem and RSS providers out of the box. This again can be customized and custom providers can be plugged into the sync framework.
Customization of metadata store and providers is interesting as it can be utilized in providing sync solutions that operate on differential data sync algorithms.
Following is an example of file syncing between two file system providers. The example utilizes CTP2 of Microsoft Sync Framework (Read this).
Copy Code
using System;
using System.IO;
using Microsoft.Synchronization;
using Microsoft.Synchronization.Files;
namespace MySamples.FileSystemSync
{
class Program
{
// Folders to be synced
static string folderA = Environment.CurrentDirectory + "\A";
static string folderB = Environment.CurrentDirectory + "\B";
static void Main(string[] args)
{
// Prepare directories for syncing
PrepareDirectory(folderA);
PrepareDirectory(folderB);
// Create file system provider
FileSyncProvider providerA = new FileSyncProvider(Guid.NewGuid(), folderA);
FileSyncProvider providerB = new FileSyncProvider(Guid.NewGuid(), folderB);
// Create a file in folders
File.WriteAllText(Path.Combine(folderA, "A.txt"),
"This file is created by A");
File.WriteAllText(Path.Combine(folderB, "B.txt"),
"This file is created by B");
// Ask providers to detect changes
providerA.DetectChanges();
providerB.DetectChanges();
// Sync changes
SyncOrchestrator agent = new SyncOrchestrator();
agent.LocalProvider = providerA;
agent.RemoteProvider = providerB;
agent.Direction = SyncDirectionOrder.UploadAndDownload;
agent.Synchronize();
}
static void PrepareDirectory(string directoryName)
{
if (Directory.Exists(directoryName))
{
Directory.Delete(directoryName, true);
}
Directory.CreateDirectory(directoryName);
}
}
}
At the end of running the sample, notice how both folders A and B have A.txt and B.txt.
License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
[출처] https://www.codeproject.com/Articles/275885/Microsoft-Sync-Framework
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

