Adres definiuje, gdzie serwis jest hostowany. WCF wspiera różne sposoby przesyłania danych, a co za tym idzie różne są rodzaje adresów. Poniższa tabela przedstawia sposoby adresowania w WCF.
Technologia | Przykładowy adres | Opis |
---|---|---|
HTTP | http://localhost:8001 | Najczęściej używany tekstowy sposób przesyłania danych, dane przeważnie w XML lub JSON |
HTTPS | https://localhost:8001 | Bezpieczny sposób przesyłania danych po HTTP. Szyfrowanie za pomocą TLS lub SSL. |
TCP Peer network | net.tcp://localhost:8002/Service1, net.p2p://localhost/ | Bardzo szybki sposób przesyłania danych w formacie binarnym. |
IPC (Inter-process communication over named pipes) | net.pipe://localhost/PipeService1 | Szybki sposób przesyłania danych w obrębie jednej maszyny (współdzielona pamięć). |
MSMQ (Microsoft Message Queue) | net.msmq://localhost | Wiadomości wysyłane przez klienta są kolejkowane. Użyteczny sposób dla scenariuszy, w których istnieje możliwość rozłączenia klienta z serwerem. |
Kluczowym elementem architektury WCF jest binding, odpowiadający na pytanie "jak?". Główne obszary, jakie definiuje binding to protokół transportu danych, format wiadomości oraz szczegóły przesyłania wiadomości specyficzne dla danego protokołu. WCF udostępnia szereg protokołów, niemniej jednak zawsze istnieje możliwość zdefiniowania własnego.Poniżej przedstawiono listę bindingów dostarczanych przez WCF. Te, które rozpoczynają się od przedrostka "net" są dedykowane dla technologii .NET, z kolei bindingi rozpoczynające się od "ws" reprezentują ogólnie przyjęte standardy implementowane w wielu technologiach.
Binding | Opis |
---|---|
basicHttpBinding | Wiadomości przesyłane po Http i zakodowane w Utf-8. Oparte na WS-I profile. |
webHttpBinding | Serwisy wystawiane jako requesty Http, format XML lub JSON umożliwia tworzenie serwisów w oparciu o wzorzec REST. |
wsHttpBinding | Korzysta z zaawansowanych profili WS-*, takich jak WS-Security, WS-Transactions, WS-BusinessActivity, etc. |
wsDualHttpBinding | Korzysta z tych samych profili, co wsHttpBinding ale wspiera komunikację typu duplex. |
wsFederationHttpBinding | Profile WS-* rozszerzone o federated identity. |
netTcpBinding | Wiadomości binarne przesyłane po TCP. Wymaga, aby obie strony korzystały z WCF. |
netNamedPipeBinding | Zoptymalizowany pod kątem komunikacji w obrębie jednej maszyny. |
netPeerTcpBinding | Komunikacja po TCP z wykorzystaniem technologii P2P. |
netMsmqBinding | Asynchroniczna komunikacja z wykorzystaniem kolejki komunikatów. |
Bindingi można ustawiać w sposób proceduralny...
ServiceHost host = new ServiceHost(typeof(EvaluationService)); host.AddServiceEndpoint(typeof (IEvaluationService), new BasicHttpBinding(), "http://localhost:8080/evals/");
...ale znacznie wygodniej jest robić to w ustawieniach projektu (App.config lub Web.config), gdzie mamy do dyspozycji narzędzie wbudowane w Visual Studio.
W oknie tym możemy ustawić behavior dla określonego typu bindingu zmieniając domyślne parametry. Po zamknięciu okna zmiany zostaną przeniesione do pliku XML z konfiguracją. Na przykład:
<configuration> <system.web> <compilation debug="true" /> </system.web> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="MyBindingConfiguration" allowCookies="true" /> </wsHttpBinding> </bindings> <services> <service name="EvaluationServiceLibrary.EvaluationService"> <endpoint address="/evals/" binding="wsHttpBinding" bindingConfiguration="MyBindingConfiguration" contract="EvaluationServiceLibrary.IEvaluationService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8732/" /> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="True"/> <serviceDebug includeExceptionDetailInFaults="False" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
Brak komentarzy:
Prześlij komentarz