다음을 통해 공유


Address Headers

Address Headers 샘플은 클라이언트가 WCF(Windows Communication Foundation)를 사용하여 참조 매개 변수를 서비스에 전달할 수 있는 방법을 보여 줍니다.

참고

이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.

WS-Addressing 사양은 특성 웹 서비스 끝점의 주소를 지정하는 방법으로 끝점 참조의 개념을 정의합니다. WCF에서 끝점 참조는 EndpointAddress 클래스를 사용하여 모델링됩니다. EndpointAddressServiceEndpoint 클래스의 주소 필드 형식입니다.

끝점 참조 모델의 일부에서 각 참조는 추가 식별 정보를 추가하는 일부 참조 매개 변수를 전달할 수 있습니다. WCF에서 이러한 참조 매개 변수는 AddressHeader 클래스의 인스턴스로 모델링됩니다.

이 샘플에서 클라이언트는 클라이언트 끝점의 EndpointAddress에 참조 매개 변수를 추가합니다. 서비스는 이 참조 매개 변수를 찾아서 "Hello" 서비스 작업의 논리에 해당 값을 사용합니다.

클라이언트

클라이언트는 참조 매개 변수를 보내려면 ServiceEndpointEndpointAddressAddressHeader를 추가해야 합니다. EndpointAddress 클래스를 변경할 수 없으므로 끝점 주소 수정은 EndpointAddressBuilder 클래스를 사용하여 수행해야 합니다. 다음 코드에서는 해당 메시지의 일부로 참조 매개 변수를 보내도록 클라이언트를 초기화합니다.

HelloClient client = new HelloClient();
EndpointAddressBuilder builder = 
    new EndpointAddressBuilder(client.Endpoint.Address);
AddressHeader header = 
    AddressHeader.CreateAddressHeader(IDName, IDNamespace, "John");
builder.Headers.Add(header);
client.Endpoint.Address = builder.ToEndpointAddress();

이 코드는 원래 EndpointAddress를 초기 값으로 사용하여 EndpointAddressBuilder를 만듭니다. 그런 다음 새로 만든 주소 헤더를 추가합니다. CreateAddressHeadercreates를 호출하면 특정 이름, 네임스페이스 및 값을 가진 헤더가 만들어집니다. 여기서 값은 "John"입니다. 헤더가 작성기에 추가되고 나면 ToEndpointAddress() 메서드는 변경할 수 있는 작성기를 변경할 수 없는 끝점 주소로 다시 변환하고 이 주소는 클라이언트 끝점의 주소 필드에 할당됩니다.

이제 클라이언트가 Console.WriteLine(client.Hello());를 호출하면 클라이언트의 결과 출력에 나온 것처럼 서비스는 이 주소 매개 변수의 값을 가져올 수 있습니다.

Hello, John

서버

서비스 작업 Hello()의 구현에서는 현재 OperationContext를 사용하여 들어오는 메시지에서 헤더 값을 검사합니다.

string id = null;
// look at headers on incoming message
for (int i = 0; 
     i < OperationContext.Current.IncomingMessageHeaders.Count;      ++i)
{
    MessageHeaderInfo h = 
        OperationContext.Current.IncomingMessageHeaders[i];
    // for any reference parameters with the correct name & namespace
    if (h.IsReferenceParameter && 
        h.Name == IDName && 
        h.Namespace == IDNamespace)
    {
        // read the value of that header
        XmlReader xr = 
OperationContext.Current.IncomingMessageHeaders.GetReaderAtHeader(i);
        id = xr.ReadElementContentAsString();
    }
}
return "Hello, " + id;

이 코드는 들어오는 메시지의 모든 헤더를 반복하여 특정 이름을 가진 참조 매개 변수인 헤더를 찾습니다. 매개 변수가 발견되면 매개 변수의 값을 읽고 "id" 변수에 저장합니다.

샘플을 설치, 빌드 및 실행하려면

  1. Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.

  2. C# 또는 Visual Basic .NET 버전의 솔루션을 빌드하려면 Windows Communication Foundation 샘플 빌드의 지침을 따릅니다.

  3. 단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.