Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A ServiceDescription minta bemutatja, hogy egy szolgáltatás hogyan tudja lekérni a szolgáltatás leírási adatait futásidőben. A minta az első lépéseken alapul, és egy további szolgáltatásművelet van meghatározva, amely leíró információkat ad vissza a szolgáltatásról. A visszaadott információk a szolgáltatás alapcímeit és végpontjait sorolják fel. A szolgáltatás ezeket az információkat a , OperationContextés ServiceHost osztályok ServiceDescriptionhasználatával biztosítja.
Ebben a mintában az ügyfél egy konzolalkalmazás (.exe), és a szolgáltatást az Internet Information Services (IIS) üzemelteti.
Megjegyzés:
A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.
Ez a minta a kalkulátorszerződés módosított verzióját használja IServiceDescriptionCalculator. A szerződés egy további szolgáltatásműveletet határoz meg, GetServiceDescriptionInfo amely egy többsoros sztringet ad vissza az ügyfélnek, amely leírja a szolgáltatás alapcímét, címét és szolgáltatásvégpontjait vagy végpontjait.
[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();
}
A megvalósítási GetServiceDescriptionInfo kód a ServiceDescription szolgáltatásvégpontok listázására szolgál. Mivel a szolgáltatásvégpontok relatív címekkel rendelkezhetnek, először felsorolja a szolgáltatás alapcímeit. Az összes információ lekéréséhez a kód Current használatával lekéri a műveleti környezetét. A ServiceHost és annak ServiceDescription objektuma a műveleti környezetből van lekérve. A szolgáltatás alapvégpontjainak listázásához a kód végigmegy a szolgáltatásgazda BaseAddresses gyűjteményén. A szolgáltatás szolgáltatásvégpontjainak listázásához a kód végigvezeti a szolgáltatás leírásának végpontgyűjteményén.
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;
}
A minta futtatásakor megjelennek a számológép műveletei, majd a művelet által visszaadott GetServiceDescriptionInfo szolgáltatásadatok. Nyomja le az ENTER billentyűt az ügyfélablakban az ügyfél leállításához.
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.
A példa beállítása, elkészítése és futtatása
Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.
A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.
Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.