Aracılığıyla paylaş


Hizmet Açıklaması

ServiceDescription örneği, bir hizmetin çalışma zamanında hizmet açıklaması bilgilerini nasıl alabileceğini gösterir. Örnek, Başlarken belgesini temel alır ve hizmet hakkında açıklayıcı bilgiler döndürmek için tanımlanmış ek bir hizmet işlemi içerir. Döndürülen bilgiler, hizmetin temel adreslerini ve uç noktalarını listeler. Hizmet, bu bilgileri , OperationContextve ServiceHost sınıflarını ServiceDescriptionkullanarak sağlar.

Bu örnekte, istemci bir konsol uygulamasıdır (.exe) ve hizmet Internet Information Services (IIS) tarafından barındırılır.

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Bu örnekte hesap makinesi sözleşmesinin adlı IServiceDescriptionCalculatordeğiştirilmiş bir sürümü vardır. Sözleşme, adı GetServiceDescriptionInfo olan ve hizmetin temel adresini veya adreslerini ve hizmet uç noktasını veya uç noktalarını açıklayan çok satırlı bir dizeyi istemciye döndüren ek bir hizmet işlemi tanımlar.

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

GetServiceDescriptionInfo için uygulama kodu, hizmet uç noktalarını listelemek için ServiceDescription kullanır. Hizmet uç noktalarının göreli adresleri olabileceğinden, önce hizmetin temel adreslerini listeler. Tüm bu bilgileri almak için kod, Current kullanarak işlem bağlamını alır. ServiceHost ve ona ait ServiceDescription nesnesi, işlem bağlamından alınır. Hizmetin temel uç noktalarını listelemek için kod, hizmet ana bilgisayarının BaseAddresses koleksiyonu aracılığıyla yinelenir. Hizmetin hizmet uç noktalarını listelemek için kod, hizmet açıklamasının uç nokta koleksiyonu aracılığıyla yinelenir.

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

Örneği çalıştırdığınızda hesap makinesi işlemlerini ve ardından işlem tarafından GetServiceDescriptionInfo döndürülen hizmet bilgilerini görürsünüz. İstemciyi kapatmak için istemci penceresinde ENTER tuşuna basın.

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.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.