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á Internetová informační služba (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žití k výpisu ServiceDescription 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. Pokud chcete vypsat koncové body služby pro službu, kód iteruje prostřednictvím kolekce 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ě GetServiceDescriptionInfo vrácené operací. 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.

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

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

  3. 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.