이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장

방법: 서비스 버스용 WCF SOAP 클라이언트 응용 프로그램 만들기

업데이트 날짜: 2015년 6월

다음 항목에서는 Microsoft Azure 서비스 버스에 액세스하는 일반적인 클라이언트 응용 프로그램을 만드는 방법을 설명합니다. 클라이언트 응용 프로그램을 빌드하는 방법에 대한 자세한 내용은 WCF(Windows Communication Foundation) 설명서의 Building Clients를 참조하세요. 다음 절차는 서비스 버스에 고유한 기능을 중점적으로 설명하는 클라이언트 응용 프로그램을 만드는 간소화된 프로세스입니다. 전체 샘플은 릴레이된 메시징 서비스 버스 샘플 또는 서비스 버스 릴레이된 메시징 자습서5단계: 서비스 계약용 WCF 클라이언트 만들기를 참조하세요.

  1. 서비스의 계약 복사본을 검색하여 코드에 포함합니다.

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

    서비스에서 표시하는 메타데이터를 사용하는 등 다양한 방법으로 서비스에서 계약을 검색할 수 있습니다. 자세한 내용은 TechNet의 방법: 서비스 버스에 사용할 WCF 서비스 계약 디자인.

  2. System.ServiceModelMicrosoft.ServiceBus 네임스페이스에 대한 참조를 프로젝트에 추가합니다.

    using System.ServiceModel;
    using Microsoft.ServiceBus;
    
    
  3. 서비스 네임스페이스 및 관련 자격 증명 정보를 검색합니다.

    static void Main(string[] args)
    {
        Console.Write("Your Service Namespace (ex. sb://<ServiceNamespace>.servicebus.windows.net/): ");
        string serviceNamespace = Console.ReadLine();
        Console.Write("Your SAS Policy Name: ");
        string sasPolicyName = Console.ReadLine();
        Console.Write("Your SAS Key: ");
        string sasKey = Console.ReadLine();
    }
    
    
    note참고
    위의 코드 예제에서는 서비스 끝점에 SAS 키 자격 증명이 필요하다고 가정합니다. 서비스 끝점에 인증이 필요하지 않을 수도 있습니다. 인증이 필요하지 않은 서비스 끝점의 경우 SAS 정책 이름 및 키를 설정할 필요도 없습니다.

    연결하는 데 필요한 보안 및 인증 유형은 서비스에 의해 정의됩니다. 서비스에서 표시하는 메타데이터를 사용하는 등 다양한 방법으로 이 정보를 검색할 수 있습니다. 자세한 내용은 TechNet의 방법: 서비스 버스에 사용할 WCF 서비스 계약 디자인. 이 항목에서는 서비스 버스 끝점에서 클라이언트 응용 프로그램이 SAS 자격 증명을 사용하여 인증해야 한다고 가정합니다. 이 예제에서는 인증이 필요하지만 인증이 필요 없는 끝점도 있습니다. SWT(단순 웹 토큰), SAML 등의 다른 자격 증명 유형을 사용할 수도 있습니다. 이 시점에서 클라이언트 전송 또는 메시지 수준 보안을 설정할 수도 있습니다. 그러나 대부분의 시나리오에서는 기본 설정을 사용하면 됩니다. 자세한 내용은 TechNet의 서비스 버스 연결 보안 및 인증.

  4. 끝점에 사용할 보안 자격 증명을 정의합니다.

    TransportClientEndpointBehavior clientBehavior = new TransportClientEndpointBehavior();
    clientBehavior.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(sasPolicyName, sasKey);
    
    
    
    note참고
    위의 예제에서는 서비스 끝점에 SAS 자격 증명이 필요하다고 가정합니다. 서비스 끝점에 인증이 필요하지 않을 수도 있으며, 인증이 필요하지 않으면 이 단계와 이 섹션 뒷부분의 8단계를 건너뜁니다.

  5. 다음 코드에 나와 있는 것처럼 서비스 버스 서비스를 가리키는 URI 개체를 만듭니다.

    Uri serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", serviceNamespace, "EchoService");
    

    이 코드 예제에서 CreateServiceUri 메서드는 스키마(서비스 버스의 경우 TCP 릴레이 연결에 사용되는 “sb”), 서비스 네임스페이스 및 연결할 끝점의 이름을 가져옵니다. 자세한 내용은 TechNet의 서비스 버스 URI 만들기.

  6. 서비스에 연결하는 데 사용되는 클라이언트 끝점을 구성합니다.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <client>
          <!-- Application Endpoint -->
          <endpoint name="RelayEndpoint"
                    contract="Microsoft.ServiceBus.Samples.IEchoContract"
                    binding="netTcpRelayBinding"/>
        </client>
    
      </system.serviceModel>
    </configuration>
    

    이 예제에서는 이름 “RelayEndpoint”를 사용하여 클라이언트 끝점을 정의합니다. 이 이름은 나중에 채널 팩터리를 만드는 데 사용됩니다. 또한 끝점 구성에서는 이 절차의 첫 단계에서 정의한 계약 그리고 연결에 사용된 바인딩이 NetTcpRelayBinding이라는 것도 선언합니다. 이 절차에서는 App.config 파일에서 해당 정보를 선언합니다. 이 정보를 프로그래밍 방식으로 정의할 수도 있습니다. 자세한 내용은 TechNet의 서비스 버스에 등록할 WCF 서비스 구성.

  7. 채널 팩터리를 인스턴스화합니다.

    ChannelFactory<IEchoChannel> channelFactory = new ChannelFactory<IEchoChannel>("RelayEndpoint", new EndpointAddress(serviceUri));
    

    이 채널 팩터리는 이 절차를 시작할 때 클라이언트 계약에서 정의한 채널 유형을 사용합니다.

  8. 자격 증명 및 기타 동작을 끝점에 적용합니다.

    channelFactory.Endpoint.Behaviors.Add(clientBehavior);
    
    note참고
    위의 코드 예제에서는 서비스 끝점에 SAS 자격 증명이 필요하다고 가정합니다. 서비스 끝점에는 인증이 필요할 수도 있고 필요하지 않을 수도 있습니다. 끝점에 인증이 필요하지 않은 경우에는 클라이언트 끝점에 자격 증명 동작을 추가할 필요가 없습니다.

  9. 서비스에 대한 새 채널을 만들고 엽니다.

    IEchoChannel channel = channelFactory.CreateChannel();
    channel.Open();
    
  10. 시나리오에 필요한 작업을 수행합니다.

    Console.WriteLine("Enter text to echo (or [Enter] to exit):");
    string input = Console.ReadLine();
    while (input != String.Empty)
    {
         try
        {
            Console.WriteLine("Server echoed: {0}", channel.Echo(input));
        }
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.Message);
        }
        input = Console.ReadLine();
    }
    

    이 단계에서는 표시된 끝점을 통해 서비스 응용 프로그램에 액세스합니다. 자세한 내용은 TechNet의 서비스 버스용 서비스 빌드.

  11. 작업을 마친 후 다음 코드에 나와 있는 것처럼 채널을 닫습니다.

    channel.Close();
    channelFactory.Close();
    

참고 항목

표시:
© 2015 Microsoft