Delen via


Beschrijving van de service

Het servicedescription-voorbeeld laat zien hoe een service de informatie over de servicebeschrijving tijdens runtime kan ophalen. Het voorbeeld is gebaseerd op aan de slag, waarbij een extra servicebewerking is gedefinieerd om beschrijvende informatie over de service te retourneren. De informatie die wordt geretourneerd, bevat de basisadressen en eindpunten voor de service. De service biedt deze informatie met behulp van de OperationContext, ServiceHosten ServiceDescription klassen.

In dit voorbeeld is de client een consoletoepassing (.exe) en wordt de service gehost door Internet Information Services (IIS).

Notitie

De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.

Dit voorbeeld heeft een gewijzigde versie van het rekenmachinecontract met de naam IServiceDescriptionCalculator. Het contract definieert een extra servicebewerking met de naam GetServiceDescriptionInfo die een tekenreeks met meerdere regels retourneert naar de client die het basisadres of de basisadressen en service-eindpunten of -eindpunten voor de service beschrijft.

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

De implementatiecode voor GetServiceDescriptionInfo het gebruik van de ServiceDescription om de service-eindpunten weer te geven. Omdat service-eindpunten relatieve adressen kunnen hebben, worden eerst de basisadressen voor de service vermeld. Om al deze informatie op te halen, verkrijgt de code de bewerkingscontext met behulp van Current. Het ServiceHost en het ServiceDescription bijbehorende object worden opgehaald uit de bewerkingscontext. Als u de basiseindpunten voor de service wilt weergeven, wordt de code herhaald door de verzameling van BaseAddresses de servicehost. Als u de service-eindpunten voor de service wilt weergeven, wordt de code herhaald door de eindpuntenverzameling van de servicebeschrijving.

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;
}

Wanneer u het voorbeeld uitvoert, ziet u de rekenmachinebewerkingen en vervolgens de servicegegevens die door de GetServiceDescriptionInfo bewerking worden geretourneerd. Druk op Enter in het clientvenster om de client af te sluiten.

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.

Het voorbeeld instellen, compileren en uitvoeren

  1. Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.

  2. Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.

  3. Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.