OData v4 클라이언트 앱 만들기(C#)

작성자: Mike Wasson

이전 자습서에서는 CRUD 작업을 지원하는 기본 OData 서비스를 만들었습니다. 이제 서비스에 대한 클라이언트를 만들어 보겠습니다.

Visual Studio의 새 instance 시작하고 새 콘솔 애플리케이션 프로젝트를 만듭니다. 새 프로젝트 대화 상자에서 설치된>템플릿>Visual C#>Windows Desktop을 선택하고 콘솔 애플리케이션 템플릿을 선택합니다. 프로젝트의 이름을 "ProductsApp"으로 지정합니다.

메뉴 옵션의 경로를 강조 표시하여 새 콘솔 애플리케이션 프로젝트를 만드는 새 프로젝트 대화 상자의 스크린샷

참고

OData 서비스를 포함하는 동일한 Visual Studio 솔루션에 콘솔 앱을 추가할 수도 있습니다.

OData 클라이언트 코드 생성기 설치

도구 메뉴에서 확장 및 업데이트를 선택합니다. 온라인>Visual Studio 갤러리를 선택합니다. 검색 상자에서 "OData 클라이언트 코드 생성기"를 검색합니다. 다운로드를 클릭하여 VSIX를 설치합니다. Visual Studio를 다시 시작하라는 메시지가 표시될 수 있습니다.

O 데이터에 대한 V S I X 클라이언트 코드 생성기를 다운로드하고 설치하기 위한 메뉴를 보여 주는 확장 및 업데이트 대화 상자의 스크린샷

OData 서비스를 로컬로 실행

Visual Studio에서 ProductService 프로젝트를 실행합니다. 기본적으로 Visual Studio는 브라우저를 애플리케이션 루트로 시작합니다. URI를 확인합니다. 다음 단계에서 이 항목이 필요합니다. 애플리케이션을 실행 상태로 둡니다.

Visual Studio에서 실행되는 Product Service 프로젝트의 코드를 보여 주는 웹 브라우저의 로컬 호스트 스크린샷

참고

두 프로젝트를 동일한 솔루션에 배치하는 경우 디버깅하지 않고 ProductService 프로젝트를 실행해야 합니다. 다음 단계에서는 콘솔 애플리케이션 프로젝트를 수정하는 동안 서비스를 계속 실행해야 합니다.

서비스 프록시 생성

서비스 프록시는 OData 서비스에 액세스하기 위한 메서드를 정의하는 .NET 클래스입니다. 프록시는 메서드 호출을 HTTP 요청으로 변환합니다. T4 템플릿을 실행하여 프록시 클래스를 만듭니다.

프로젝트를 마우스 오른쪽 단추로 클릭합니다. 추가>새 항목을 선택합니다.

옵션을 노란색으로 강조 표시하여 프로젝트에 새 항목을 추가하기 위한 파일 경로를 보여 주는 솔루션 탐색기 대화 상자의 스크린샷

새 항목 추가 대화 상자에서 Visual C# 항목>코드>OData 클라이언트를 선택합니다. 템플릿 이름을 "ProductClient.tt"로 지정합니다. 추가를 클릭하고 보안 경고를 클릭합니다.

O Data 클라이언트 제품 템플릿을 보여 주는 새 항목 제품 앱 설정 창의 스크린샷 및 새 이름을 추가하기 위해 아래 이름 필드를 순환합니다.

이 시점에서 무시할 수 있는 오류가 발생합니다. Visual Studio는 템플릿을 자동으로 실행하지만 템플릿에는 먼저 일부 구성 설정이 필요합니다.

오류에 대한 자세한 메시지와 함께 오류 탭 1개와 경고 탭 하나를 보여 주는 오류 메시지 창의 스크린샷

파일 ProductClient.odata.config 엽니다. 요소에 Parameter ProductService 프로젝트(이전 단계)의 URI를 붙여넣습니다. 예:

<Parameter Name="MetadataDocumentUri" Value="http://localhost:61635/" />

매개 변수 요소에 붙여넣은 후의 U R I 예제를 보여 주는 제품 클라이언트 O Data 점 구성 파일의 스크린샷

템플릿을 다시 실행합니다. 솔루션 탐색기 ProductClient.tt 파일을 마우스 오른쪽 단추로 클릭하고 사용자 지정 도구 실행을 선택합니다.

템플릿은 프록시를 정의하는 ProductClient.cs라는 코드 파일을 만듭니다. 앱을 개발할 때 OData 엔드포인트를 변경하는 경우 템플릿을 다시 실행하여 프록시를 업데이트합니다.

프록시를 정의하는 생성된 제품 클라이언트 점 c 파일을 강조 표시하는 솔루션 탐색기 창 메뉴의 스크린샷

서비스 프록시를 사용하여 OData 서비스 호출

Program.cs 파일을 열고 상용구 코드를 다음으로 바꿉니다.

using System;

namespace ProductsApp
{
    class Program
    {
        // Get an entire entity set.
        static void ListAllProducts(Default.Container container)
        {
            foreach (var p in container.Products)
            {
                Console.WriteLine("{0} {1} {2}", p.Name, p.Price, p.Category);
            }
        }

        static void AddProduct(Default.Container container, ProductService.Models.Product product)
        {
            container.AddToProducts(product);
            var serviceResponse = container.SaveChanges();
            foreach (var operationResponse in serviceResponse)
            {
                Console.WriteLine("Response: {0}", operationResponse.StatusCode);
            }
        }

        static void Main(string[] args)
        {
            // TODO: Replace with your local URI.
            string serviceUri = "http://localhost:port/";
            var container = new Default.Container(new Uri(serviceUri));

            var product = new ProductService.Models.Product()
            {
                Name = "Yo-yo",
                Category = "Toys",
                Price = 4.95M
            };

            AddProduct(container, product);
            ListAllProducts(container);
        }
    }
}

serviceUri 값을 이전의 서비스 URI로 바꿉니다.

// TODO: Replace with your local URI.
string serviceUri = "http://localhost:port/";

앱을 실행하면 다음이 출력되어야 합니다.

Response: 201
Yo-yo 4.95 Toys