BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

297

W WCF istnieje kilka różnych rodzajów powiązań opartych na HTTP:

Jakie są różnice między tymi 3?

W szczególności jakie są różnice pod względem funkcji / wydajności i kompatybilności?

Mubashar
źródło
44
[BasicHttpBinding = Soap 1.1], [WsHttpBinding = Soap 1.2], [WebHttpBinding = Rest]
Frank Myat Thu
Porównanie dwóch powiązań opartych na SOAP tutaj: basicHttpBinding vs wsHttpBinding
DavidRR

Odpowiedzi:

518

Porównujesz jabłka do pomarańczy tutaj:

  • webHttpBinding to powiązanie w stylu REST, w którym po prostu trafiasz adres URL i odzyskujesz ładunek XML lub JSON z usługi internetowej

  • basicHttpBinding i wsHttpBinding to dwa wiązania oparte na SOAP, które różnią się od REST. Zaletą SOAP jest to, że WSDL i XSD opisują usługę, jej metody i przekazywane dane bardzo szczegółowo (REST jeszcze czegoś takiego nie ma - jeszcze). Z drugiej strony nie możesz po prostu przeglądać w przeglądarce punktu końcowego WSHttpBinding i przeglądać XML - musisz użyć klienta SOAP, np. WcfTestClient lub własnej aplikacji.

Tak więc twoją pierwszą decyzją musi być: REST vs. SOAP (lub możesz odsłonić oba typy punktów końcowych ze swojej usługi - to też jest możliwe).

Następnie między basicHttpBinding i wsHttpBinding występują następujące różnice:

  • basicHttpBinding to bardzo podstawowe wiązanie - SOAP 1.1, niewiele pod względem bezpieczeństwa, niewiele więcej pod względem funkcji - ale kompatybilne z niemal każdym klientem SOAP na rynku -> świetny pod względem interoperacyjności, słaby pod względem funkcji i bezpieczeństwa

  • wsHttpBinding to pełnoprawne wiązanie, które obsługuje mnóstwo funkcji i standardów WS- * - ma o wiele więcej funkcji bezpieczeństwa, możesz korzystać z połączeń sesyjnych, możesz korzystać z niezawodnego przesyłania komunikatów, możesz używać kontroli transakcji - po prostu dużo więcej rzeczy , ale wsHttpBinding jest również o wiele * cięższy ”i dodaje dużo narzutu do wiadomości przesyłanych przez sieć

Aby uzyskać szczegółowe porównanie (w tym tabelę i przykłady kodu) między nimi, zapoznaj się z tym artykułem dotyczącym projektu kodowego: Różnice między BasicHttpBinding i WsHttpBinding

marc_s
źródło
1
Nie podejmuję tutaj żadnych decyzji, kochanie, chciałem tylko poznać różnicę, którą musisz wiedzieć, jaki jest smak pomarańczy i tego samego jabłka, dlatego zadałem to pytanie. Potrzebuję więcej informacji na temat WebHttpBinding pod względem porównań funkcji i wydajności
Mubashar
Sprawdź Google lub Bing i wyszukaj „REST vs. SOAP” - ŁADUNKI informacji tam!
marc_s
4
Jedna korekta: wsHttpBinding nie obsługuje przesyłania strumieniowego. A może coś mi brakuje? msdn.microsoft.com/en-us/library/ms730879.aspx
Andrew Shepherd
1
@Andrew Shepherd: dzięki za link i korektę - masz absolutną rację, wsHttpBinding nie obsługuje przesyłania strumieniowego .....
marc_s
@ EduardoLeón Jednym z najemców REST jest skorzystanie z funkcji wbudowanych w HTTP. Uwierzytelnianie jest wbudowane w HTTP, więc potencjalnie możesz użyć DOWOLNEGO typu dostawcy uwierzytelnienia, który chcesz. Może być tak prosty jak Basic lub NTLM, lub możesz zrobić coś bardziej zaawansowanego, który wykorzystuje tokeny OAuth / STS itp.
BrainSlugs83