Adres
Adres wskazuje gdzie znajduje się nasz serwis składa się z 4 składowych: schema, nazwa hosta, portu, ścieżki (przeważnie nazwa serwisu). Przykład: http://www.contoso.com/OrderService/
Binding
Binding definiuje sposób, w jaki będzie można się dostać do serwisu. Są to elementy takie jak protokół, SSL. WCF udostępnia domyślnie kilka predefiniowanych możliwości komunikacji:
- basicHttpBinding - HTTP, HTTPS, MTOM
- wsHttpBinding - HTTP, HTTPS, MTOM - oferuje niezawodność, tranzakcyjność, bezpieczeństwo
- wsDualHttpBinding - dwukierunkowa komunikacja
- webHttpBinding - przekazuje dane przez HTTP lub HTTPS nie korzystając z formatu protokołu SOAP - przydatny w przypadku gdy klient nie wymaga protokołu SOAP
- wsFederationHttpBinding - zapewnia bezpieczeństwo pomiędzy różnymi systemami autoryzacji i autentykacji
- netTcpBinding - przesyłanie danych po TCP
- netNamedPipeBinding - jeżeli serwis będzie używany na jednym komputerze
- netMsmqBinding - komunikacja pomiędzy dwoma komputerami
- netPeerTcpBinding - komunikacja Peer-To-Peer pomiędzy komputerami
- msmqIntegrationBinding - dla istniejących aplikacji napisanych w C++ używających do komunikacji MSMQ
- basicHttpContextBinding - wsparcie plików cookie dla protokołu HTTP
- netTcpContextBinding, netTcpContextBinding, wsHttpContextBinding - umożliwia użycie nagłówka w celu wymiany komunikatów
Contract
Określa operacje udostępniane przez serwis i jest to przeważnie nazwa interfejsu poprzedzona przestrzenią nazw.
Powyższe składowe można zadeklarować zarówno w kodzie jak i konfiguracji XML. XML jest preferowanym sposobem, gdyż w przypadku zmiany np. adresu nie ma konieczności kompilowania całej aplikacji od początku, a jedyna zmiana będzie dotyczyła pliku konfiguracyjnego.
Przykład konfiguracji w XML:
Code:
Dla jednego serwisu można skonfigurować wiele sposobów komunikacji (endpoint), tak więc do jego serwisu możemy odnosić się poprzez protokół HTTP, TCP czy też inny sposób. W tym przypadku należy pamiętać tylko o tym, aby każdy z tych sposobów posiadał inny adres ekspozycji serwisu.
Aby sobie ułatwić pracę podczas definiowania wielu adresów, można skorzystać z właściwości base address i dodać do listy, bazowe adresy, które następnie zostaną uzupełnione odpowiednią końcówką. Uwaga! w przypadku hostowania na IIS bazowe adresy nie są brane pod uwagę, gdyż są mapowane na ścieżkę wirtualną do katalogu gdzie znajdują się pliki serwisu.
W przypadku adresu bazowego WCF rozpoznaje z jakim bindingiem ma do czynienia a następnie dobiera odpowiedni adres z dostępnej listy.
Przykład takiej konfiguracji:
Code:
Oraz konfiguracja w kodzie C#:
Code:
Publikowanie metadanych
Metadane publikujemy za pomocą bindowania o typie mexHttpBinding. Metadane możemy pobrać dla serwisu za pomocą składni: nazwa_serwisu.svc?wsdl. Definiowanie w XML:
Code:
I to samo w kodzie:
Code:
Brak komentarzy:
Prześlij komentarz