Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka ASMX ukazuje, jak vytvořit službu pomocí technologie Windows Communication Foundation (WCF) a pak přistupovat ke službě z klienta jiného než WCF, například z klienta ASMX.
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Tato ukázka se skládá z programu konzoly klienta (.exe) a knihovny služeb (.dll) hostované službou IIS (Internet Information Services). Služba implementuje kontrakt, který definuje komunikační vzor žádosti a odpovědi. Kontrakt je definován ICalculator rozhraním, které zveřejňuje matematické operace (Add, Subtract, Multiply, a Divide). Klient ASMX provádí synchronní požadavky na matematickou operaci a služba odpoví výsledkem.
Služba implementuje ICalculator kontrakt definovaný v následujícím kódu.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"), XmlSerializerFormat]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
Typy DataContractSerializer a XmlSerializer mapují CLR na reprezentaci XML.
DataContractSerializer interpretuje některé reprezentace XML jinak než XmlSerializer. Generátory proxy jiných než WCF, například Wsdl.exe, generují více použitelné rozhraní při použití XmlSerializer. Je použito XmlSerializerFormatAttribute na rozhraní ICalculator, aby bylo zajištěno, že se pro mapování typů CLR na XML používá XmlSerializer. Implementace služby vypočítá a vrátí odpovídající výsledek.
Služba zveřejňuje jeden koncový bod pro komunikaci se službou definovanou pomocí konfiguračního souboru (Web.config). Koncový bod se skládá z adresy, vazby a kontraktu. Služba zveřejňuje koncový bod na základní adrese poskytované hostitelem Internetové informační služby (IIS). Atribut binding je nastaven na basicHttpBinding, který poskytuje komunikaci HTTP pomocí protokolu SOAP 1.1, který je kompatibilní s WS-I BasicProfile 1.1, jak je znázorněno v následující ukázkové konfiguraci.
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by the host: http://localhost/servicemodelsamples/service.svc. -->
<endpoint address=""
binding="basicHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</service>
</services>
Klient ASMX komunikuje se službou WCF pomocí zadaného proxy serveru, který je generován nástrojem WSDL (Web Services Description Language) (Wsdl.exe). Zadaný proxy server je obsažen v souboru generatedClient.cs. Nástroj WSDL načte metadata pro zadanou službu a vygeneruje typ proxy pro použití klientem ke komunikaci. Ve výchozím nastavení architektura nezpřístupňuje žádná metadata. Pokud chcete zpřístupnit metadata potřebná ke generování proxy serveru, musíte přidat <serviceMetadata> a nastavit jeho httpGetEnabled atribut tak, jak True je znázorněno v následující konfiguraci.
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<!-- Setting httpGetEnabled to True on the serviceMetadata
behavior exposes the service's wsdl at <base address>?wsdl :
http://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
Spuštěním následujícího příkazu z příkazového řádku v klientském adresáři vygenerujte zadaný proxy server.
wsdl /n:Microsoft.ServiceModel.Samples /o:generatedClient.cs /urlkey:CalculatorServiceAddress http://localhost/servicemodelsamples/service.svc?wsdl
Pomocí vygenerovaného zadaného proxy serveru má klient přístup k danému koncovému bodu služby tím, že nakonfiguruje příslušnou adresu. Klient používá konfigurační soubor (App.config) k určení koncového bodu, se kterým má komunikovat.
<appSettings>
<add key="CalculatorServiceAddress"
value="http://localhost/ServiceModelSamples/service.svc"/>
</appSettings>
Implementace klienta vytvoří instanci zadaného proxy serveru pro zahájení komunikace se službou.
// Create a client to the CalculatorService.
using (CalculatorService client = new CalculatorService())
{
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = client.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
// Call the Subtract service operation.
value1 = 145.00D;
value2 = 76.54D;
result = client.Subtract(value1, value2);
Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result);
// Call the Multiply service operation.
value1 = 9.00D;
value2 = 81.25D;
result = client.Multiply(value1, value2);
Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result);
// Call the Divide service operation.
value1 = 22.00D;
value2 = 7.00D;
result = client.Divide(value1, value2);
Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result);
}
Console.WriteLine();
Console.WriteLine("Press <ENTER> to terminate client.");
Console.ReadLine();
Při spuštění ukázky se požadavky na operace a odpovědi zobrazí v okně konzoly klienta. Stisknutím klávesy ENTER v okně klienta klienta ukončete klienta.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Jak nastavit, sestavit a spustit ukázku
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.
Poznámka:
Další informace o předávání a vracení složitých datových typů naleznete v tématu: Datové vazby v klientovi Modelu Windows Forms, datové vazby v klientovi windows Presentation Foundation a datové vazby v klientovi ASP.NET.