Sync Framework 2.0의 새로운 기능
Sync Framework 2.0에는 다음과 같은 영역의 새로운 기능과 향상된 기능이 포함되어 있습니다.
데이터베이스 공급자
SQL Server 및 SQL Server Compact를 위한 새로운 공급자
강력한 메모리 기반 일괄 처리
API 프로비전 및 관리
스냅숏 초기화
토폴로지 형태의 유연성
성능 향상
File Synchronization Provider
- 데이터 변환
사용자 지정 공급자
단순 공급자
공급자 간의 데이터 변환
필터링
충돌 처리
추적
변경 적용 서비스
Metadata Storage Service 직렬화기
공급자 변환기
정보 기능 향상
호환성 수준
사용되지 않는 인터페이스
데이터베이스 공급자
Sync Framework 2.0에는 크게 향상된 성능과 함께 두 가지 새로운 데이터베이스 공급자와 여러 중요한 동기화 및 관리 기능이 도입되었습니다.
SQL Server 및 SQL Server Compact를 위한 새로운 공급자
Sync Framework 2.0은 다음 두 가지 새로운 데이터베이스 공급자를 포함합니다.
SqlCeSyncProvider는 SQL Server Compact 데이터베이스를 동기화하는 데 사용됩니다.
이 공급자는 중앙 서버와의 동기화에 사용할 수 있지만 SqlCeClientSyncProvider로는 불가능한 다른 클라이언트와의 동기화도 수행할 수 있습니다. 이 기능을 사용하여 개발자는 중앙 서버에 대한 연결이 없는 상태에서 서로 동기화가 필요한 여러 팀에 대한 공동 작업 시나리오와 같은 새 시나리오를 대상으로 할 수 있습니다.
SqlSyncProvider는 SQL Server Express를 포함한 다른 버전의 SQL Server를 동기화하는 데 사용됩니다.
이 공급자는 서버 또는 클라이언트로 사용할 수 있어 SQL Server 데이터베이스 동기화의 불편함을 상당히 감소시킵니다. SqlSyncProvider의 기능은 DbSyncProvider와 같지만 Sync Framework에서 데이터를 동기화하는 데 필요한 코드의 양이 훨씬 적고 쿼리에 대한 지식도 많이 필요하지 않습니다. DbSyncProvider는 SQL Server 이외의 데이터베이스에 여전히 적합합니다.
모든 Sync Framework 공급자와 마찬가지로 이 새로운 공급자는 클라이언트-서버, 피어 투 피어 등 모든 형태의 토폴로지에서 사용할 수 있습니다. 두 공급자에 대한 자세한 내용은 방법: 공동 작업 동기화 구성 및 실행(SQL Server)을 참조하십시오.
강력한 메모리 기반 일괄 처리
Sync Framework 및 Sync Services for ADO.NET의 이전 버전은 개발자에게 자신의 일괄 처리 논리를 정의한 다음 Sync Framework Runtime에서 호출되도록 하는 방법을 제공했습니다. 그러나 이 방법에는 변경 내용을 여러 일괄 처리로 나눌 때 당연히 발생하는 복잡성, 클라이언트와 서버 간의 과도한 네트워크 왕복, 리소스 경합 문제를 해결할 수 없음(일괄 처리가 각 일괄 처리에서 사용하는 메모리 양이 아닌 동기화되는 행의 수를 기준으로 하기 때문) 등의 단점이 있습니다.
Sync Framework 2.0은 보다 완벽하고 강력한 일괄 처리 API를 제공하여 이러한 문제를 모두 해결합니다. Sync Framework 런타임이 API의 여러 속성을 기준으로 변경 내용을 여러 일괄 처리로 나누기 때문에 개발자는 더 이상 일괄 처리 논리를 직접 작성할 필요가 없습니다. 이제는 동기화되는 행의 수가 아니라 메모리 사용량에 따라 일괄 처리가 정의되므로 대부분의 시나리오에서 메모리 부족 문제가 없어집니다. 자세한 내용은 방법: 변경 내용을 일괄 처리로 전달(SQL Server)을 참조하십시오.
API 프로비전 및 관리
이전까지 Visual Studio 도구를 통해서만 노출되었던 프로비전 및 초기화 작업이 이제 데이터베이스 공급자 API에 추가되었습니다. 여기에는 Sync Framework에서 필요한 변경 내용 추적 테이블 및 트리거를 추가하여 기존 데이터베이스를 프로비전하는 기능이 포함됩니다. 빈 데이터베이스로 시작하여 사용자 스키마를 만들고 이미 프로비전된 다른 서버 또는 클라이언트 데이터베이스를 기준으로 스키마를 프로비전하는 기능도 포함됩니다. 자세한 내용은 방법: 공동 작업 동기화 구성 및 실행(SQL Server)을 참조하십시오.
데이터베이스 백업과 복원, 메타데이터 정리와 같은 일반적인 태스크도 이제 API를 통해 직접 수행할 수 있어 개발자가 이러한 논리를 직접 구현할 필요가 없습니다. 자세한 내용은 방법: 데이터베이스 백업 및 복원(SQL Server) 및 방법: 공동 작업 동기화의 메타데이터 정리(SQL Server)를 참조하십시오.
스냅숏 초기화
SQL Server Compact 클라이언트 데이터베이스가 다른 데이터베이스에서 변경 내용을 받을 수 있으려면 우선 클라이언트 데이터베이스에 테이블 스키마와 초기 데이터가 있어야 하고 Sync Framework에 필요한 변경 내용 추적 인프라도 있어야 합니다. Sync Framework에서는 데이터베이스를 초기화하는 다음과 같은 두 가지 방법을 제공합니다.
클라이언트 데이터베이스의 전체 초기화
전체 초기화가 적절한 경우도 있지만 클라이언트의 리소스가 제한적인 시나리오에서는 적절하지 않습니다. 데이터베이스 스키마를 새로 만들고 느린 네트워크 연결을 통해 모든 데이터를 로드하면 매우 긴 초기 동기화 시간과 메모리 부족 오류가 발생할 수 있습니다.
기존 클라이언트 데이터베이스를 사용한 클라이언트 데이터베이스의 스냅숏 초기화
Sync Framework 2.0에 도입된 스냅숏 초기화는 클라이언트 데이터베이스를 초기화하는 데 드는 시간을 줄이기 위해 디자인되었습니다. 전체 초기화를 사용하여 한 클라이언트 데이터베이스를 초기화한 후 이 처음 클라이언트 데이터베이스의 스냅숏을 사용하여 이후 데이터베이스를 초기화할 수 있습니다. 스냅숏은 테이블 스키마, 데이터(선택 사항) 및 변경 내용 추적 인프라를 포함하는 특별히 준비된 SQL Server Compact 데이터베이스입니다. 스냅숏 초기화는 초기 동기화 시간을 대폭 감소시키고 메모리 경합을 크게 줄입니다. 자세한 내용은 방법: 공동 작업 동기화 구성 및 실행(SQL Server)에서 "클라이언트 프로비전"을 참조하십시오.
토폴로지 형태의 유연성
Sync Services for ADO.NET의 이전 버전은 많은 클라이언트가 중앙 서버를 통해 변경 내용을 동기화하는 특정 토폴로지 형태에 한정되어 있었습니다.
Sync Services for ADO.NET이 이제 Sync Framework를 기반으로 하므로 개발자가 보다 광범위한 시나리오를 대상으로 할 수 있습니다. 예를 들어 개발자가 클라이언트 간에 동기화 기능이 필요한 공동 작업 시나리오를 지원할 수 있습니다. 또한 개발자가 일련의 POS(Point of sale) 터미널이 지사 서버와 동기화되고, 차례로 중앙 본사 서버와 동기화되는 지점 시나리오를 대상으로 할 수 있습니다.
새로운 데이터베이스 공급자가 Sync Framework를 기반으로 하므로 Azure SQL 데이터 서비스와 같이 새로운 저장소 유형과의 변경 내용 동기화도 지원하도록 단계가 설정됩니다.
성능 향상
이 릴리스의 새로운 데이터베이스 공급자는 단일 서버가 수백 개의 동시 동기화 작업을 수행하는 수천 개의 클라이언트를 지원하는 대규모 시나리오에서 철저하게 테스트되었습니다. 이러한 테스트의 결과로 많은 내부 성능 향상이 이루어져 Sync Framework 데이터베이스 공급자가 RDA(Remote Data Access)와 같은 다른 Microsoft 기술처럼 수행하는 동시에 병합 복제와 같은 완전한 솔루션과도 경쟁하는 다양한 기능을 제공할 수 있습니다.
File Synchronization Provider
사용자 지정 공급자의 모든 형식에 사용할 수 있는 데이터 변환 API뿐만 아니라 특히 File Synchronization Provider에 사용되는 변환 API도 Sync Framework 2.0에 포함되어 있습니다. 자세한 내용은 File Synchronization Provider와 다른 공급자의 동기화, IFileDataRetriever(관리 코드의 경우) 및 IFileDataRetriever(비관리 코드의 경우)를 참조하십시오.
사용자 지정 공급자
Sync Framework 2.0에는 표준 사용자 지정 공급자의 기능이 대폭 향상되었고 새로운 사용자 지정 공급자 유형인 단순 공급자가 도입되었습니다.
단순 공급자
단순 공급자 API를 사용하면 공급자를 개발하는 데 필요한 작업량을 줄일 수 있습니다. 특히 데이터 원본에 변경 내용 추적과 같은 동기화 관련 기능이 적을 때 유용합니다. 개발자는 이 API를 사용하여 특별한 동기화 지식 없이도 공급자를 개발할 수 있습니다. 단순 공급자의 코드 중 대부분은 데이터 원본과 상호 작용하는 데 필요한 코드입니다. 자세한 내용은 단순 사용자 지정 공급자 구현 및 사용자 지정 공급자 기본 사항을 참조하십시오.
관리 코드의 중요한 새 형식
전체 형식 목록은 Microsoft.Synchronization.SimpleProviders를 참조하십시오.
비관리 코드의 중요한 새 인터페이스
전체 형식 목록은 Sync Framework 단순 공급자 구성 요소를 참조하십시오.
공급자 간의 데이터 변환
일부 시나리오에서는 동기화 공급자가 같은 유형의 데이터(예: 판매 데이터)를 동기화하지만 각 공급자에 필요한 데이터 형식이 다를 수 있습니다. 이 시나리오를 처리하려면 Sync Framework에서 데이터를 각 공급자에 필요한 형식으로 변환하는 인터페이스를 구현할 수 있습니다. 자세한 내용은 공급자 간의 데이터 변환을 참조하십시오.
관리 코드의 새 형식 및 속성
비관리 코드의 새 인터페이스
필터링
필터는 동기화되는 데이터를 제어하는 데 사용됩니다. Sync Framework 2.0에서는 동기화되는 변경 단위를 제어하는 필터 및 개발자가 작성한 사용자 지정 필터에 대한 지원이 추가되었습니다. 공급자에서 동기화 중에 사용되는 필터를 협상하는 기능도 Sync Framework 2.0에 추가되었습니다.
자세한 내용은 동기화 데이터 필터링을 참조하십시오.
변경 단위 필터링
변경 단위는 연락처 항목의 전화 번호같이 동기화되는 항목의 일부입니다. 서로 다른 복제본에서 같은 항목을 다르게 표현할 수 있습니다. 한 복제본이 다른 복제본보다 풍부하고 자세한 표현을 제공할 수 있습니다. 예를 들어 동기화 커뮤니티에서 연락처 정보를 교환하고 name, phone number 및 address에 대한 변경 단위를 정의합니다. 커뮤니티의 한 복제본은 name과 phone number만 저장할 수 있는 모바일 장치입니다. Sync Framework에서는 공급자에서 복제본이 데이터 하위 집합만 저장할 수 있음을 나타내는 변경 단위 필터를 지정하도록 하여 이 시나리오를 해결할 수 있습니다. 동기화 메타데이터 및 동기화 프로세스 모두 이 필터링을 효율적으로 처리할 수 있도록 향상되었습니다.
관리 코드의 새 형식
비관리 코드의 새 인터페이스 및 메서드
사용자 지정 필터
사용자 지정 필터는 개발자가 작성하고 어떠한 형식도 될 수 있습니다. 필터링된 복제본은 별점 3개 이상인 노래만 저장하는 미디어 저장소 복제본같이 필터에 있는 항목에 대한 항목 데이터만 저장합니다. 노래의 별점이 변경되면 항목이 필터에 포함되거나 제외될 수 있습니다. 개발자는 필터링된 복제본에 저장된 항목 데이터를 제어하는 데 사용되는 사용자 지정 필터를 정의할 수 있습니다. 필터 추적 복제본은 필터에 있는 항목과 최근에 필터 내부/외부로 이동한 항목을 식별할 수 있는 커뮤니티의 또 다른 복제본입니다. 필터 추적 복제본은 필터에 없는 항목에 대한 항목 데이터를 저장할 수 있습니다. Sync Framework에서는 필터에 대한 정보와 함께 필터에 있는 항목만 전송하여 필터 추적 복제본에서 필터링된 복제본으로 효율적으로 동기화하도록 지원합니다. Sync Framework에서는 또한 필터링된 복제본에서 필터 추적 복제본으로 변경 내용이 전송될 때 필터 추적 복제본에 대한 정보와 기타 메타데이터를 올바로 계산합니다.
사용자 지정 필터는 단순 공급자 또는 제약 조건 충돌을 보고하거나 변경 적용 서비스를 사용하는 공급자에서 사용할 수 없으며, 그렇지 않을 경우 예상치 못한 결과가 발생할 수 있습니다.
관리 코드의 중요한 새 형식
공급자는 다음과 같은 형식을 구현합니다.
Sync Framework는 다음과 같은 형식을 구현합니다.
전체 형식 목록은 Microsoft.Synchronization을 참조하십시오.
비관리 코드의 중요한 새 인터페이스
공급자는 다음과 같은 인터페이스를 구현합니다.
Sync Framework는 다음과 같은 인터페이스를 구현합니다.
전체 인터페이스 목록은 Sync Framework 핵심 구성 요소를 참조하십시오.
공급자 협상 필터
대상 데이터 원본에 사용 가능한 데이터 하위 집합만 저장되면 원본 공급자가 필터를 사용하여 대상에 저장할 수 있는 데이터만 열거하는 것이 더욱 유용합니다. 필터 협상을 사용하면 대상 공급자가 변경 내용 열거 중에 원본 공급자가 하나 이상의 필터를 사용하도록 지정할 수 있습니다. 원본 공급자는 필터를 허용하거나 거부할 수 있습니다. 원본 공급자가 요청된 필터 중 일부를 지원하지 않으면 대상 공급자가 모든 데이터를 받고 자체적으로 필터링을 수행하도록 선택할 수 있습니다. Sync Framework는 적절하게 공급자를 호출하여 필터 사용을 협상합니다.
관리 코드의 새 형식
비관리 코드의 새 인터페이스
충돌 처리
Sync Framework 2.0에서는 제약 조건 충돌, 기록된 충돌 및 마지막 기록자 우선 충돌 해결 구현에 대한 향상된 지원이 추가되었습니다.
제약 조건 충돌
Sync Framework 2.0에서는 항목 또는 변경 단위에 적용되는 제약 조건(예: 파일 시스템 내에서 폴더의 관계 또는 이름이 같은 데이터의 위치 등)을 위반하는 충돌인 제약 조건 충돌에 대한 지원이 향상되었습니다. 대상 공급자는 제약 조건 충돌을 Sync Framework에 보고한 후 Sync Framework 구성 요소를 사용하여 충돌을 해결하고 대상 복제본에 해결을 적용하는 방법을 결정할 수 있습니다.
제약 조건 충돌은 사용자 지정 필터 또는 변경 적용 서비스를 사용하는 공급자가 사용할 수 없으며, 그렇지 않을 경우 예상치 못한 결과가 발생할 수 있습니다.
자세한 내용은 제약 조건 충돌 검색 및 해결을 참조하십시오.
관리 코드의 중요한 새 형식 및 업데이트된 형식
대상 공급자는 다음과 같은 새 클래스를 구현합니다.
동기화 응용 프로그램은 다음과 같은 클래스의 새 메서드를 구현합니다.
Sync Framework는 다음과 같은 클래스의 새 메서드를 구현합니다.
전체 형식 목록은 Microsoft.Synchronization을 참조하십시오.
비관리 코드의 중요한 새 인터페이스
대상 공급자는 다음과 같은 새 인터페이스를 구현합니다.
동기화 응용 프로그램은 다음과 같은 새 인터페이스를 구현합니다.
Sync Framework는 다음과 같은 새 인터페이스를 구현합니다.
전체 인터페이스 목록은 Sync Framework 핵심 구성 요소를 참조하십시오.
충돌 로깅
동기화 세션과 별개로 처리할 수 있도록 충돌을 로그에 저장하면 유용합니다. 나중에 사용자가 충돌을 검토하고 해결 방법을 결정할 수 있습니다. Sync Framework 2.0에서는 충돌 로그 인터페이스 집합을 정의하고 로그의 충돌을 관리하는 데 도움이 되는 구성 요소를 제공합니다. Sync Framework에서는 충돌 로그가 없는 복제본에 대한 충돌 로그 인터페이스의 구현도 제공합니다. 이 구현은 메모리에서 작동하며 제약 조건 충돌 처리의 결과로 발생할 수 있는 임시 충돌을 저장하는 데 사용됩니다. 자세한 내용은 충돌 기록 및 관리를 참조하십시오.
관리 코드의 새 형식
공급자는 다음과 같은 새 클래스를 구현합니다.
Sync Framework는 다음과 같은 새 클래스를 구현합니다.
비관리 코드의 새 인터페이스
공급자는 다음과 같은 새 클래스를 구현합니다.
Sync Framework는 다음과 같은 새 클래스를 구현합니다.
마지막 기록자 우선 충돌 해결
응용 프로그램은 변경된 위치에 상관없이 최근에 변경된 내용을 유지하여 동시성 충돌(여러 복제본에서 항목이 업데이트됨)을 해결할 수 있습니다. Sync Framework 2.0에서는 원본 복제본에서 변경된 시간과 대상 복제본에서 변경된 시간을 검색하는 메커니즘을 응용 프로그램에 제공하여 이 해결 방법을 지원합니다. 그런 다음 응용 프로그램에서 두 시간을 비교하고 마지막으로 변경된 변경 내용을 적용하는 충돌 해결 동작을 지정할 수 있습니다.
자세한 내용은 동시성 충돌 검색 및 해결을 참조하십시오.
관리 코드의 새 형식
공급자는 다음과 같은 새 인터페이스를 구현합니다.
비관리 코드의 새 인터페이스
공급자는 다음과 같은 새 인터페이스를 구현합니다.
추적
Sync Framework에서는 여러 구성 요소의 실행을 추적할 수 있으므로, 응용 프로그램 디버깅 중에 유용하게 사용할 수 있습니다. 대부분의 Sync Framework 구성 요소에서 추적은 ETW(Windows용 이벤트 추적) 인프라를 사용하여 네이티브 코드 수준에서 수행됩니다. 관리되는 버전의 API를 사용하여 개발하는 경우에도 관리되는 API가 네이티브 API에 대한 씬 래퍼이므로 여전히 ETW를 사용합니다. 자세한 내용은 Sync Framework 구성 요소 추적을 참조하십시오.
Sync Framework 데이터베이스 공급자는 .NET Framework 구현에 기반한 관리되는 추적을 제공합니다. 자세한 내용은 방법: 동기화 프로세스 추적을 참조하십시오.
변경 적용 서비스
Sync Framework에는 대부분의 응용 프로그램에서 복제본에 변경 내용을 적용하는 데 사용하는 변경 내용 적용자 구현이 포함되어 있습니다. 버전 2.0에서 Sync Framework는 변경 내용 적용자와 같은 작업을 보다 세부적인 방식으로 수행할 수 있는 변경 적용 서비스를 도입했습니다. 표준 변경 내용 적용자보다 높은 유연성이 필요한 대상 공급자는 변경 적용 서비스를 사용하여 필요한 일련의 동작만 수행할 수 있습니다.
변경 적용 서비스는 제약 조건 충돌을 보고하거나 사용자 지정 필터를 사용하는 공급자가 사용할 수 없으며, 그렇지 않을 경우 예상치 못한 결과가 발생할 수 있습니다.
자세한 내용은 변경 적용 서비스를 사용하여 변경 내용 적용를 참조하십시오.
관리 코드의 새 형식
비관리 코드의 새 인터페이스 및 열거형
Metadata Storage Service 직렬화기
Metadata Storage Service에서는 소형 데이터베이스에 복제본 및 항목 메타데이터를 저장합니다. 메타데이터는 특정 테이블 스키마 및 이진 형식으로 저장됩니다. 이러한 스키마나 형식은 새 버전의 Sync Framework가 릴리스되면 변경될 수 있습니다. 또한 데이터베이스의 사용자 지정 공급자 필드는 개발자가 새로운 버전의 특정 공급자를 릴리스하면서 변경될 수 있습니다. 서로 다른 버전 간에 상호 운용성을 높이기 위해 Sync Framework는 정식 파일 형식 및 직렬화 인터페이스 집합을 제공합니다. 이를 통해 버전 간 메타데이터 변경 내용의 합당한 범위에 걸쳐 이후 및 이전 버전과 호환될 수 있습니다. 자세한 내용은 버전이 다른 구성 요소의 메타데이터 액세스 및 메타데이터 저장소 버전 업그레이드를 참조하십시오.
관리 코드의 새 형식
비관리 코드의 새 인터페이스
공급자 변환기
사용자 지정 공급자는 대개 IKnowledgeSyncProvider에서 파생되지만 ISyncProvider에서 직접 파생될 수도 있습니다. 그러나 ISyncSession 개체를 사용하여 동기화를 관리할 경우에는(일반적) 공급자가 IKnowledgeSyncProvider에서 파생되어야 합니다. ISyncProvider에서 파생된 공급자가 동기화 세션에 참가할 수 있도록 하려면 Sync Framework에서 런타임에 공급자를 IKnowledgeSyncProvider로 변환할 수 있습니다.
비관리 코드의 새 인터페이스 및 메서드
정보 기능 향상
Sync Framework 2.0에서는 유연성과 효율성을 높이기 위해 정보 개체가 향상되었습니다.
정보 구조
Sync Framework 2.0에서는 정보 개체의 기본 구조가 더욱 유연하고 효율적인 형식으로 변경되었으며 새 정보 요소에 액세스하는 새 인터페이스를 정의합니다. 이전 버전과의 호환성을 위해 새 정보 개체는 Sync Framework 1.0 정보 메서드의 출력도 에뮬레이트할 수 있습니다.
관리 코드의 새 형식 및 업데이트된 형식
비관리 코드의 새 인터페이스 및 열거형
정보 쿠키
Sync Framework 2.0에서는 성능이 특히 중요한 경우 빨리 비교하는 데 사용할 수 있는 정보의 소형 읽기 전용 표현인 정보 쿠키가 추가되었습니다.
관리 코드의 새 형식 및 멤버
비관리 코드의 새 열거형 및 메서드
호환성 수준
Sync Framework에는 다른 버전의 구성 요소가 올바로 상호 운용을 계속할 수 있도록 메타데이터에 대한 호환성 수준이 포함되어 있습니다. 자세한 내용은 Sync Framework 이전 버전과의 호환성 및 상호 운용성을 참조하십시오.
관리 코드의 새 형식 및 멤버
ChangeBatchBase의 CompatibilityLevel 속성 및 파생 클래스입니다.
SyncKnowledge의 CompatibilityLevel 속성 및 파생 클래스입니다.
비관리 코드의 새 열거형 및 메서드
사용되지 않는 인터페이스
다음과 같은 인터페이스가 사용되지 않으며 새로운 개발에 사용되지 않아야 합니다. Sync Framework 2.0에서 계속 예상대로 작동하지만 최신 버전에서 제거될 수 있습니다.
비관리 코드의 사용되지 않는 인터페이스
참고 항목
개념
Microsoft Sync Framework
Sync Framework 사용의 이점
적절한 Sync Framework 구성 요소 선택