Aracılığıyla paylaş


Adres Başlıkları

Adres Üst Bilgileri örneği, istemcilerin Windows Communication Foundation (WCF) kullanarak bir hizmete nasıl başvuru parametreleri geçirebileceğini gösterir.

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

WS-Addressing belirtimi, belirli bir Web hizmeti uç noktasını ele almak için bir uç nokta başvurusu kavramını tanımlar. WCF'de uç nokta başvuruları sınıfı kullanılarak EndpointAddress modellenir; EndpointAddress sınıfın Address alanının ServiceEndpoint türüdür.

Uç nokta başvuru modelinin bir parçası, her başvurunun ek tanımlayıcı bilgiler ekleyen bazı başvuru parametreleri taşıyabilmesidir. WCF'de bu başvuru parametreleri sınıfın AddressHeader örnekleri olarak modellenir.

Bu örnekte istemci, istemci uç noktasının EndpointAddress başvuru parametresini ekler. Hizmet bu başvuru parametresini arar ve değerini "Hello" hizmet işleminin mantığında kullanır.

Müşteri

İstemcinin bir başvuru parametresi gönderebilmesi için, AddressHeader öğesinin EndpointAddress kısmına bir ServiceEndpoint eklemesi gerekir. EndpointAddress sınıfı değişmez olduğundan, bir uç nokta adresini değiştirmek için EndpointAddressBuilder sınıfı kullanılmalıdır. Aşağıdaki kod, iletisinin bir parçası olarak bir başvuru parametresi göndermek için istemciyi başlatır.

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();

Kod, özgün EndpointAddressBuilder değerini ilk değer olarak kullanarak bir EndpointAddress oluşturur. Ardından, yeni oluşturulan bir adres başlığı ekler; CreateAddressHeader fonksiyon çağrısı, belirli bir isim, ad alanı ve değere sahip bir başlık oluşturur. Burada değer "John" şeklindedir. Üst bilgi oluşturucuya eklendikten sonra, ToEndpointAddress() yöntemi değiştirilebilir oluşturucuyu sabit bir uç nokta adresine dönüştürür, bu adres istemci uç noktasının Adres alanına yeniden atanır.

Artık istemci Console.WriteLine(client.Hello()); çağırdığında hizmet, istemcinin sonuçta elde edilen çıktısında görüldüğü üzere, bu adres parametresinin değerini alabilir.

Hello, John

Sunucu

Hizmet işleminin Hello() uygulanması, gelen iletideki üst bilgilerin değerlerini incelemek için geçerli OperationContext değerini kullanır.

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;

Kod, gelen iletideki tüm üst bilgileri yineler ve belirli bir ada sahip başvuru parametreleri olan üst bilgileri arar. Parametresi bulunduğunda, parametresinin değerini okur ve "id" değişkeninde depolar.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.