본문 바로가기

IT 살이/04. 기술 - 프로그래밍

[연재 02] Hello world WCF 버전 1

, 바로 샘플 얘기로 들어가자. WCF(Windows Communication Foundation)가 뭔지, 장점이 뭔지 하는 얘기는 MSDN 등 기타 사이트에 “WCF”를 키워드로 해서 검색을 해 보면 수두룩하게 쏟아져 나온다. 간단히 얘기하자면, .NET3.0에서의 새로운 Communication 프로그래밍 모델로서, 웹 서비스나 .NET 리모팅을 대신할 수 있는 기술이다.

어떤 통신 프로그래밍에서든지 Communication 기능을 작성하기 위해서 하는 공통된 절차가 있다. 초 간단하게 절차를 얘기하자면 다음과 같을 것이다. “서버 프로그램을 작성하고, 서비스를 제공할 수 있는 환경을 구성하고 그런 다음 그것을 인식할 수 있는 클라이언트 프로그램을 작성한다는 것이다.

“Hello world” WCF 버전을 만들어 봄으로써, 그 첫 경험을 시작해볼려고 한다. 먼저 WCF 서비스를 작성해서 활용하는 절차를 요약한다.(물론 Visual Studio.NET을 사용하면 훨씬 더 간단해진다. )

l        WCF 서비스 컨트랙트(Service Contract)[각주:1]용어정의 참조 : 서비스 컨트랙트'>정의하기  
 
-         WCF contract는 서비스에서 필요로 하는 타입과 메시지 패턴[각주:2]서비스 메소드를 호출하는 방식으로서, request-reply 방식 , one-way 방식, duplex callback 등이 있다. 이것에 대해서는 다음에 포스트를 올릴 기회가 있을 것이다. '>을 정의한다. 서비스 컨트랙트를 정의한다는 WCF 서비스를 설계하는 첫 단계가 된다.

l        WCF 서비스 컨트랙트 구현하기

-         서비스 컨트랙트가 정의되었으니, 다음은 그것을 구현하는 단계이다.

l        WCF 서비스 구동하기

-         서비스를 제공할 수 있게 되려면, 서비스를 생성하고 그 라이프 사이클을 제어할 수 있는 런타임 프로그램의 호스팅을 받고 환경 설정이 필요하다. 여기서는 컨솔 프로그램을 이용해서 서비스를 호스팅[각주:3]WCF 서비스를 호스팅하는 방법은 다양해졌다. IIS를 이용할 수도 있고, 윈도우 서비스를 프로그램을 제작해서 사용할 수도 있다. 이외에 새로운 방법으로 Self-Hosting 방법과 WAS(Windows Process Activation Service) 방법이 있다. 우리가 만들 예제에서는 Self-Hosting 방법을 이용해서 서비스를 호스팅하게 된다. 이런 호스팅 방법에 대해서도 다음에 정리할 수 있는 기회가 있을 것이다.'>하고 엔드 포인트(endpoint)[각주:4]용어정의 참조: endpint '>를 설정하는 방법을 알아볼 것이다.

l        WCF 클라이언트 프락시 클래스 및 config 파일 생성

-         자기 호스팅(self-hosted) WCF 서비스에서 WCF 클라이언트 프록시 클래스를 만들기 위해서 사용할 수 있는 메타데이터를 얻게 된다.

l        클라이언트용 config 설정 내용 리뷰

-         Config에 설정하는 항목들에대해서 리뷰하는 단계이다.

l        WCF 프록시 파일 사용하기

-         클라이언트 애플리케이션에서 프록시 클래스를 사용하는 코드를 본다.


다음 예제를 따라하기 위해서는 .NET 3.0이 설치되어 있어야 한다. PC 세팅에 대해서는 지난 포스트를 참조한다.

1. WCF 서비스 컨트랙트 정의하기

프로젝트 형식 : Visual C# -> 템플릿 : WCF Service Library 를 선택해서 새 프로젝트 추가한다.

<그림1>


<
그림2>

using System;

using System.ServiceModel;

namespace WCFService

{

  // Service Contralct 정의하기

  [ServiceContract(Namespace = "http://dalbong.ServiceModel.Samples")]

  public interface IHelloService

  {

       [OperationContract]

       string Hello();

  }

}

2.  WCF 서비스 컨트랙트 구현하기

using System;

using System.ServiceModel;

namespace WCFService

{

  // Service Contralct 정의하기

  [ServiceContract(Namespace = "http://dalbong.ServiceModel.Samples")]

  public interface IHelloService

  {

       [OperationContract]

       string Hello();

  }

  // Service Contract를 구현하는 서비스 클래스

  public class HelloService : IHelloService

  {

       public string Hello()

       {

           return "Hello World";

       }

  }

}


  1. '[본문으로]
  2. '[본문으로]
  3. '[본문으로]
  4. '[본문으로]