WCF에서 RESTful 서비스를 만드는 방법

WCF (Windows Communication Foundation)는 .Net에서 웹 서비스를 빌드하는 데 사용할 수있는 안전하고 안정적이며 확장 가능한 메시징 플랫폼입니다. 서비스 지향 애플리케이션 개발을위한 통합 프로그래밍 모델을 제공합니다.

WCF를 사용하여 .NET에서 RESTful 서비스를 빌드 할 수 있습니다. REST (Representational State Transfer)는 REST 아키텍처 원칙을 준수하는 아키텍처 패러다임으로, REST 아키텍처는 리소스 개념을 기반으로합니다. 리소스를 사용하여 애플리케이션의 상태와 기능을 나타냅니다. 이러한 리소스는 HTTP 프로토콜을 통해 URI를 사용하여 식별됩니다.

WCF 서비스 만들기

이 섹션에서는 WCF에서 RESTful 서비스를 빌드하는 방법을 살펴 봅니다. 먼저 Visual Studio에서 새 WCF 서비스를 만들어 보겠습니다. 이렇게하려면 아래에 설명 된 단계를 따르십시오. 이 문서에 설명 된 응용 프로그램을 빌드하기 위해 Visual Studio 2012 또는 2013도 사용할 수 있지만 Visual Studio 2015를 사용했습니다.

  1. Visual Studio 2015 열기
  2. Visual Studio IDE의 파일 메뉴에서 시작-> 파일-> 새로 만들기-> 프로젝트를 클릭합니다.
  3. 다음으로 표시된 프로젝트 템플릿 목록에서 WCF를 선택합니다.
  4. 오른쪽 창에서 "WCF 서비스 응용 프로그램"을 선택합니다.
  5. WCF 서비스 프로젝트의 이름을 지정하고 확인을 클릭하여 저장합니다.

이렇게하면 지정한 이름으로 새 WCF 서비스 응용 프로그램 프로젝트가 생성됩니다. 프로젝트에는 설명 목적으로 만 기본 서비스가 포함됩니다.

RESTful WCF 서비스 구현

WCF로 작업 할 때 먼저 서비스 계약을 만든 다음 그 안에 서비스 작업 또는 작업 계약을 정의해야합니다. 일반적으로 WCF 서비스는 다음으로 구성됩니다.

  1. 서비스 등급
  2. 서비스 계약
  3. 하나 이상의 운영 계약
  4. 하나 이상의 엔드 포인트
  5. 호스팅 환경

ServiceContract는 서비스 클라이언트가 사용할 수있는 작업을 지정하는 데 사용됩니다. 다음 코드 스 니펫은 서비스 계약의 모양을 보여줍니다. 나중에이를 RESTful로 만들기 위해 수정하겠습니다.

 [ServiceContract]

    public interface ICustomerService

    {

        [OperationContract]

        List GetCustomerList();

    }

DataContract는 서비스 공급자와 서비스 소비자간에 교환해야하는 데이터를 설명하는 데 사용됩니다. Customer라는 다음 DataContract를 고려하십시오.

[DataContract(Namespace = "")]

public class Customer

    {

        [DataMember]

        public Int32 CustomerID { get; set; }

        [DataMember]

        public string FirstName { get; set; }

        [DataMember]

        public string LastName { get; set; }

        [DataMember]

        public String Address { get; set; }

    }

작업 계약은 메서드를 서비스 메서드로 노출하고 트랜잭션 흐름, 서비스 작업 방향 및 관련 될 수있는 오류 계약을 노출하는 데 사용됩니다. 다음 코드 조각은 OperationContract 특성을 사용하여 서비스 작업을 선언하고 WebInvoke 특성을 사용하여 HTTP 작업, Uri, 웹 메시지 형식 등을 지정하는 방법을 보여줍니다.

[OperationContract]

        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,

        BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetCustomers")]

List GetCustomerList();

다음 코드 스 니펫은 서비스 메소드에 WebInvoke 속성을 적용하여 고객 서비스를 RESTful로 만드는 방법을 보여줍니다.

public interface ICustomerService

    {

        [OperationContract]

        [WebInvoke(Method = "GET",

            ResponseFormat = WebMessageFormat.Json,

            BodyStyle = WebMessageBodyStyle.Wrapped,

            UriTemplate = "GetCustomers")]

        List GetCustomerList();

    }

CustomerService 클래스는 ICustomerService 서비스 계약을 확장하고 GetCustomerList라는 서비스 작업의 구현을 제공합니다. CustomerService 클래스는 다음과 같습니다.

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    public class CustomerService : ICustomerService

    {     

        public List GetCustomerList()

        {

            return PopulateCustomerData();

        }

        private List PopulateCustomerData()

        {

            List lstCustomer = new List();

            Customer customer1 = new Customer();

            customer1.CustomerID = 1;

            customer1.FirstName = "John";

            customer1.LastName = "Meaney";

            customer1.Address = "Chicago";

            lstCustomer.Add(customer1);

            Customer customer2 = new Customer();

            customer2.CustomerID = 1;

            customer2.FirstName = "Peter";

            customer2.LastName = "Shaw";

            customer2.Address = "New York";

            lstCustomer.Add(customer2);

            return lstCustomer;

        }

    }

PopulateCustomerData 메서드는 서비스 메서드가 아닙니다. 고객 레코드 목록을 반환하는 개인 메서드이며 GetCustomerList 서비스 메서드에서 호출됩니다.

다음으로해야 할 일은 WCF 서비스를 구성하는 것입니다. 이렇게하려면 바인딩 및 끝점 세부 정보와 서비스 동작을 지정해야합니다. 다음 코드 스 니펫은이 서비스에 대한 서비스 구성의 모양을 보여줍니다.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

그리고 그게 당신이해야 할 전부입니다. 이제 웹 브라우저를 열고 WCF RESTful 서비스를 테스트 할 수 있습니다.