Hlavičky adresy
Ukázka Hlavičky adres ukazuje, jak můžou klienti předávat referenční parametry službě pomocí technologie Windows Communication Foundation (WCF).
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Specifikace WS-Address definuje pojem odkazu na koncový bod jako způsob, jak adresovat konkrétní koncový bod webové služby. Ve WCF jsou odkazy na koncové body modelovány pomocí EndpointAddress
třídy – EndpointAddress
je typ pole ServiceEndpoint
Adresa třídy.
Součástí referenčního modelu koncového bodu je, že každý odkaz může obsahovat některé referenční parametry, které přidávají další identifikační informace. Ve WCF jsou tyto referenční parametry modelovány jako instance AddressHeader
třídy.
V této ukázce klient přidá do koncového bodu klienta referenční parametr EndpointAddress
. Služba vyhledá tento referenční parametr a použije jeho hodnotu v logice operace služby "Hello".
Klient
Aby klient odeslal parametr odkazu, musí přidat AddressHeader
do objektu EndpointAddress
ServiceEndpoint
. Vzhledem k tomu, že EndpointAddress
třída je neměnná, musí být úprava adresy koncového bodu provedena pomocí EndpointAddressBuilder
třídy. Následující kód inicializuje klienta tak, aby v rámci zprávy odeslal parametr odkazu.
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();
Kód vytvoří EndpointAddressBuilder
jako počáteční hodnotu původní EndpointAddress
hodnotu. Pak přidá nově vytvořenou hlavičku adresy; volání pro CreateAddressHeader
vytvoření záhlaví s konkrétním názvem, oborem názvů a hodnotou. Tady je hodnota "John". Po přidání hlavičky do tvůrce ToEndpointAddress()
metoda převede tvůrce (proměnlivý) zpět na adresu koncového bodu (neměnné), která je přiřazena zpět do pole Adresa koncového bodu klienta.
Když klient zavolá Console.WriteLine(client.Hello());
, služba dokáže získat hodnotu tohoto parametru adresy, jak je vidět ve výsledném výstupu klienta.
Hello, John
Server
Implementace operace Hello()
služby používá aktuální OperationContext
ke kontrole hodnot hlaviček příchozí zprávy.
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;
Kód iteruje přes všechna záhlaví příchozí zprávy a hledá hlavičky, které odkazují na parametry s konkrétním názvem a. Když se parametr najde, přečte hodnotu parametru a uloží ho do proměnné "id".
Nastavení, sestavení a spuštění ukázky
Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.
Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.