사용자 지정 공급자 기본 사항
Microsoft Sync Framework에는 파일 동기화 등 다양한 동기화 시나리오에 대한 공급자가 들어 있지만 어떤 경우에는 사용자 지정 공급자가 필요합니다. 사용자 지정 공급자를 사용하려면 개발자가 Sync Framework에 포함된 공급자보다 더 많은 코드를 작성해야 하지만 이러한 점이 Sync Framework의 유연성과 확장성에 중요한 구성 요소입니다. 이 항목에서는 사용자 지정 공급자를 이해하고 응용 프로그램에 적합한 사용자 지정 공급자 형식을 선택하는 데 도움이 되는 정보를 제공합니다. Sync Framework에 익숙하지 않으면 적절한 Sync Framework 구성 요소 선택에서 "Sync Framework 구성 요소"를 읽어 보는 것도 좋습니다.
공급자, 응용 프로그램 및 메타데이터 관리 이해
Microsoft Sync Framework에서는 동기화 런타임, 동기화 세션 및 두 가지 동기화 공급자의 네 가지 기본 구성 요소를 사용하여 복제본을 동기화합니다. 데이터를 동기화하려면 응용 프로그램에서 동기화 세션을 만들고 원본 공급자와 대상 공급자를 전달합니다. 세션에서는 원본 공급자를 사용하여 원본 복제본에서 발생한 새 변경 내용을 가져오고 대상 공급자를 사용하여 이러한 변경 내용을 대상 복제본에 적용합니다. 공급자는 각 복제본 및 동기화할 각 항목에 대한 정보를 포함한 메타데이터를 유지 관리합니다. 정보는 복제본에 직접 적용되거나 동기화를 통해 적용된 모든 변경 내용을 설명하는 메타데이터입니다.
Sync Framework에서 동기화할 데이터 저장소의 공급자가 제공되지 않으면 사용자 지정 공급자를 작성해야 합니다. Sync Framework에는 단순 사용자 지정 공급자와 표준 사용자 지정 공급자라는 두 가지 형식의 사용자 지정 공급자에 대한 관리되는 API와 관리되지 않는 API가 들어 있습니다.
단순 공급자는 인터페이스 수가 적고 인터페이스가 단순하므로 개발 속도가 빠르며 고급 변경 내용 추적 메커니즘이 없는 데이터 저장소를 더욱 직관적으로 지원할 수 있습니다.
표준 공급자는 최상의 유연성과 가장 높은 수준의 성능 및 견고성을 제공합니다.
두 형식의 공급자를 사용하여 다양한 데이터 저장소를 동기화할 수 있으며 두 공급자 모두 필터링 및 충돌 처리와 같은 중요한 영역에서 옵션을 제공합니다. 하지만 여기에는 중요한 차이가 있습니다. 자세한 내용은 이 항목에서 "단순 공급자와 표준 공급자 중 결정"을 참조하십시오.
다음 그림에서는 동기화 시나리오에서 사용되는 기본 요소를 보여 줍니다. 그림은 적절한 Sync Framework 구성 요소 선택에 있는 것 중 하나와 유사하지만 해당 텍스트는 사용자 지정 공급자와 관련된 추가 정보를 제공하고 시스템을 통한 데이터 및 메타데이터의 흐름을 보여 줍니다.
그림에 있는 요소는 다음과 같은 세 가지 유형입니다.
개발자가 작성한 요소
응용 프로그램에서 동기화를 시작하고, 이벤트에 응답하고, 응용 프로그램 요구 사항을 기반으로 한 다른 태스크를 처리합니다. 자세한 내용은 동기화 응용 프로그램 구현을 참조하십시오.
공급자는 복제본의 메타데이터를 관리하고 Sync Framework를 사용하여 변경 내용을 열거하고 충돌을 검색합니다. 또한 공급자는 복제본의 데이터 저장소를 사용하여 항목 데이터를 전송(원본 공급자 역할을 하는 경우)하고 변경 내용을 적용(대상 공급자 역할을 하는 경우)합니다. 공급자는 동기화되는 데이터 형식에 따라 다를 수 있습니다. 세션의 두 공급자는 종종 형식은 같지만 요구 사항은 다를 수 있습니다. 상호 운용성에 대한 자세한 내용은 다른 공급자의 데이터 통합을 참조하십시오.
관리 코드 단순 공급자는 FullEnumerationSimpleSyncProvider 또는 AnchorEnumerationSimpleSyncProvider를 구현하고, 표준 공급자는 KnowledgeSyncProvider, IChangeDataRetriever 및 INotifyingChangeApplierTarget을 구현합니다.
비관리 코드 단순 공급자는 IFullEnumerationSyncProvider 또는 IAnchorSyncProvider를 구현하고, 표준 공급자는 IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever 및 ISynchronousNotifyingChangeApplierTarget을 구현합니다. 비동기 공급자의 경우에는 비동기 버전을 구현합니다.
데이터 저장소는 공급자를 작성할 저장소입니다.
데이터 전송 프로토콜에서 두 공급자 사이에 데이터 변경 내용이 전송되는 방법을 결정합니다.
Sync Framework에서 제공된 요소
관리 코드를 사용하는지 또는 비관리 코드를 사용하는지에 따라 응용 프로그램이 동기화 조정자(SyncOrchestrator) 또는 동기화 세션(ISyncSession)과 통신한 다음 각 동기화 공급자와 통신하고 동기화 프로세스를 실행하고 상태, 충돌 및 오류를 클라이언트 응용 프로그램에 전달합니다.
동기화 런타임은 공급자가 메타데이터 관리, 충돌 검색 및 변경 내용 적용과 같은 일반적인 동기화 태스크를 수행하도록 도와 줍니다.
공급자 및 응용 프로그램 요구 사항에 따라 개발자가 작성하거나 Sync Framework에서 제공된 요소
메타데이터 저장소에는 Sync Framework에서 각 공급자가 선택할 변경 내용을 결정하고 해당 데이터 저장소에 적용하는 데 사용하는 메타데이터가 포함됩니다. 메타데이터 저장소는 데이터 저장소와 별개이거나(예: 별도의 파일 또는 데이터베이스) 저장소에 통합될 수 있습니다(예: 데이터베이스의 추가 테이블). 일반적으로 동기화에 필요한 메타데이터는 동기화 공급자에서 관리합니다. 그러나 복제본의 구현에 따라서는 메타데이터 중 일부를 별도의 구성 요소에서 관리하는 것이 유용할 수 있습니다. 예를 들어 동기화 도중이 아닌 예약된 시간에 따라 오래된 메타데이터를 정리하는 서비스를 사용할 수 있습니다. 필요한 메타데이터와 공급자에 따른 저장 및 작업 방식이 사용됩니다. 각 공급자 형식의 메타데이터 요구 사항에 대한 자세한 내용은 단순 공급자의 메타데이터 관리 및 표준 공급자에 대한 메타데이터 요구 사항을 참조하십시오.
단순 공급자는 메타데이터 저장소와의 상호 작용을 거의 전부 개발자에게 드러내지 않고 Sync Framework에 포함된 Metadata Storage Service의 구현을 사용합니다. 표준 사용자 지정 공급자는 이 구현을 사용하거나, Metadata Storage Service API 기반의 다른 구현을 사용하거나, 별개의 저장소 또는 데이터 저장소 안에 메타데이터를 저장하는 구현을 완전히 사용자 지정할 수 있습니다. 자세한 내용은 표준 공급자의 메타데이터 관리를 참조하십시오.
단순 공급자와 표준 공급자 중 결정
대부분의 경우 단순 공급자를 사용하는 것이 좋지만 단순 공급자 API의 디자인에서 만들었을 경우의 제한 사항을 우선 이해해야 합니다.
동기화할 데이터 저장소가 모든 형식의 변경 내용 추적을 지원하지는 않고 앵커 기반 변경 내용 추적만 지원합니다.
앵커는 마지막 동기화 세션 이후 변경된 데이터 저장소의 항목을 나타내는 개체입니다. 변경 내용 추적이 없거나 앵커 기반 변경 내용 추적만 있는 저장소에서는 동기화 정보 업데이트가 저장소에 변경 내용이 발생할 때(동기적)가 아니라 동기화 세션 동안(비동기적) 발생합니다. 그러면 특정 복제본에서 동시에 많은 동기화 세션이 발생할 경우 성능에 영향을 줄 수 있습니다. 따라서 응용 프로그램에 높은 동시성이 필요하고 각 데이터 저장소가 동기화 정보에 대해 동기 업데이트를 지원하면 표준 공급자를 사용하십시오.
복제본에 동기화할 항목 형식이 하나만 있어야 합니다.
데이터 저장소 제한 또는 응용 프로그램 요구 사항 때문에 메타데이터를 데이터 저장소 외부에 저장해야 합니다.
단순 공급자는 Sync Framework에 포함된 Metadata Storage Service의 구현을 사용하여 메타데이터를 저장합니다. 메타데이터는 설명하는 데이터와 별개로 저장되며 그 결과 다음과 같은 두 문제가 발생할 수 있습니다.
메타데이터가 원격으로 저장되면 동기화 세션 중에는 전혀 사용할 수 없습니다. 예를 들어 동기화할 두 복제본 간의 네트워크 연결은 사용할 수 있지만 메타데이터를 호스팅하는 서버에 대한 연결은 사용할 수 없습니다.
데이터와 메타데이터 간의 트랜잭션 일관성이 보장되지 않습니다. 데이터와 같은 컴퓨터에 메타데이터를 저장하는 것이 좋지만 표준 공급자를 사용하고 데이터 저장소에 메타데이터를 저장하거나 분산 트랜잭션을 사용하여 두 저장소를 업데이트하지 않는 한 트랜잭션 지원을 사용할 수 없습니다. 표준 공급자에서도 Metadata Storage Service를 사용할 수 있지만 단순 공급자와 같이 사용할 필요는 없습니다.
응용 프로그램 요구 사항이 이러한 제한 사항에 적합하면 단순 공급자를 사용하는 것이 좋습니다. 단순 공급자에 대한 자세한 내용은 단순 사용자 지정 공급자 구현을 참조하십시오. 표준 공급자에 대한 자세한 내용은 표준 사용자 지정 공급자 구현을 참조하십시오.
Sync Framework 참가자 유형 이해
Sync Framework를 사용하여 다양한 기능의 참가자 사이에서 데이터를 동기화할 수 있습니다. 참가자는 Sync Framework를 실행하는 다른 시스템과 동기화할 수 있는 장치 또는 서비스입니다.
Sync Framework에서는 다음과 같은 참가자 유형을 지원합니다.
전체 참가자
프록시 참가자
부분 참가자
단순 참가자
전체 참가자
전체 참가자는 로컬에서 런타임을 호스팅하고 메타데이터를 저장합니다. 전체 참가자는 동기화를 시작할 수 있으므로 피어 투 피어 동기화 시나리오에 참가할 수 있습니다.
피어 투 피어 동기화의 두 전체 참가자
부분 참가자
부분 참가자는 동기화 메타데이터를 저장할 수 있지만 처리할 수는 없습니다. 부분 참가자는 몇 개의 전체 참가자에 의존하여 런타임을 호스팅하고 동기화를 시작합니다. 부분 참가자는 다중 마스터 동기화 메타데이터를 보유하고 이러한 메타데이터를 다른 전체 참가자에 전달할 수 있으므로 부분 참가자를 통해 데이터가 전송될 수 있습니다. 부분 참가자는 메타데이터를 처리하거나 런타임을 호스팅할 수 없으므로 피어 투 피어 동기화 시나리오에 참가할 수 없습니다. 부분 참가자의 예로는 휴대용 USB 드라이브와 데이터 저장 기능이 있는 휴대폰이 있습니다.
다음 그림에서는 컴퓨터 등의 전체 참가자와 휴대폰 등의 부분 참가자를 동기화하는 방법을 보여 줍니다. 전체 참가자는 부분 참가자를 대신하여 변경 내용을 열거하거나 필터링하고 부분 참가자에 메타데이터를 저장합니다. 따라서 다른 전체 참가자가 해당 부분 참가자와 동기화할 수 있습니다.
전체 참가자와 부분 참가자 동기화
단순 참가자
단순 참가자는 메타데이터를 저장하지 않으며 런타임을 호스팅할 수 없고 변경 내용을 추적하지 않습니다. 대신 단일 전체 참가자에 의존하여 변경 내용 열거, 변경 내용 적용, 메타데이터 조작 및 저장과 관련된 모든 작업을 수행합니다. 단순 참가자는 메타데이터를 저장할 수 없으므로 다른 참가자와 데이터를 주고받는 단일 전체 참가자와 쌍을 이루는 리프 노드의 역할만 할 수 있습니다.
다음 그림에서는 Metadata Storage Service를 사용하여 단순 참가자의 메타데이터를 저장하고 단순 참가자를 대신하여 모든 동기화 작업을 수행하는 전체 참가자를 보여 줍니다. 메타데이터 저장소는 단순 참가자와 관련된 변경 내용을 추적하는 데 사용되지만 단순 참가자는 메타데이터를 저장할 수 없으므로 전체 참가자에 저장됩니다.
Metadata Storage Service를 사용하여 단순 참가자를 동기화하는 전체 참가자
프록시 참가자
프록시 참가자는 로컬에서 호출을 처리하고 원격 공급자(예: 서버에 저장된 데이터베이스)에 전달하여 원격 공급자의 동기화를 시작합니다.
보안 참고 |
---|
Sync Framework에서는 프록시 공급자와 원격 공급자 간에 인증이나 암호화를 제공하지 않습니다. 무단 액세스나 훼손을 방지하기 위해 SSL(Secure Sockets Layer)과 같은 적절한 상호 인증 및 암호화 메커니즘을 사용하여 프록시 공급자와 원격 공급자 간의 통신 채널을 보호해야 합니다. |
다음 그림에서는 전체 참가자 공급자와 프록시 공급자를 동기화하는 방법을 보여 줍니다. 프록시 공급자는 네트워크를 통해 명령과 메타데이터를 원격 공급자에 전송하기만 합니다. 원격 공급자는 데이터베이스 서버에 있으며 동기화에 사용되는 실제 논리를 구현합니다. 빨간색 점선은 컴퓨터 경계를 나타냅니다.
전체 참가자와 프록시 참가자 동기화
다음 그림에서는 Sync Framework를 사용하여 동기화를 시작하는 응용 프로그램에서 원격 위치에 있는 공급자를 동기화하는 방법을 보여 줍니다. 제어하는 응용 프로그램에서는 동기화해야 하는 두 웹 서비스나 스마트 장치를 연결할 수 있습니다. 두 로컬 공급자는 모두 원격 공급자에 대한 프록시 공급자입니다. 빨간색 점선은 컴퓨터 경계를 나타냅니다.
두 프록시 참가자를 동기화하는 중앙 응용 프로그램
참고 항목
개념
적절한 Sync Framework 구성 요소 선택
단순 사용자 지정 공급자 구현
표준 사용자 지정 공급자 구현
동기화 응용 프로그램 구현
Sync Framework 샘플