220 likes | 318 Views
Windows Communication Foundation. Štěpán Bechynský Developer Evangelist Microsoft s.r.o. s tepan .bechynsky@microsoft.com. Distribuované aplikace nyní. Různé technologie WSE, Remoting, RMI, EJB, COM+, JMS, ... Navzájem nekompatibilní Vývoj je závislý na zvolené technologii
E N D
Windows Communication Foundation Štěpán Bechynský Developer Evangelist Microsoft s.r.o. stepan.bechynsky@microsoft.com
Distribuované aplikace nyní • Různé technologie • WSE, Remoting, RMI, EJB, COM+, JMS, ... • Navzájem nekompatibilní • Vývoj je závislý na zvolené technologii • Při změně technologie nutný velký zásah do aplikace
Address Adresa, kde služba běží Binding Způsob komunikace služby Contract Poskytované rozhraní (metody, data) Nezávislé na AB WCF – základní koncepce
C C C B B B A A A Address, Binding, Contract Klient Služba Zpráva Address Binding Contract (Kde) (Jak) (Co)
Contract – typy • Service • Popisuje poskytované služby • Data • Popisuje strukturu poskytovaných dat • Message • Modifikuje strukturu SOAP zprávy
Service Contract – typy • Request – Response • OneWay • Bez odpovědi • Duplex • Asynchronní metody • Nelze použít pro všechny typy Bindings • Fault • Chyba, kterou nelze ošetřit na serveru
Service Contract – kód [ServiceContract] public interface ICalculator { [OperationContract] ComplexProblem SolveProblem (ComplexProblem p); }
Data Contract – kód [DataContract] public class ComplexNumber { [DataMember] public double Real = 0.0D;[DataMember] public double Imaginary = 0.0D; public ComplexNumber(double r, double i) { this.Real = r; this.Imaginary = i; } }
Message Contract – kód [MessageContract] public class ComplexProblem { [MessageHeader] public string operation; [MessageBody]public ComplexNumber n1; [MessageBody]public ComplexNumber n2; [MessageBody]public ComplexNumber solution; // Constructors… }
Binding – přehled T = Transport Security | S = WS-Security Message Security
Binding – konfigurace <?xml version="1.0" encoding="utf-8" ?> <configuration xmlns= "http://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.serviceModel> <services> <service type="CalculatorService"> <endpoint address=“http://localhost/calculator" binding="basicHttpBinding" contractType="ICalculator" /> </service> </services> </system.serviceModel> </configuration>
Hostování služeb • ServiceHost using(ServiceHost host = new ServiceHost( serviceType, baseAdresses)) { host.Open(); … host.Close(); } • IIS • Service.svc <%@ServiceHost Service="serviceType" %>
Hostování služby ServiceHost
Behaviors – chování služby • Vývojář • Concurrency • Instancing • Správce • Throttling • Metadata exposure
Instancing • Per call • Pro každý požadavek nová instance • Singleton • Pro všechny požadavky jedna instance • Private Session • Co klient to jedna instance • Shared Session • Pro skupinu klientů jedna instance
Throttling <service type="Calculator" behaviorConfiguration="CalculatorBehavior"> <!-- endpoint definitions /--> </service> <behaviors> <behavior configurationName="CalculatorBehavior"> <serviceThrottling maxConcurrentCalls="10" maxConnections="10" maxInstances="10" maxPendingOperations="10" /> </behavior> </behaviors>
Behaviors Publikace metadat
Vytvoření klienta • Proxy • Konfigurace • svcutil
Závěr Address Binding Contract