Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O exemplo ServiceDescription demonstra como um serviço pode recuperar a sua informação de descrição de serviço em tempo de execução. O exemplo é baseado em Introdução, com uma operação de serviço adicional definida para retornar informações descritivas sobre o serviço. As informações retornadas listam os endereços base e os pontos de extremidade do serviço. O serviço fornece essas informações usando as OperationContextclasses , ServiceHoste ServiceDescription .
Neste exemplo, o cliente é um aplicativo de console (.exe) e o serviço é hospedado pelo IIS (Serviços de Informações da Internet).
Observação
O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.
Este exemplo tem uma versão modificada do contrato da calculadora chamada IServiceDescriptionCalculator. O contrato define uma operação de serviço adicional denominada GetServiceDescriptionInfo que retorna uma string multilinha ao cliente, descrevendo o endereço ou endereços base e o ponto ou pontos de extremidade do serviço.
[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();
}
O código de implementação para GetServiceDescriptionInfo usa o ServiceDescription para listar os pontos de extremidade de serviço. Como os pontos de extremidade de serviço podem ter endereços relativos, primeiro são listados os endereços base para o serviço. Para obter todas essas informações, o código obtém seu contexto de operação usando Current. O ServiceHost e seu ServiceDescription objeto são recuperados do contexto da operação. Para listar os pontos de extremidade base para o serviço, o código percorre a coleção do host de serviço BaseAddresses. Para listar os endpoints de serviço, o código percorre a coleção de endpoints da descrição do serviço.
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;
}
Quando executas o exemplo, observas as operações da calculadora e, em seguida, as informações de serviço GetServiceDescriptionInfo retornadas pela operação. Pressione ENTER na janela do cliente para desligar o cliente.
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.
Para configurar, compilar e executar o exemplo
Verifique se você executou o procedimento de instalação do One-Time para os exemplos do Windows Communication Foundation.
Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.
Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.