Směrování podle těla

Ukázka RouteByBody ukazuje, jak implementovat službu, která přijímá objekty zpráv s libovolnou akcí SOAP. Tato ukázka vychází ze služby Začínáme , která implementuje službu kalkulačky. Služba implementuje jednu Calculate operaci, která přijímá Message parametr požadavku a vrací Message odpověď.

V této ukázce je klient konzolovou aplikací (.exe) a služba je hostovaná ve službě IIS.

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Ukázka ukazuje odesílání zpráv na základě základního obsahu. Integrovaný mechanismus odesílání zpráv modelu služby WCF (Windows Communication Foundation) je založený na akcích zpráv. Existuje však mnoho existujících webových služeb, které definují všechny své operace pomocí action=". Není možné vytvořit službu založenou na WSDL, která udržuje odesílání zpráv požadavků na základě informací o akci. Tato ukázka ukazuje kontrakt služby, který je založený na WSDL (WSDL je obsažen ve službě Service.wsdl, která je součástí ukázky). Smlouva o službě je Kalkulačka, podobně jako ta používaná v části Začínáme. Avšak [OperationContract] určuje Action="" pro všechny operace.

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples"),
                 XmlSerializerFormat, DispatchByBodyBehavior]
    public interface ICalculator
    {
        [OperationContract(Action="")]
        double Add(double n1, double n2);
        [OperationContract(Action = "")]
        double Subtract(double n1, double n2);
        [OperationContract(Action = "")]
        double Multiply(double n1, double n2);
        [OperationContract(Action = "")]
        double Divide(double n1, double n2);
    }

Vzhledem k kontraktu služba vyžaduje vlastní chování DispatchByBodyBehavior při odesílání, které umožňuje odesílání zpráv mezi operacemi. Toto chování při odesílání inicializuje DispatchByBodyElementOperationSelector selektor operací s tabulkou názvů operací podle QName příslušných elementů obálky. DispatchByBodyElementOperationSelector vyhledá počáteční značku prvního podřízeného prvku Body a určí operaci pomocí dříve zmíněné tabulky.

Klient používá automaticky vygenerovaný proxy server z WSDL exportovaného službou pomocí nástroje ServiceModel Metadata Utility (Svcutil.exe).

svcutil.exe  /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples /uxs http://localhost/servicemodelsamples/service.svc?wsdl /out:generatedProxy.cs

Skutečnost, že akce všech operací jsou prázdné, nemá žádný vliv na kód klienta s výjimkou parametrů akce v automaticky generovaném proxy serveru.

Kód klienta provádí několik výpočtů. 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

  1. Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.

  2. Pro sestavení řešení postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.

  3. 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.