주소 헤더 샘플은 클라이언트가 WCF(Windows Communication Foundation)를 사용하여 서비스에 참조 매개 변수를 전달하는 방법을 보여 줍니다.
비고
이 샘플에 대한 설치 절차 및 빌드 지침은 이 항목의 끝에 있습니다.
WS-Addressing 사양은 특정 웹 서비스 엔드포인트를 해결하는 방법으로 엔드포인트 참조의 개념을 정의합니다. WCF에서 엔드포인트 참조는 EndpointAddress
클래스로 모델링된 것입니다. EndpointAddress
클래스의 주소 필드 유형은 ServiceEndpoint
입니다.
엔드포인트 참조 모델의 일부는 각 참조가 추가 식별 정보를 추가하는 몇 가지 참조 매개 변수를 전달할 수 있다는 것입니다. WCF에서 이러한 참조 매개 변수는 클래스의 AddressHeader
인스턴스로 모델링됩니다.
이 샘플에서 클라이언트는 클라이언트 엔드포인트에 EndpointAddress
참조 매개 변수를 추가합니다. 서비스는 이 참조 매개 변수를 찾고 "Hello" 서비스 작업의 논리에서 해당 값을 사용합니다.
클라이언트
클라이언트가 참조 매개 변수를 보내려면 AddressHeader
의 EndpointAddress
에 ServiceEndpoint
을 추가해야 합니다.
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();
이 코드는 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 샘플 에 대한One-Time 설정 절차를 수행했는지 확인합니다.
솔루션의 C# 또는 Visual Basic .NET 버전을 빌드하려면 Windows Communication Foundation 샘플빌드의 지침을 따릅니다.
단일 또는 컴퓨터 간 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플실행의 지침을 따릅니다.