주소 헤더
주소 헤더 샘플은 클라이언트가 WCF(Windows Communication Foundation)를 사용하여 참조 매개 변수를 서비스에 전달할 수 있는 방법을 보여 줍니다.
참고 항목
이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.
WS-Addressing 사양은 특성 웹 서비스 엔드포인트의 주소를 지정하는 방법으로 엔드포인트 참조의 개념을 정의합니다. WCF에서 엔드포인트 참조는 EndpointAddress
클래스를 사용하여 모델링됩니다. EndpointAddress
는 ServiceEndpoint
클래스의 주소 필드 형식입니다.
엔드포인트 참조 모델의 일부에서 각 참조는 추가 식별 정보를 추가하는 일부 참조 매개 변수를 전달할 수 있습니다. WCF에서 이러한 참조 매개 변수는 AddressHeader
클래스의 인스턴스로 모델링됩니다.
이 샘플에서 클라이언트는 클라이언트 엔드포인트의 EndpointAddress
에 참조 매개 변수를 추가합니다. 서비스는 이 참조 매개 변수를 찾아서 "Hello" 서비스 작업의 논리에 해당 값을 사용합니다.
클라이언트
클라이언트는 참조 매개 변수를 보내려면 AddressHeader
의 EndpointAddress
에 ServiceEndpoint
를 추가해야 합니다. ph x="1" /> 클래스를 변경할 수 없으므로 엔드포인트 주소 수정은 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();
이 코드는 원래 EndpointAddressBuilder
를 초기 값으로 사용하여 EndpointAddress
를 만듭니다. 그런 다음 새로 만들어진 주소 헤더를 추가합니다. CreateAddressHeader
를 호출하면 특정 이름, 네임스페이스 및 값이 있는 헤더가 만들어집니다. 여기서 값은 "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 버전의 솔루션을 빌드하려면 Building the Windows Communication Foundation Samples의 지침을 따릅니다.
단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.