다음을 통해 공유


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

업데이트: 2008년 7월

필요에 따라 연결되는 응용 프로그램이란 경우에 따라서는 원격 데이터에 액세스하지 못할 수도 있는 응용 프로그램입니다. 이러한 응용 프로그램은 항상 원격 데이터에 액세스하는 것이 아니기 때문에 클라이언트에 있는 로컬 데이터베이스의 데이터를 사용하고 주기적으로 원격 데이터베이스와 로컬 데이터베이스의 데이터를 동기화합니다. 로컬 데이터베이스와 원격 데이터베이스의 데이터 동기화는 Microsoft Synchronization Services for ADO.NET(Microsoft.Synchronization.Data 네임스페이스)을 통해 쉽게 처리됩니다. 이 동기화는 데이터 동기화 구성 대화 상자에서 구성합니다.

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

이 연습에서는 필요에 따라 연결되는 응용 프로그램을 개발하는 방법을 단계별로 설명합니다.

이 연습에서는 다음 작업을 수행합니다.

  • 새 Windows Forms 응용 프로그램을 만듭니다.

  • 프로젝트에 새 로컬 데이터베이스 캐시를 추가합니다.

  • 다음 작업을 수행하는 동기화 설정을 구성합니다.

    • 서버 데이터베이스에 데이터 연결을 설정합니다.

    • 새 로컬 데이터베이스를 만들기 위한 동기화를 구성합니다.

    • 응용 프로그램과 동기화하려는 데이터베이스 테이블을 선택합니다.

  • 로컬 데이터베이스의 데이터를 표시할 DataGridView 컨트롤을 폼에 추가합니다.

  • 데이터베이스 간의 동기화를 초기화할 코드를 추가합니다.

  • 동기화된 레코드 수에 대한 정보를 표시할 메시지 상자를 추가합니다.

사전 요구 사항

이 연습을 완료하려면 다음이 필요합니다.

  • Northwind 샘플 데이터베이스의 SQL Server 버전에 액세스할 수 있어야 합니다. 자세한 내용은 방법: 샘플 데이터베이스 설치를 참조하십시오.

  • Visual Studio를 실행하는 컴퓨터에 SQL Server Compact 3.5가 설치되어 있어야 합니다.

Windows Forms 응용 프로그램 만들기

나중에 데이터를 Windows Form에 표시해서 동기화가 제대로 수행되었는지 확인할 것이므로 이 연습의 첫 번째 단계는 새 Windows Forms 응용 프로그램을 만드는 것입니다.

참고:

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

새 Windows Forms 응용 프로그램을 만들려면

  1. 파일 메뉴에서 새 프로젝트를 만듭니다.

  2. 프로젝트 이름을 OCSWalkthrough로 지정합니다.

    참고:

    데이터 동기화 구성 대화 상자는 Visual Basic 및 C# 프로젝트에서 지원되므로 이 언어 중 하나로 새 프로젝트를 만듭니다.

  3. Windows Forms 응용 프로그램 템플릿을 클릭한 다음 확인을 클릭합니다. 자세한 내용은 Windows 기반 응용 프로그램 만들기를 참조하십시오.

    OCSWalkthrough 프로젝트가 만들어져 솔루션 탐색기에 추가됩니다.

프로젝트에 동기화 파일 추가

필요에 따라 연결되는 응용 프로그램을 만드는 다음 단계는 클라이언트에 로컬 데이터베이스를 추가하는(또는 만드는) 것입니다. 원격 데이터베이스와 동기화할 수 있는 로컬 데이터베이스를 추가하려면 프로젝트에 로컬 데이터베이스 캐시 템플릿을 추가합니다. 새 항목 추가 대화 상자를 사용하여 프로젝트에 로컬 데이터베이스 캐시 파일(.sync 파일)을 추가합니다.

프로젝트에 동기화 설정 파일을 추가하려면

  1. 프로젝트 메뉴에서 새 항목 추가를 클릭합니다.

  2. 로컬 데이터베이스 캐시 템플릿을 클릭하고 이름 상자에 NorthwindCache.sync를 입력합니다.

  3. 추가를 클릭합니다.

    NorthwindCache.sync 파일이 솔루션 탐색기에 추가되고 데이터 동기화 구성 대화 상자가 나타납니다.

데이터 동기화 구성

데이터 동기화 구성은 다음 작업으로 이루어집니다.

  • 원격 데이터베이스에 대한 데이터 연결을 제공합니다. 이는 서버 연결입니다.

  • 로컬 데이터베이스에 대한 데이터 연결을 제공합니다. 또는 이 연습에서처럼 클라이언트에 새 데이터베이스를 만듭니다. 이는 클라이언트 연결입니다.

  • 응용 프로그램에서 사용할 원격 연결에서 테이블을 선택합니다. 이러한 테이블을 캐시된 테이블이라고 합니다.

  • 로컬 데이터베이스에 추가하는 각 테이블마다 변경 내용을 조정하는 데 필요한 열 및 삭제된 항목을 저장할 테이블을 선택합니다. 각 테이블에는 삭제된 레코드를 추적하는 테이블과 새 레코드와 수정된 레코드를 추적하는 특정 열이 필요합니다.

데이터 연결 설정

이제 원격 데이터베이스(응용 프로그램 외부 데이터베이스)에 연결할 때 필요한 서버 연결을 설정합니다. 클라이언트 연결을 통해 기존 SQL Server Compact 3.5 데이터베이스에 연결할 수도 있고 데이터 동기화 구성 대화 상자를 사용하여 새 로컬 데이터베이스를 만들 수도 있습니다. 이 연습에서는 서버 데이터베이스에 대한 연결을 만들고 기본 클라이언트 연결을 그대로 두어 프로젝트에 새 클라이언트 데이터베이스(Northwind.sdf)가 자동으로 만들어지게 합니다.

서버 및 클라이언트 데이터베이스에 대한 데이터 연결을 설정하려면

  1. Northwind 데이터베이스의 SQL Server 버전에 대한 서버 연결을 선택하거나 새로 만들기를 클릭하여 Northwind 데이터베이스의 SQL Server 버전에 대한 새 연결을 만듭니다. 자세한 내용은 방법: Northwind 데이터베이스에 데이터 연결 만들기를 참조하십시오.

  2. 클라이언트 연결의 기본값 Northwind.sdf(새 항목)를 그대로 둡니다. 그러면 새 SQL Server Compact 3.5 데이터베이스가 만들어져서 프로젝트에 추가됩니다.

    서버 연결을 선택하면 데이터 동기화 구성 대화 상자에서 서버의 원격 데이터베이스에 사용 가능한 테이블 목록을 쿼리하고 목록이 검색되면 추가 단추가 활성화됩니다.

    참고:

    확인 단추는 사용할 수 없습니다. 동기화할 테이블을 선택하지 않았기 때문입니다. 다음 단원에서는 테이블을 추가하여 확인 단추를 활성화하는 방법을 설명합니다.

오프라인으로 사용할 테이블 선택 및 구성

이제 클라이언트 데이터베이스에 추가해서 응용 프로그램과 동기화할 테이블을 선택합니다. 클라이언트 데이터베이스에 추가하는 각 테이블마다 변경 내용 조정에 필요한 추적 열과 삭제된 항목을 저장할 테이블을 선택합니다. 기본 설정을 그대로 두면 데이터 동기화 구성 대화 상자가 추적 열과 삭제된 항목 테이블을 만듭니다. 이 연습에서는 기본 설정을 사용합니다.

로컬 캐싱이 가능한 테이블을 구성하려면

  1. 추가를 클릭하여 오프라인으로 사용할 테이블 구성 대화 상자를 엽니다.

  2. Customers 테이블을 선택합니다.

  3. 모든 기본값을 그대로 둡니다. 확인을 클릭합니다.

    Customers 테이블이 캐시된 테이블 목록에 추가됩니다.

  4. 데이터 동기화 구성 대화 상자에서 확인을 클릭합니다.

    추적 열 및 삭제된 항목 테이블이 서버에 만들어집니다. Northwind.sdf 데이터베이스가 프로젝트에 만들어지고 처음으로 동기화됩니다.

  5. 데이터 소스 구성 마법사에서 Customers 테이블을 선택한 다음 마침을 클릭합니다.

    NorthwindDataSet.xsd가 프로젝트에 추가되고 모든 대화 상자가 닫힙니다.

응용 프로그램에서 동기화를 사용할 수 있도록 설정

이전 단계를 완료하면 데이터 동기화가 구성됩니다. 이때 응용 프로그램에는 다음이 포함됩니다.

  • 로컬 Northwind 데이터베이스(Northwind.sdf)

  • 데이터 동기화 설정 정보(NorthwindCache.sync)

  • 데이터 소스 구성 마법사를 통해 생성된 형식화된 데이터 집합 NorthwindDataSet.xsd. 여기에는 로컬 데이터베이스를 사용하여 채울 Customers 테이블이 포함됩니다.

  • 추적 열, 삭제된 항목 테이블, 서버의 변경 내용을 추적하는 필수 트리거를 만드는 데 사용되는 스크립트가 포함된 SQLScripts 폴더

  • 추적 열, 삭제된 항목 테이블 및 서버에 추가된 필수 트리거를 제거하는 스크립트가 포함된 SQLUndoScripts 폴더

    참고:

    SQL 스크립트는 서버에서 수정 작업이 필요한 경우에만 만들어집니다. 삭제된 항목 테이블과 추적 열이 서버에 이미 있으면 스크립트가 만들어지지 않습니다.

  • 다음 Microsoft Synchronization Services for ADO.NET DLL에 대한 참조

    • Microsoft.Synchronization.Data

    • Microsoft.Synchronization.Data.Server

    • Microsoft.Synchronization.Data.SqlServerCe

데이터 동기화를 구성한 후에도 응용 프로그램에 동기화 기능을 추가해야 합니다. 더 구체적으로는 동기화 프로세스를 시작하는 코드를 추가해야 합니다.

먼저 Customers 노드를 데이터 소스 창에서 폼으로 끌어서 DataGridView 컨트롤을 추가합니다. DataGridView는 로컬 데이터베이스 캐시(프로젝트에 있는 Northwind.sdf 데이터베이스)의 Customers 테이블을 표시하므로 이를 통해 로컬 데이터베이스와 원격 데이터베이스 간에 데이터가 동기화되는지 확인할 수 있습니다. 동기화 프로세스를 시작하는 단추도 추가합니다.

데이터 바인딩된 폼을 만들어 데이터 동기화를 초기화하고 확인하려면

  1. Customers 노드를 데이터 소스 창에서 Form1로 끌어서 놓습니다.

  2. 단추 컨트롤을 도구 상자에서 Form1로 끌어서 놓습니다. 이름 속성을 SynchronizeButton으로 설정하고 텍스트 속성을 Synchronize Now로 설정합니다.

  3. Synchronize Now 단추를 두 번 클릭하여 단추 클릭 이벤트 처리기를 만들고 폼을 코드 편집기에서 엽니다.

  4. 동기화 프로세스를 시작할 코드를 추가한 다음 데이터 집합의 Customers 테이블을 다시 채웁니다. 이벤트 처리기의 코드는 다음과 같아야 합니다.

    참고:

    syncStats 변수를 선언하는 코드 줄은 다음 단원에서 설명합니다.

    ' Call the Synchronize method to synchronize
    ' data between local and remote databases.
    Dim syncAgent As NorthwindCacheSyncAgent = New NorthwindCacheSyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = _
        syncAgent.Synchronize()
    
    ' After synchronizing the data, refill the
    ' table in the dataset.
    Me.CustomersTableAdapter.Fill(NorthwindDataSet.Customers)
    
    // Call the Synchronize method to synchronize
    // data between local and remote databases.
    NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats;
    syncStats = syncAgent.Synchronize();
    // After synchronizing the data, refill the
    // table in the dataset.
    this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
    

응용 프로그램 테스트

응용 프로그램을 테스트하려면

  1. F5 키를 누릅니다.

  2. 응용 프로그램이 실행 중일 때 서버 탐색기/데이터베이스 탐색기(또는 다른 데이터베이스 관리 도구)를 사용하여 원격 서버 데이터베이스에 연결하여 일부 레코드를 수정합니다.

    1. 서버 탐색기/데이터베이스 탐색기에서 Northwind.sdf에 대한 연결이 아니라 원격 데이터베이스 서버의 Customers 테이블을 찾습니다.

    2. Customers 테이블을 마우스 오른쪽 단추로 클릭하고 테이블 데이터 표시를 클릭합니다.

    3. 한 개 이상의 레코드를 수정하고 변경 내용을 커밋합니다. 그런 다음 수정된 행 밖으로 이동합니다.

  3. 폼으로 돌아가서 Synchronize Now를 클릭합니다.

  4. 원격 데이터베이스에 대한 수정 내용이 로컬 데이터베이스로 동기화되고 표에 표시되는지 확인합니다.

  5. 폼을 닫아 디버깅을 중지합니다.

동기화를 통한 정보 검색

Synchronize 메서드를 호출하면 단순히 동기화 프로세스만 초기화되는 것이 아닙니다. Synchronize 메서드는 동기화에 대한 정보를 액세스할 수 있는 SyncStatistics 개체도 반환합니다.

동기화 통계에 액세스하려면

  • Form1을 코드 편집기에서 열고 SynchronizeButton_Click 이벤트 처리기의 아래쪽, 이전 단계에서 추가된 코드 뒤에 다음 코드를 추가합니다.

        MessageBox.Show("Changes downloaded: " & _
    syncStats.TotalChangesDownloaded.ToString)
    
    MessageBox.Show("Changes downloaded: " +
        syncStats.TotalChangesDownloaded.ToString());
    

응용 프로그램 테스트

응용 프로그램을 테스트하려면

  1. F5 키를 누릅니다.

  2. 응용 프로그램이 실행 중일 때 서버 탐색기/데이터베이스 탐색기(또는 다른 데이터베이스 관리 도구)를 사용하여 원격 서버 데이터베이스에 연결하고 일부 레코드를 수정합니다.

    1. 서버 탐색기/데이터베이스 탐색기에서 Northwind.sdf에 대한 연결이 아니라 원격 데이터베이스 서버의 Customers 테이블을 찾습니다.

    2. Customers 테이블을 마우스 오른쪽 단추로 클릭하고 테이블 데이터 표시를 클릭합니다.

    3. 한 개 이상의 레코드를 수정하고 변경 내용을 커밋합니다. 그런 다음 수정된 행 밖으로 이동합니다.

  3. 폼으로 돌아가서 Synchronize Now를 클릭합니다.

  4. 동기화된 레코드에 대한 정보가 포함된 메시지 상자가 나타납니다.

  5. 원격 데이터베이스에 대한 수정 내용이 로컬 데이터베이스로 동기화되고 표에 표시되는지 확인합니다.

다음 단계

응용 프로그램 요구 사항에 따라서는 응용 프로그램에 로컬 데이터베이스 캐시를 구성한 후 몇 가지 단계를 더 수행해야 할 수도 있습니다. 예를 들어 이 응용 프로그램을 다음과 같이 보완할 수 있습니다.

참고 항목

작업

연습: 로컬 데이터베이스와 함께 필요에 따라 연결되는 응용 프로그램 배포

개념

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

SQL Server Compact 3.5 및 Visual Studio

변경 기록

날짜

변경 내용

원인

2008년 7월

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

SP1 기능 변경