필요에 따라 연결되는 응용 프로그램 개요

업데이트: 2008년 7월

필요에 따라 연결되는 응용 프로그램은 원격 데이터베이스의 데이터를 사용하지만 원격 데이터베이스에 항상 액세스하지는 않는 응용 프로그램입니다. 필요에 따라 연결되는 응용 프로그램은 지속적으로 액세스할 수 있지만 지역 이름 또는 제품 범주 목록처럼 거의 변경되지 않는 데이터를 원격 데이터베이스에서 계속 쿼리하는 것이 비효율적인 경우에도 사용됩니다. 이러한 경우 응용 프로그램은 클라이언트에 있는 로컬 데이터베이스의 데이터를 사용하며 주기적으로 서버의 원격 데이터베이스와 데이터를 동기화할 수 있습니다.

즉, 응용 프로그램에서 데이터베이스에서 지속적으로 검색할 필요가 없는 원격 데이터베이스 데이터를 필요로 하는 경우에는 로컬 데이터베이스 캐시를 사용하여 클라이언트 컴퓨터 또는 응용 프로그램 안에 바로 데이터를 저장할 수 있습니다. 데이터베이스에 있는 몇몇 테이블의 데이터를 사용하는 재고 응용 프로그램의 예를 들어 보겠습니다. 모든 개별 부품의 재고 품목 수는 지속적으로 변경되는 중요한 데이터이기 때문에 응용 프로그램은 가능하면 항상 데이터베이스의 최신 값을 반영해야 합니다. 하지만 이 응용 프로그램에서는 거의 변경되지 않는 데이터인 유효한 선적 회사 목록도 표시합니다. 유효한 선적 회사는 선적 회사 테이블에 저장되며 데이터베이스에서 데이터를 쿼리할 때마다 검색할 필요가 없습니다. 이러한 선적 회사 테이블을 로컬 데이터베이스 캐시에 저장하면 응용 프로그램이 원격 데이터베이스에 대해 수행하는 불필요한 라운드트립의 수를 줄일 수 있습니다. 따라서 필요에 따라 연결되는 응용 프로그램에 로컬 데이터베이스 캐시를 사용하는 것 외에도 자주 변경되지 않거나 정해진 일정에 따라 변경되는 데이터를 로컬 데이터베이스 캐시에 저장하는 방식도 고려해 보십시오.

개별 테이블, 테이블 집합 또는 테이블에서 쿼리된 특정 레코드(예를 들어 특정 판매 담당자의 고객만)를 저장하도록 캐싱을 구성할 수 있습니다.

클라이언트와 서버 데이터베이스 사이의 데이터 동기화는 Microsoft Synchronization Services for ADO.NET(Microsoft.Synchronization.Data 네임스페이스)을 통해 쉽게 처리됩니다. Visual Studio에서 데이터 동기화 구성 대화 상자를 사용하여 동기화를 시각적으로 구성할 수 있습니다.

Visual Studio 2008 SP1부터는 데이터 동기화 구성 대화 상자는 물론, 데이터 소스 구성 마법사를 사용하여 동기화를 구성할 수도 있습니다. 형식화된 데이터 집합을 구성하는 동안 마법사의 데이터베이스 개체 선택 페이지에서 로컬 데이터베이스 캐싱 사용 옵션을 선택합니다. 자세한 내용은 연습: 데이터 소스 구성 마법사를 사용하여 필요에 따라 연결되는 응용 프로그램 만들기를 참조하십시오.

참고:

스마트 장치 프로젝트에서는 데이터 소스 구성 마법사에서 동기화 디자이너를 시작할 수 없습니다. 자세한 내용은 필요에 따라 연결되는 응용 프로그램(장치)을 참조하십시오.

SQL Server 2008의 변경 내용 추적 기능에 대한 지원도 Visual Studio 2008 SP1에 추가되었습니다. 데이터 동기화 구성 대화 상자 또는 데이터 소스 구성 마법사에서 동기화를 구성할 때 SQL Server 2008 변경 내용 추적을 사용하도록 설정할 수 있습니다. 자세한 내용은 방법: SQL Server 변경 내용 추적을 사용하도록 데이터 동기화 구성을 참조하십시오.

동기화 서비스 API(Microsoft.Synchronization.Data)

Microsoft Synchronization Services for ADO.NET은 필요에 따라 연결되는 응용 프로그램에 맞게 설계되었습니다. 이를 통해 2 계층, N 계층 및 서비스 기반 아키텍처를 통해 다양한 소스의 데이터를 동기화할 수 있습니다. 동기화 서비스 API는 데이터베이스와 스키마를 복제하는 대신 데이터 서비스와 로컬 저장소 간에 데이터를 동기화하는 구성 요소 집합을 제공합니다. 중앙 서버에 지속적이거나 안정적으로 연결하지 않는 휴대용 컴퓨터 및 장치와 같은 모바일 클라이언트에서의 응용 프로그램 사용이 증가하고 있습니다. 이러한 경우 응용 프로그램에서는 클라이언트에 있는 데이터의 로컬 복사본으로 작업하는 것이 필요합니다. 또한 네트워크에 연결할 수 있을 때 데이터의 로컬 복사본을 중앙 서버의 데이터와 동기화하는 기능도 중요합니다. ADO.NET 데이터 액세스 API를 본떠 모델링된 Synchronization Services API는 데이터를 간편하게 동기화할 수 있는 방법을 제공합니다. 이 API를 사용하면 지속적인 네트워크 연결에 의존하는 응용 프로그램을 만드는 작업을 논리적으로 확장하여 필요에 따라 연결되는 환경의 응용 프로그램을 만들 수 있습니다.

참고:

스마트 장치 프로젝트에서는 2 계층 아키텍처가 지원되지 않습니다. 자세한 내용은 필요에 따라 연결되는 응용 프로그램(장치)을 참조하십시오.

동기화 서비스 API 및 설명서 설치

Synchronization Services API는 .NET Framework의 일부가 아닙니다. 이는 SQL Server Compact 3.5 설치 과정에서 함께 설치됩니다. 기본적으로 SQL Server Compact 3.5는 Visual Studio를 설치할 때 설치됩니다. Synchronization Services 설명서는 기본적으로 설치되지 않습니다. 이 설명서는 도움말을 온라인으로 사용할 수 있도록 구성한 경우에만 얻을 수 있습니다. 로컬에서 사용하기 위해 Synchronization Services 설명서를 설치하려면 먼저 Microsoft Synchronization Services for ADO.NET Books Online 웹 사이트에서 도움말 컬렉션을 다운로드해야 합니다.

Visual Studio를 사용하여 데이터 동기화를 응용 프로그램에 통합

데이터 동기화를 응용 프로그램에 통합하려면 Visual Studio에서 제공하는 로컬 데이터베이스 캐시 템플릿을 사용합니다. 로컬 데이터베이스 캐시는 새 프로젝트 항목 템플릿으로 사용할 수 있습니다. 프로젝트 메뉴에서 새 항목 추가를 클릭하십시오. 자세한 내용은 방법: 응용 프로그램에서 데이터 동기화 구성을 참조하십시오.

참고:

로컬 데이터베이스 캐시 템플릿은 스마트 장치 프로젝트에 직접 추가할 수 없습니다. 대신 로컬 데이터베이스 캐시를 중간 계층 WCF 또는 웹 서비스 프로젝트에 추가한 다음 생성된 동기화 구성 요소를 스마트 장치 프로젝트로 분할해야 합니다. 자세한 내용은 필요에 따라 연결되는 응용 프로그램(장치)을 참조하십시오.

Visual Studio 2008 SP1부터는 데이터 동기화 구성 대화 상자는 물론, 데이터 소스 구성 마법사를 사용하여 동기화를 구성할 수도 있습니다. 형식화된 데이터 집합을 구성하는 동안 마법사의 데이터베이스 개체 선택 페이지에서 로컬 데이터베이스 캐싱 사용 옵션을 선택합니다. 자세한 내용은 연습: 데이터 소스 구성 마법사를 사용하여 필요에 따라 연결되는 응용 프로그램 만들기를 참조하십시오.

로컬 데이터베이스 캐시를 추가하면 데이터 동기화 구성 대화 상자가 열립니다. 이 대화 상자를 사용하여 필요한 동기화 구성 요소를 설정하기 위한 클라이언트 및 서버 관련 정보를 제공할 수 있습니다. 로컬 데이터베이스 캐시는 클라이언트의 SQL Server Compact 3.5 데이터베이스를 사용하여 데이터를 로컬로 저장합니다. 기존 SQL Server Compact 3.5 데이터베이스를 로컬 데이터베이스 캐시로 사용할 수 있습니다. 아직 로컬 데이터베이스가 없는 경우 데이터 동기화 구성 대화 상자를 사용하여 새 로컬 데이터베이스를 만들 수 있습니다. 새 로컬 SQL Server Compact 3.5 데이터베이스를 만들려면 서버 연결에서 선택한 테이블을 기반으로 새 SQL Server Compact 3.5 데이터베이스를 만들 수 있도록 데이터 동기화 구성 대화 상자에서 클라이언트 연결을 설정합니다.

참고:

데이터 동기화 구성 대화 상자에서는 다운로드 시나리오에 대해서만 Microsoft Synchronization Services for ADO.NET을 구성할 수 있습니다. 따라서 이 대화 상자를 사용하여 데이터 동기화를 구성한 다음 Microsoft.Synchronization.Data.SyncAgent.Synchronize를 호출하면 원격 데이터베이스의 변경 내용만 로컬 데이터베이스에서 업데이트됩니다. 로컬 데이터베이스의 데이터에서 변경한 내용은 원격 데이터베이스에 업로드되지 않습니다. 데이터 동기화 구성 대화 상자를 사용하여 데이터 동기화를 구성한 뒤에는 프로그래밍 방식으로 동기화 도중 업로드를 수행할 수 있도록(양방향 동기화) 지정할 수 있습니다. 자세한 내용은 방법: 양방향 동기화를 위해 로컬 및 원격 데이터베이스 구성을 참조하십시오.

동기화를 사용할 수 있도록 원격 데이터베이스 구성

데이터 동기화가 제대로 작동하려면 동기화할 원격 데이터베이스의 각 테이블에 몇 가지 항목을 추가해야 합니다. 데이터 동기화 구성 대화 상자는 원격 데이터베이스에 대해 실행되어 필요한 개체(아래 표에 나열된 개체)를 만드는 SQL 스크립트를 생성합니다. 동기화 디자이너에서 생성된 모든 SQL 스크립트는 프로젝트의 SQLScripts 폴더에 저장됩니다.

참고:

데이터 동기화 구성 대화 상자를 통해 생성한 SQL 스크립트는 기본적으로 자동 실행됩니다. 오프라인으로 사용할 테이블 구성 대화 상자에서 스크랩트 생성 옵션을 설정하여 스크립트의 생성 및 실행 여부를 선택할 수 있습니다.

데이터 동기화 구성 대화 상자의 기본 동작은 대화 상자를 닫을 때 자동으로 스크립트를 실행하고 원격 데이터베이스를 업데이트하는 것입니다. 스크립트를 자동으로 실행하지 않으려면 이 대화 상자를 닫으면 스크립트 실행 확인란의 선택을 취소하십시오. 또한 원격 데이터베이스에 필요한 추적 열, 트리거 및 삭제된 항목 테이블이 이미 있는 경우에는 스크립트가 생성되지 않습니다. 즉, 원격 데이터베이스를 변경할 필요가 없으면 스크립트가 생성되지 않습니다.

다음 표에서는 원격 데이터베이스에 필요한 항목을 나열하고 각 항목에 대해 설명합니다.

원격 데이터베이스의 동기화되는 테이블에 추가되는 항목

설명

LastEditDate 열

이 열은 동기화되는 각 테이블의 DateTime 또는 TimeStamp입니다. 이 열을 클라이언트의 LastEditDate 열과 비교하여 마지막 동기화 호출 이후 서버에서 수정된 레코드를 식별합니다.

CreationDate 열

이 열은 동기화되는 각 테이블의 DateTime 또는 TimeStamp입니다. 이 열을 클라이언트의 CreationDate 열과 비교하여 마지막 동기화 호출 이후 서버에 추가된 레코드를 식별합니다.

삭제된 항목 테이블(TableName_Deleted)

데이터베이스 서버의 테이블에서 삭제된 항목은 이 테이블로 옮겨지므로 마지막 동기화 호출 이후 서버에서 삭제된 레코드를 식별할 수 있습니다. 동기화되는 각 테이블에 대해 삭제된 항목 테이블이 있어야 원격 테이블에서 삭제된 레코드를 추적할 수 있습니다.

DeletionTrigger(TableName_DeletionTrigger)

이 트리거는 서버 데이터베이스 테이블에서 레코드가 삭제될 때마다 실행됩니다. 삭제된 레코드를 삭제된 항목 테이블로 옮기는 것은 서버 데이터베이스에 없는 클라이언트 데이터베이스의 레코드를 새 레코드로 취급하고 서버에 추가할 수 있기 때문입니다. 동기화 서비스는 삭제된 항목 테이블을 검사하여 서버 데이터베이스에 삭제된 레코드를 다시 추가하는 것이 아니라 클라이언트 데이터베이스에서 해당 레코드를 삭제해야 함을 확인합니다.

InsertTrigger(TableName_InsertTrigger)

이 트리거는 새 레코드가 추가될 때 CreationDate 열에 현재 날짜와 시간을 입력합니다.

UpdateTrigger(TableName_UpdateTrigger)

이 트리거는 기존 레코드가 수정될 때 LastEditDate 열에 현재 날짜와 시간을 입력합니다.

응용 프로그램에서 동기화 프로세스 시작

데이터 동기화 구성 대화 상자에 필요한 정보를 제공한 뒤에는 코드를 응용 프로그램에 추가하여 동기화를 시작합니다. 데이터를 동기화하면 데이터 집합의 테이블이나 응용 프로그램의 다른 개체가 아니라 로컬 데이터베이스가 업데이트된다는 점을 반드시 기억해 주십시오. 따라서 로컬 데이터베이스에서 업데이트된 데이터로 응용 프로그램 데이터 소스를 다시 로드해야 합니다. 예를 들어 TableAdapter.Fill 메서드를 호출하여 로컬 데이터베이스에서 업데이트된 데이터가 있는 데이터 집합의 데이터 테이블을 로드합니다.

동기화 프로세스를 시작할 응용 프로그램 위치에 다음 코드를 추가합니다.

' Call SyncAgent.Synchronize() to initiate the synchronization process.
' Synchronization only updates the local database, not your project's data source.
Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()

' Add code here to refill your application's data source
' with the updated data from the local database.
// Call SyncAgent.Synchronize() to initiate the synchronization process.
// Synchronization only updates the local database, not your project's data source.
LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
Microsoft.Synchronization.Data.SyncStatistics syncStats =
syncAgent.Synchronize();

// Add code to refill your application's data source
// with the updated data from the local database.

참고 항목

작업

방법: 응용 프로그램에서 데이터 동기화 구성

연습: 필요에 따라 연결되는 응용 프로그램 만들기

방법: 양방향 동기화를 위해 로컬 및 원격 데이터베이스 구성

연습: 필요에 따라 연결되는 스마트 장치 응용 프로그램 만들기

개념

SQL Server Compact 3.5 및 Visual Studio

필요에 따라 연결되는 응용 프로그램(장치)

기타 리소스

데이터 액세스(Visual Studio)

변경 기록

날짜

변경 내용

원인

2008년 7월

데이터 소스 구성 마법사에서 데이터 동기화를 통합하는 작업에 대한 단락을 추가했습니다.

SP1 기능 변경

2008년 7월

데이터 동기화를 구성할 때 SQL Server 변경 내용 추적을 사용하도록 설정하는 작업에 대한 단락을 추가했습니다.

SP1 기능 변경

2008년 7월

스마트 장치 프로젝트에서의 동기화에 대한 참고 사항을 추가했습니다.

SP1 기능 변경