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
Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.
Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.
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.