공동 작업 동기화에 대한 아키텍처 및 클래스
오프라인 및 공동 작업 시나리오에서는 Sync Framework를 2 계층 아키텍처와 N 계층 아키텍처에 사용할 수 있습니다. 두 아키텍처 모두 동기화 세션 중에 작업이 발생합니다. 동기화 조정자는 두 동기화 공급자와 통신하여 각 데이터베이스에 대한 변경 내용을 검색하고 적용합니다. 공급자는 각 테이블에 대한 동기화 어댑터를 해당 테이블에 필요한 특정 SQL 명령과 함께 사용합니다. 일부 공급자는 이러한 명령을 사용자 지정할 수 있는 어댑터를 노출하고, 다른 공급자는 특정 저장소 동기화와 관련된 복잡성을 줄일 수 있도록 자동으로 어댑터를 생성합니다.
다음 그림에서는 2 계층 아키텍처를 보여 줍니다. 동기화 세션의 모든 구성 요소가 로컬 컴퓨터에 있고 로컬 컴퓨터와 원격 컴퓨터의 데이터베이스가 직접 연결되어 있습니다. 동기화 세션에서 로컬 컴퓨터는 동기화가 시작되는 컴퓨터입니다. 둘 이상의 컴퓨터에서 동기화를 시작하려면 각 컴퓨터가 그림에 나와 있는 구성 요소를 모두 포함해야 합니다. 이러한 구성 요소는 이 그림 다음에 자세히 설명되어 있습니다.
다음 그림에서는 N 계층 아키텍처를 보여 줍니다. 원격 컴퓨터에 대한 구성 요소를 비롯한 추가 구성 요소가 필요하고 원격 데이터베이스에 대한 연결은 현재 로컬 컴퓨터의 프록시와 원격 컴퓨터의 서비스를 통해 처리됩니다. 프록시와 서비스는 모두 응용 프로그램 개발자가 구현해야 합니다. 이 태스크와 관련된 복잡성을 줄일 수 있는 샘플이 제공됩니다. 2 계층 아키텍처와 같이 둘 이상의 컴퓨터에서 동기화를 시작하려면 각 컴퓨터가 모든 구성 요소를 포함해야 합니다.
데이터베이스
데이터베이스는 SQL Server Compact 3.5 SP1 이상(32비트 및 64비트 버전)을 포함한 SQL Server 2005 SP2 이상의 모든 버전이거나 ADO.NET 공급자가 사용할 수 있는 다른 버전일 수 있습니다. Sync Framework에서는 SQL Server 및 SQL Server Compact 데이터베이스에 대해 자동으로 변경 내용 추적 및 메타데이터 저장소를 구성합니다. 자세한 내용은 방법: 공동 작업 동기화 구성 및 실행(SQL Server)를 참조하십시오. SQL Server 이외의 데이터베이스인 경우에는 데이터베이스를 프로비전해야 합니다. 자세한 내용은 방법: 공동 작업 동기화를 위한 서버 데이터베이스 프로비전(SQL Server 이외)을 참조하십시오.
SyncOrchestrator
동기화 조정자는 다음과 같은 방법으로 동기화를 진행합니다.
Direction 속성을 기반으로 변경 내용을 적용할 순서 및 방향 결정
원격 동기화 공급자를 호출하여 원격 데이터베이스에서 변경 내용 검색 및 적용
로컬 동기화 공급자를 호출하여 로컬 데이터베이스에서 변경 내용 검색 및 적용
동기화 조정자는 동기화 세션의 세션 수준 정보도 유지 관리하며 동기화를 시작하는 응용 프로그램에 성공 메시지, 오류 및 통계를 제공합니다. 자세한 내용은 SyncOrchestrator를 참조하십시오.
SyncProvider(SqlSyncProvider, SqlCeSyncProvider 및 DbSyncProvider)
동기화 공급자는 각 데이터베이스와 통신하며 동기화 조정자가 데이터베이스의 구체적인 구현에 관계없이 작동하게 해 줍니다. SQL Server Compact 데이터베이스의 경우 SqlCeSyncProvider를 사용하고 다른 SQL Server 버전의 경우 SqlSyncProvider를 사용합니다. 다른 데이터베이스의 경우에는 DbSyncProvider를 사용합니다. 세 공급자 모두 RelationalSyncProvider에서 상속됩니다. 동기화 공급자가 수행하는 주요 작업은 다음과 같습니다.
마지막 동기화 세션 이후 데이터베이스에서 수행된 변경 내용 검색
데이터베이스에 증분 변경 내용 적용
충돌하는 변경 내용 검색
참고
두 SqlCeSyncProvider 인스턴스를 사용하여 두 SQL Server Compact 데이터베이스를 동기화하는 경우 N 계층 아키텍처를 사용해야 합니다. 2 계층 아키텍처는 이 시나리오에서 지원되지 않습니다.
SyncAdapter(DbSyncAdapter 및 SqlCeSyncAdapter)
ADO.NET의 데이터 어댑터를 기반으로 모델링되는 동기화 어댑터는 동기화되는 각 테이블에 대해 정의됩니다. 동기화 어댑터는 데이터베이스와 상호 작용하는 데 필요한 특정 SQL 명령을 서버 동기화 공급자에 제공합니다.
SqlSyncProvider 및 SqlCeSyncProvider에서 사용되는 동기화 어댑터의 경우 Sync Framework에서 명령을 자동으로 생성합니다(SqlCeSyncAdapter는 이 저장소와 동기화하는 복잡성을 줄이는 용도로 사용됨). DbSyncAdapter의 경우에는 사용자가 어댑터를 만들고 다른 서버나 클라이언트 데이터베이스의 삽입을 서버 데이터베이스에 적용하는 InsertCommand 같은 명령을 지정합니다. 동기화 어댑터는 ADO.NET DbCommand 개체를 사용하므로 ADO.NET에서 지원되는 모든 명령 구조를 사용할 수 있습니다. 여기에는 인라인 SQL, 저장 프로시저, 단일 테이블에 대한 뷰, 함수 등이 있습니다. 명령을 사용할 때는 전송 및 적용할 구조 및 데이터를 정의하는 하나의 결과만 있으면 됩니다. 자세한 내용은 DbSyncAdapter를 참조하십시오. 명령에 대한 자세한 내용은 방법: 공동 작업 동기화 구성 및 실행(SQL Server 이외)에서 "동기화 어댑터"를 참조하십시오.
API의 추가 클래스
이 항목의 그림에서는 API의 주요 클래스를 보여 줍니다. 그러나 여기에 나와 있는 클래스는 극히 일부분일 뿐입니다. 사용 가능한 모든 클래스에 대한 정보를 보려면 Microsoft.Synchronization, Microsoft.Synchronization.Data, Microsoft.Synchronization.Data.SqlServer 및 Microsoft.Synchronization.Data.SqlServerCe를 참조하십시오. 다음 섹션에서는 사용자가 파악해야 하는 기타 주요 클래스를 소개합니다.
DbSyncScope
동기화 범위는 한 단위로 동기화해야 하는 개체의 논리적인 그룹입니다. 데이터베이스 동기화의 경우 범위는 일반적으로 테이블 집합이며 테이블을 필터링할 수 있습니다. 테이블은 하나 이상의 범위에 포함될 수 있습니다. 자세한 내용은 방법: 공동 작업 동기화를 위한 서버 데이터베이스 프로비전(SQL Server 이외)에서 "동기화할 범위 정의"를 참조하십시오.
데이터베이스 프로비전 개체
SQL Server 및 SQL Server Compact 데이터베이스의 경우 Sync Framework는 범위 및 각 범위에 포함된 테이블을 설명하는 데 사용되는 클래스 집합을 제공합니다. 테이블 및 범위를 설명한 후 Sync Framework 개체를 사용하여 각 노드에 프로비전 스크립트를 적용합니다. 스크립트에서는 메타데이터 테이블, 트리거 및 저장 프로시저로 구성된 변경 내용 추적 및 변경 내용 적용 인프라를 만듭니다. 다음 표에서는 데이터베이스 및 공급자를 설치하는 데 사용되는 클래스를 나열합니다. 자세한 내용은 방법: 공동 작업 동기화 구성 및 실행(SQL Server)을 참조하십시오.
SQL Server | SQL Server Compact | 설명 |
---|---|---|
DbSyncScopeDescription |
한 단위로 동기화되는 테이블(선택적으로 필터링됨)의 논리적인 그룹인 동기화 범위를 나타냅니다. |
|
DbSyncScopeDescription 개체가 나타내는 특정 범위에 대한 SQL Server 또는 SQL Server Compact 데이터베이스 프로비전을 나타냅니다. |
||
SqlSyncProvider 또는 SqlCeSyncProvider가 사용하는 특정 범위에 대한 구성 정보를 나타냅니다. |
||
DbSyncTableDescription |
동기화 범위에 포함된 테이블의 스키마를 나타냅니다. |
|
DbSyncColumnDescription |
동기화 범위에 포함된 테이블의 일부인 열의 스키마를 나타냅니다. |
|
동기화와 관련된 SQL Server 또는 SQL Server Compact 데이터베이스에 대한 범위 및 테이블 정보를 나타냅니다. |
||
SqlSyncTableProvisioning |
DbSyncTableDescription 개체가 나타내는 SQL Server 또는 SQL Server Compact 데이터베이스 프로비전을 나타냅니다. |
|
SqlSyncProviderAdapterConfiguration |
SQL Server 또는 SQL Server Compact 데이터베이스의 테이블에 대한 동기화 어댑터 구성 정보를 나타냅니다. |
SyncOperationStatistics
세션 통계는 동기화 조정자가 각 동기화 세션에 대해 제공하는 통계 집합입니다. 이 통계에는 동기화 시간, 처리한 변경 내용 수 및 발생한 충돌이나 예외에 대한 정보가 포함됩니다. 자세한 내용은 SyncOperationStatistics를 참조하십시오.
DbSyncSession
DbSyncSession 개체는 동기화 세션 변수에 대한 액세스를 제공합니다. 세션 변수는 개발자가 DbSyncProvider 및 DbSyncAdapter를 사용하는 서버에서 실행되는 선택, 삽입, 업데이트 및 삭제 명령에 대해 매개 변수로 사용하도록 제공되는 변수입니다. 자세한 내용은 방법: 공동 작업 동기화에 세션 변수 사용을 참조하십시오.
Sync Framework DLL
Sync Framework 데이터베이스 동기화 클래스는 다음 DLL에 포함되어 있습니다.
Microsoft.Synchronization.dll에는 SyncOrchestrator가 포함되어 있습니다.
Microsoft.Synchronization.SqlServer.dll에는 SqlSyncProvider가 포함되어 있습니다.
Microsoft.Synchronization.SqlServerCe.dll에는 SqlCeSyncProvider가 포함되어 있습니다.
Microsoft.Synchronization.Data.dll에는 RelationalSyncProvider, DbSyncProvider 및 DbSyncAdapter가 포함되어 있습니다.
DLL은 .NET Framework 2.0 이상 버전의 System.dll 및 System.Data.dll을 사용합니다.
참고 항목
개념
공동 작업 시나리오
방법: 공동 작업 동기화 구성 및 실행(SQL Server)
다른 ADO.NET 호환 데이터베이스 동기화