다음을 통해 공유


연습: Visual Studio에서 WCF 데이터 서비스 생성 및 액세스

이 연습에서는 ASP.NET 웹 응용 프로그램에서 호스팅되는 WCF Data Service를 만든 다음 Windows Forms 응용 프로그램에서 이 서비스에 액세스하는 방법을 보여 줍니다.

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

  • WCF Data Service를 호스팅하는 웹 응용 프로그램을 만듭니다.

  • Northwind 데이터베이스의 Customers 테이블을 나타내는 엔터티 데이터 모델을 만듭니다.

  • WCF Data Service를 만듭니다.

  • 클라이언트 응용 프로그램을 만들고 WCF Data Service에 대한 참조를 추가합니다.

  • 서비스에 대한 데이터 바인딩을 활성화하고 사용자 인터페이스를 생성합니다.

  • 필요한 경우 응용 프로그램에 필터링 기능을 추가합니다.

사전 요구 사항

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

서비스 만들기

WCF Data Service를 만들려면 웹 프로젝트를 추가하고 엔터티 데이터 모델을 만든 다음 이 모델에서 서비스를 만듭니다.

첫 번째 단계에서는 서비스를 호스팅할 웹 프로젝트를 추가합니다.

[!참고]

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

웹 프로젝트를 만들려면

  1. Visual Studio 파일 메뉴에서 새 프로젝트를 클릭합니다.

  2. 새 프로젝트 대화 상자에서 확장은 Visual Basic 또는 C# 노드를 클릭 하 고 , 선택한 다음 ASP.NET Web Forms 응용 프로그램.

  3. 이름 필드에 NorthwindWeb을 입력하고 확인을 클릭하여 프로젝트를 만듭니다.

이 단계에서는 Northwind 데이터베이스의 Customers 테이블을 나타내는 엔터티 데이터 모델을 만듭니다.

엔터티 데이터 모델을 만들려면

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

  2. 새 항목 추가 선택 대화 상자에서 데이터을 선택한 다음 ADO.NET 엔터티 데이터 모델.

  3. 이름 필드에 NorthwindModel을 입력한 다음 추가를 클릭합니다.

    엔터티 데이터 모델 마법사가 나타납니다.

  4. 엔터티 데이터 모델 마법사에서 데이터베이스에서 생성을 선택한 후 다음을 클릭합니다.

  5. 데이터 연결 선택 페이지에서 다음 단계 중 하나를 수행합니다.

    • Northwind 샘플 데이터베이스에 대한 데이터 연결이 드롭다운 목록에 표시되면 해당 연결을 클릭합니다.

      또는

    • 새 연결을 클릭하여 새 데이터 연결을 구성합니다.자세한 내용은 How to: Create Connections to SQL Server Databases을 참조하십시오.

  6. 데이터베이스에 암호가 필요하면 중요한 데이터를 포함하는 옵션을 선택하고 다음을 클릭합니다.

    [!참고]

    대화 상자가 나타나는 경우 를 클릭하여 프로젝트에 파일을 저장합니다.

  7. 데이터베이스 개체 선택 페이지에서 테이블 노드를 확장하고 Customers 옆의 확인란을 선택한 다음 마침을 클릭합니다.

    엔터티 모델 다이어그램이 표시되고 NorthwindModel.edmx 파일이 프로젝트에 추가됩니다.

이 단계에서는 데이터 서비스를 만들고 테스트합니다.

데이터 서비스를 만들려면

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

  2. 새 항목 추가 대화 상자에서 선택한 다음 WCF 데이터 서비스.

  3. 이름 필드에 NorthwindCustomers를 입력한 다음 추가를 클릭합니다.

    코드 편집기에 NorthwindCustomers.svc 파일이 표시됩니다.

  4. 코드 편집기에서 첫 번째 TODO: 주석을 찾아 다음 코드로 바꿉니다.

    Inherits DataService(Of northwindEntities)
    
    public class NorthwindCustomers : DataService<northwindEntities>
    

    [!참고]

    사용하는 Northwind 데이터베이스 버전에 따라 "NORTHWIND"를 "NORTHWND"로 변경해야 하는 경우도 있는데 이때IntelliSense를 사용하여 올바른 이름을 파악할 수도 있습니다.

  5. InitializeService 이벤트 처리기의 주석을 다음 코드로 바꿉니다.

    config.SetEntitySetAccessRule("*", EntitySetRights.All)
    
    config.SetEntitySetAccessRule("*", EntitySetRights.All);
    
  6. Ctrl+F5를 눌러 서비스를 실행합니다.브라우저 창이 열리고 서비스에 대한 XML 스키마가 표시됩니다.

  7. 주소 표시줄에서 NorthwindCustomers.svc에 대한 URL의 맨 뒤에 Customers를 입력하고 Enter 키를 누릅니다.

    Customers 테이블에 있는 데이터의 XML 표현이 표시됩니다.

    [!참고]

    Internet Explorer가 이 데이터를 RSS 피드로 잘못 해석하는 경우도 있습니다.RSS 피드를 표시하는 옵션은 반드시 비활성화되어 있어야 합니다.자세한 내용은 서비스 참조 문제 해결을 참조하십시오.

  8. 브라우저 창을 닫습니다.

다음 단계에서는 서비스를 소비할 Windows Forms 클라이언트 응용 프로그램을 만듭니다.

클라이언트 응용 프로그램 만들기

클라이언트 응용 프로그램을 만들려면 두 번째 프로젝트를 추가하고, 프로젝트에 서비스 참조를 추가하고, 데이터 소스를 구성하고, 서비스의 데이터를 표시할 사용자 인터페이스를 만듭니다.

첫 번째 단계에서는 Windows Forms 프로젝트를 솔루션에 추가한 다음 이를 시작 프로젝트로 설정합니다.

클라이언트 응용 프로그램을 만들려면

  1. Visual Studio 파일 메뉴에서 추가를 클릭한 다음 새 프로젝트를 클릭합니다.

  2. 새 프로젝트 대화 상자에서 Visual Basic 또는 Visual C# 노드를 확장하고 Windows를 클릭한 다음 Windows Forms 응용 프로그램을 선택합니다.

  3. 이름 필드에 NorthwindClient를 입력한 다음 확인을 클릭하여 프로젝트를 엽니다.

  4. 솔루션 탐색기에서 NorthwindClient 프로젝트를 선택합니다.

  5. 프로젝트 메뉴에서 시작 프로젝트로 설정을 클릭합니다.

이 단계에서는 웹 프로젝트에서 WCF Data Service에 대한 서비스 참조를 추가합니다.

서비스 참조를 추가하려면

  1. 프로젝트 메뉴에서 서비스 참조 추가를 클릭합니다.

  2. 서비스 참조 추가 대화 상자에서 검색을 클릭합니다.

    NorthwindCustomers 서비스의 URL이 주소 필드에 표시됩니다.

  3. 확인을 클릭하여 서비스 참조를 추가합니다.

이 단계에서는 서비스에 대한 데이터 바인딩을 사용하도록 데이터 소스를 구성합니다.

서비스에 대한 데이터 바인딩을 사용하려면

  1. 데이터 메뉴에서 데이터 소스 표시를 클릭합니다.

  2. 데이터 소스 창에서 새 데이터 소스 추가를 클릭합니다.

  3. 데이터 소스 구성 마법사데이터 소스 형식 선택 페이지에서 개체를 클릭하고 다음을 클릭합니다.

  4. 바인딩할 개체 선택 페이지에서 NorthwindClient 노드를 확장한 다음 NorthwindClient.ServiceReference1 노드를 확장합니다.

  5. Customers를 선택한 다음 마침을 클릭합니다.

이 단계에서는 서비스의 데이터를 표시할 사용자 인터페이스를 만듭니다.

사용자 인터페이스를 만들려면

  1. Customers 노드를 데이터 소스 창에서 폼으로 끌어 옵니다.

    DataGridView 컨트롤, BindingSource 구성 요소 및 BindingNavigator 구성 요소가 폼에 추가됩니다.

  2. 폼을 두 번 클릭하여 코드 편집기를 열고 Form1_Load 이벤트 처리기에 다음 코드를 추가합니다.

           Dim proxy As New ServiceReference1.northwindModel.northwindEntities _
    (New Uri("https://localhost:53161/NorthwindCustomers.svc/"))
           Me.CustomersBindingSource.DataSource = proxy.Customers
    
               ServiceReference1.northwindModel.northwindEntities proxy = new
    ServiceReference1.northwindModel.northwindEntities(new
    Uri("https://localhost:53397/NorthwindCustomers.svc/"));
               this.customersBindingSource.DataSource = proxy.Customers;
    

    [!참고]

    사용하는 Northwind 데이터베이스 버전에 따라 "NORTHWIND"를 "NORTHWND"로 변경해야 하는 경우도 있는데 이때IntelliSense를 사용하여 올바른 이름을 파악할 수도 있습니다.

  3. 솔루션 탐색기에서 NorthwindCustomers.svc 파일을 마우스 오른쪽 단추로 클릭하고 브라우저에서 보기를 클릭합니다.Internet Explorer가 열리고 서비스에 대한 XML 스키마가 표시됩니다.

  4. Internet Explorer 주소 표시줄에서 URL을 복사합니다.

  5. 2단계에서 추가한 코드에서 https://localhost:14735/NorthwindCustomers.svc를 선택하여 방금 복사한 URL로 바꿉니다.

  6. F5 키를 눌러 응용 프로그램을 실행합니다.고객 정보가 표시됩니다.

이제 NorthwindCustomers 서비스의 고객 목록을 표시하는 응용 프로그램이 만들어졌습니다.이 서비스를 통해 추가 데이터를 노출하려면 Northwind 데이터베이스의 다른 테이블을 포함하도록 엔터티 데이터 모델을 수정하면 됩니다.

선택 사항인 다음 단계에서는 서비스에서 반환하는 데이터를 필터링하는 방법에 대해 설명합니다.

필터링 기능 추가

이 단계에서는 고객의 구/군/시/를 기준으로 데이터를 필터링하도록 응용 프로그램을 사용자 지정합니다.

구/군/시 기준 필터링을 추가하려면

  1. 솔루션 탐색기에서 Form1.vb 또는 Form1.cs를 두 번 클릭하여 Windows Forms 디자이너를 표시합니다.

  2. TextBox 컨트롤 및 Button 컨트롤을 도구 상자에서 폼으로 끌어 옵니다.

  3. Button 컨트롤을 두 번 클릭한 다음 Button1_Click 이벤트 처리기에 다음 코드를 추가합니다.

           Dim proxy As New ServiceReference1.northwindModel.northwindEntities _
    (New Uri("https://localhost:53161/NorthwindCustomers.svc"))
           Dim city As String = TextBox1.Text
    
           If city <> "" Then
               Me.CustomersBindingSource.DataSource = From c In _
            proxy.Customers Where c.City = city
           End If
    
            ServiceReference1.northwindModel.northwindEntities proxy = new
     ServiceReference1.northwindModel.northwindEntities(new
     Uri("https://localhost:53397/NorthwindCustomers.svc/"));
        string city = textBox1.Text;
    
    if (city != "")
    {
        this.customersBindingSource.DataSource = from c in
     proxy.Customers where c.City == city select c;   
    
  4. 앞의 코드에서 https://localhost:14735/NorthwindCustomers.svc를 Form1_Load 이벤트 처리기의 URL로 바꿉니다.

  5. F5 키를 눌러 응용 프로그램을 실행합니다.

  6. 텍스트 상자에 London을 입력하고 단추를 클릭합니다.London의 고객만 표시됩니다.

참고 항목

작업

방법: WCF 데이터 서비스 참조 추가, 업데이트 또는 제거