Address Headers
Address Headers 샘플은 클라이언트가 WCF(Windows Communication Foundation)를 사용하여 참조 매개 변수를 서비스에 전달할 수 있는 방법을 보여 줍니다.
참고
이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.
WS-Addressing 사양은 특성 웹 서비스 끝점의 주소를 지정하는 방법으로 끝점 참조의 개념을 정의합니다. WCF에서 끝점 참조는 EndpointAddress
클래스를 사용하여 모델링됩니다. EndpointAddress
는 ServiceEndpoint
클래스의 주소 필드 형식입니다.
끝점 참조 모델의 일부에서 각 참조는 추가 식별 정보를 추가하는 일부 참조 매개 변수를 전달할 수 있습니다. WCF에서 이러한 참조 매개 변수는 AddressHeader
클래스의 인스턴스로 모델링됩니다.
이 샘플에서 클라이언트는 클라이언트 끝점의 EndpointAddress
에 참조 매개 변수를 추가합니다. 서비스는 이 참조 매개 변수를 찾아서 "Hello" 서비스 작업의 논리에 해당 값을 사용합니다.
클라이언트
클라이언트는 참조 매개 변수를 보내려면 ServiceEndpoint
의 EndpointAddress
에 AddressHeader
를 추가해야 합니다. 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" 변수에 저장합니다.
샘플을 설치, 빌드 및 실행하려면
Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.
C# 또는 Visual Basic .NET 버전의 솔루션을 빌드하려면 Windows Communication Foundation 샘플 빌드의 지침을 따릅니다.
단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.