Partager via


Service Description

Cet exemple montre comment un service peut récupérer ses informations de description de service pendant l'exécution. Il est basé sur Getting Started, exemple, avec une opération de service supplémentaire définie pour retourner des informations descriptives sur le service. Les informations retournées répertorient les points de terminaison et les adresses de base du service. Le service fournit ces informations à l'aide des classes OperationContext, ServiceHost et ServiceDescription.

Dans cet exemple, le client est une application console (.exe) et le service est hébergé par les services IIS (Internet Information Services).

ms751492.note(fr-fr,VS.90).gifRemarque :
La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent à la fin de cette rubrique.

Cet exemple dispose une version modifiée du contrat de calculatrice appelée IServiceDescriptionCalculator. Le contrat définit une opération de service supplémentaire appelée GetServiceDescriptionInfo qui retourne une chaîne multiligne au client qui décrit les points de terminaison de service ou adresses de base du service.

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

Le code d'implémentation pour GetServiceDescriptionInfo utilise ServiceDescription pour répertorier les points de terminaison de service. Les points de terminaison de service pouvant avoir des adresses relatives, il répertorie d'abord les adresses de base du service. Pour obtenir l'ensemble de ces informations, le code obtient son contexte d'opération à l'aide de Current. ServiceHost et son objet ServiceDescription sont récupérés du contexte d'opération. Pour répertorier les points de terminaison de base du service, le code parcourt la collection BaseAddresses de l'hôte de service. Pour répertorier les points de terminaison de service du service, le code parcourt la collection de points de terminaison de la description de service.

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

Lorsque vous exécutez l'exemple, les opérations de calculatrice puis les informations de service retournées par l'opération GetServiceDescriptionInfo s'affichent. Appuyez sur ENTER dans la fenêtre du client pour l'arrêter.

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.

Pour configurer, générer et exécuter l'exemple

  1. Assurez-vous d'avoir effectué la procédure indiquée dans la section Procédure d'installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer l'édition C# ou Visual Basic .NET de la solution, suivez les instructions indiquées dans Génération des exemples Windows Communication Foundation.

  3. Pour exécuter l'exemple dans une configuration à un ou plusieurs ordinateurs, suivez les instructions indiquées dans Exécution des exemples Windows Communication Foundation.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.