Sdílet prostřednictvím


Popis služby

Ukázka ServiceDescription ukazuje, jak může služba načíst informace o popisu služby za běhu. Ukázka je založená na začínáme s další operací služby definovanou tak, aby vracela popisné informace o službě. Vrácené informace uvádějí základní adresy a koncové body pro službu. Služba poskytuje tyto informace pomocí OperationContext, ServiceHosta ServiceDescription třídy.

V této ukázce je klient konzolovou aplikací (.exe) a služba je hostovaná internetovou informační službou (IIS).

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Tato ukázka obsahuje upravenou verzi kontraktu kalkulačky s názvem IServiceDescriptionCalculator. Kontrakt definuje další operaci služby s názvem GetServiceDescriptionInfo , která vrátí víceřádkový řetězec klientovi, který popisuje základní adresu nebo adresy a koncový bod služby nebo koncové body služby pro službu.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface IServiceDescriptionCalculator
{
    [OperationContract]
    int Add(int n1, int n2);
    [OperationContract]
    int Subtract(int n1, int n2);
    [OperationContract]
    int Multiply(int n1, int n2);
    [OperationContract]
    int Divide(int n1, int n2);
    [OperationContract]
    string GetServiceDescriptionInfo();
}

Kód implementace pro GetServiceDescriptionInfo používá ServiceDescription k vypsání koncových bodů služby. Vzhledem k tomu, že koncové body služby můžou mít relativní adresy, nejprve vypíše základní adresy pro službu. Pro získání všech těchto informací kód získá svůj kontext operace pomocí Current. Objekt ServiceHost a jeho ServiceDescription objekt jsou načteny z kontextu operace. Pokud chcete vypsat základní koncové body pro službu, kód iteruje prostřednictvím kolekce hostitele BaseAddresses služby. K vypsání koncových bodů služby prochází kód kolekcí koncových bodů popisu služby.

public string GetServiceDescriptionInfo()
{
    string info = "";
    OperationContext operationContext = OperationContext.Current;
    ServiceHost host = (ServiceHost)operationContext.Host;
    ServiceDescription desc = host.Description;
    // Enumerate the base addresses in the service host.
    info += "Base addresses:\n";
    foreach (Uri uri in host.BaseAddresses)
    {
        info += "    " + uri + "\n";
    }
    // Enumerate the service endpoints in the service description.
    info += "Service endpoints:\n";
    foreach (ServiceEndpoint endpoint in desc.Endpoints)
    {
        info += "    Address:  " + endpoint.Address + "\n";
        info += "    Binding:  " + endpoint.Binding.Name + "\n";
        info += "    Contract: " + endpoint.Contract.Name + "\n";
    }
     return info;
}

Při spuštění ukázky se zobrazí operace kalkulačky a informace o službě vrácené operací GetServiceDescriptionInfo. Stisknutím klávesy ENTER v okně klienta klienta ukončete klienta.

Add(15,3) = 18
Subtract(145,76) = 69
Multiply(9,81) = 729
Divide(22,7) = 3
GetServiceDescriptionInfo
Base addresses:
    http://<machine-name>/ServiceModelSamples/service.svc
    https://<machine-name>/ServiceModelSamples/service.svc
Service endpoints:
    Address:  http://<machine-name>/ServiceModelSamples/service.svc
    Binding:  WSHttpBinding
    Contract: IServiceDescriptionCalculator
    Address:  http://<machine-name>/ServiceModelSamples/service.svc/mex
    Binding:  MetadataExchangeHttpBinding
    Contract: IMetadataExchange

Press <ENTER> to terminate client.

Jak nastavit, sestavit a spustit ukázku

  1. Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.

  2. Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.

  3. Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.