내보내기(0) 인쇄
모두 확장

2단계: 서비스 버스에 사용할 WCF 서비스 계약 정의

업데이트 날짜: 2015년 3월

이 항목에서는 기본적인 WCF(Windows Communication Foundation) 서비스와 Microsoft Azure 서비스 버스를 사용하는 서비스를 호출할 수 있는 클라이언트를 만들기 위해 수행해야 하는 7개 작업 중 두 번째 작업에 대해 설명합니다. 전체 7개 작업의 개요는 서비스 버스 릴레이된 메시징 자습서를 참조하세요. 이 작업의 이전 작업은 1단계: 계정 등록이고 다음 작업은 3단계: 서비스 버스를 사용하도록 WCF 계약 구현입니다.

기본적인 WCF 서비스를 만들 때는 서비스 버스용 서비스인지 여부에 관계없이 서비스가 지원하는 작업을 지정하는 서비스 계약(메서드 또는 함수에 해당하는 웹 서비스 용어)을 정의해야 합니다. C++, C# 또는 Visual Basic 인터페이스를 정의하여 계약을 만듭니다. 이 자습서에서는 C#을 사용하여 이러한 계약을 만드는 방법을 보여 줍니다. 인터페이스의 각 메서드는 특정 서비스 작업에 해당합니다. 각 인터페이스에는 ServiceContractAttribute 특성을 적용해야 하며 각 작업에는 OperationContractAttribute를 적용해야 합니다. 인터페이스의 메서드가 ServiceContractAttribute 특성을 포함하는데 OperationContractAttribute 특성은 포함하지 않는 경우 해당 메서드가 표시되지 않습니다. 이러한 작업에 사용되는 코드는 절차 뒷부분의 예제에서 제공됩니다. 계약을 정의하는 방법에 대한 자세한 내용은 서비스 버스용 WCF 계약 디자인을 참조하세요. 계약과 서비스에 대한 보다 자세한 설명은 WCF 설명서의 Designing and Implementing Services을 참조하세요.

완료 예상 시간: 10분

  1. 시작 메뉴에서 프로그램을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택하여 Visual Studio 2012를 관리자 권한으로 엽니다.

  2. 새 콘솔 응용 프로그램 프로젝트를 만듭니다. 이렇게 하려면 파일 메뉴를 클릭하고 새로 만들기를 선택한 다음 프로젝트를 클릭합니다. 그런 다음 새 프로젝트 대화 상자에서 Visual C#을 클릭합니다. Visual C#이 표시되지 않으면 다른 언어 아래를 확인합니다. 그리고 나서 콘솔 응용 프로그램 템플릿을 클릭하고 이름을 EchoService로 지정합니다. 기본 위치를 사용하고 확인을 클릭하여 프로젝트를 만듭니다.

  3. Visual Studio 2008 이상을 실행하는 경우에는 다음 두 단계(4단계와 5단계)를 수행하지 않아도 됩니다.

  4. 솔루션 탐색기에서 프로젝트 이름(이 예제에서는 EchoService)을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

  5. 왼쪽의 응용 프로그램 탭을 클릭하고 대상 프레임워크: 드롭다운에서 .NET Framework 4를 선택합니다. 프로젝트를 다시 로드할지 묻는 메시지가 표시되면 를 클릭합니다.

  6. C# 프로젝트의 경우 Visual Studio에서 Program.cs 파일을 만듭니다. 이 클래스는 빈 메서드 Main()을 포함합니다. 콘솔 응용 프로그램 프로젝트를 올바르게 빌드하려면 이 메서드가 필요합니다. 따라서 이 메서드는 프로젝트에 그대로 두어도 안전합니다.

  7. System.ServiceModel.dll에 대한 참조를 프로젝트에 추가합니다.

    1. 솔루션 탐색기에서 프로젝트 폴더 아래의 참조 폴더를 마우스 오른쪽 단추로 클릭하고 참조 추가...를 클릭합니다.

    2. 참조 추가 대화 상자에서 .NET 탭을 선택한 다음 아래쪽으로 스크롤하여 System.ServiceModel이 표시되면 선택하고 확인을 클릭합니다.

    note참고
    Csc.exe와 같은 명령줄 컴파일러를 사용할 때는 어셈블리 경로도 입력해야 합니다. 예를 들어 을 실행하는 컴퓨터에서는 이 경로가 기본적으로 Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation입니다.

  8. 솔루션 탐색기에서 Program.cs 파일을 두 번 클릭하여 편집기에서 엽니다.

  9. System.ServiceModel 네임스페이스에 대해 using 문을 추가합니다.

    using System.ServiceModel;
    

    System.ServiceModel은 WCF의 기본 기능에 프로그래밍 방식으로 액세스하는 데 사용할 수 있는 네임스페이스입니다. 서비스 버스에서는 대부분의 WCF 개체와 특성을 사용하여 서비스 계약을 정의합니다. 대부분의 서비스 버스 응용 프로그램에 이 네임스페이스를 사용하게 될 것입니다.

  10. 네임스페이스 이름을 기본 이름인 EchoService에서 Microsoft.ServiceBus.Samples로 변경합니다.

    Important중요
    이 자습서에서는 C# 네임스페이스 Microsoft.ServiceBus.Samples를 사용합니다. 이 네임스페이스는 6단계: WCF 클라이언트 구성에서 구성 파일에 사용하는 관리되는 계약 형식의 네임스페이스입니다. 이 샘플을 빌드할 때 원하는 네임스페이스를 지정할 수 있습니다. 그러나 이렇게 하면 응용 프로그램 구성 파일에서 계약 및 서비스의 네임스페이스도 적절하게 수정해야 이 자습서에서 설명하는 작업을 수행할 수 있습니다. App.config 파일에 지정된 네임스페이스는 C# 파일에 지정된 네임스페이스와 같아야 합니다.

  11. Microsoft.ServiceBus.Samples 네임스페이스 내의 네임스페이스 선언 바로 뒤에 IEchoContract라는 새 인터페이스를 정의하고 네임스페이스 값이 http://samples.microsoft.com/ServiceModel/Relay/ServiceContractAttribute 특성을 인터페이스에 적용합니다. 이 네임스페이스 값은 코드 범위 전체에서 사용되는 네임스페이스와는 다르며, 이 계약의 고유 식별자로 사용됩니다. 네임스페이스를 명시적으로 지정하면 계약 이름에 기본 네임스페이스 값이 추가되지 않습니다.

    [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public interface IEchoContract
    {
    }
    
    
    note참고
    일반적으로 서비스 계약 네임스페이스에는 버전 정보가 들어 있는 이름 지정 체계가 포함됩니다. 이처럼 서비스 계약 네임스페이스에 버전 정보가 포함되므로 서비스에서 새 네임스페이스를 사용하여 새 서비스 계약을 정의한 다음 새 끝점에 표시하는 방식으로 중요한 변경 내용을 격리할 수 있습니다. 이 방식을 통해 클라이언트는 이전 서비스 계약을 업데이트하지 않고도 계속 사용할 수 있습니다. 버전 정보는 날짜 또는 빌드 번호로 구성될 수 있습니다. 자세한 내용은 TechNet의 서비스 버전 관리 이 자습서에서 서비스 계약 네임스페이스의 이름 지정 체계에는 버전 정보가 포함되지 않습니다.

  12. IEchoContract 인터페이스 내에서 IEchoContract 계약이 인터페이스에 표시하는 단일 작업에 대한 메서드를 선언하고, 공용 서비스 버스 계약의 일부분으로 표시할 메서드에 OperationContractAttribute 특성을 적용합니다.

    [OperationContract]
    string Echo(string text);
    
  13. IEchoChannelIClientChannel 인터페이스 둘 다에서 상속하는 채널을 다음과 같이 계약 외부에 선언합니다.

    
    
        [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
        public interface IEchoContract
        {
            [OperationContract]
            String Echo(string text);
        }
    
        public interface IEchoChannel : IEchoContract, IClientChannel { }
    
    
    

    채널은 호스트와 클라이언트가 서로 정보를 전달하는 데 사용하는 WCF 개체입니다. 나중에 두 응용 프로그램 간에 정보를 에코하기 위해 채널에 대한 코드를 작성할 것입니다.

  14. 빌드 메뉴에서 솔루션 빌드를 클릭하거나 F6 키를 눌러 작업이 정확하게 수행되는지 확인합니다.

예제

다음 코드 예제는 서비스 버스 계약을 정의하는 기본적인 인터페이스를 보여 줍니다.

using System;
using System.ServiceModel;

namespace Microsoft.ServiceBus.Samples
{
    [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public interface IEchoContract
    {
        [OperationContract]
        String Echo(string text);
    }

    public interface IEchoChannel : IEchoContract, IClientChannel { }


    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

이제 인터페이스를 만들었으므로 3단계: 서비스 버스를 사용하도록 WCF 계약 구현에서 설명하는 대로 인터페이스를 구현할 수 있습니다.

표시:
© 2015 Microsoft