WCF vs ASP.NET Web API [zamknięty]

Spędziłem kilka miesięcy próbując zrozumieć koncepcje stojące za WCF, a ostatnio opracowałem moją pierwszą aplikację usługową WCF.

Ciężko mi było zrozumieć wszystkie ustawienia w pliku konfiguracyjnym.
Nie jestem przekonany co do środowiska, ale wydaje się, że można z nim zrobić niesamowite rzeczy.

Pewnego dnia dowiedziałem się, że Microsoft wyszedł z nową rzeczą o nazwie ASP.NET Web API .

Dla tego co mogę przeczytać to jest spokojny framework , bardzo łatwy w użyciu i wdrożeniu.

Teraz próbuję dowiedzieć się, jakie są główne różnice między 2 frameworkami i czy powinienem spróbować przekonwertować moją starą aplikację usługową WCF z nowym API.

Czy ktoś mógłby mi pomóc zrozumieć różnice i wykorzystanie każdego z nich?

Author: Uwe Keim, 2012-02-19

11 answers

Nowy ASP.NET Web API jest kontynuacją poprzedniego projektu WCF Web API (chociaż niektóre koncepcje zmieniły się ).

WCF został pierwotnie stworzony, aby umożliwić usługi oparte na SOAP. Dla prostszych usług RESTful lub RPCish (pomyśl o klientach takich jak jQuery) ASP.NET Web API powinno być dobrym wyborem.

 167
Author: marcind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-14 01:12:38

Dla nas WCF jest używany dla SOAP i Web API dla REST. Szkoda, że Web API nie obsługuje SOAP. Nie korzystamy z zaawansowanych funkcji WCF. Oto porównanie z MSDN :

Tutaj wpisz opis obrazka

 228
Author: Manish Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-02 18:20:06

ASP.net Web API jest o HTTP i REST oparte GET, POST,PUT, DELETE z dobrze wiedzieć ASP.net styl programowania MVC i JSON; web API jest dla wszystkich lekkich procesów i czystych komponentów opartych na HTTP. Dla jednego, aby przejść do przodu z WCF nawet dla prostej lub najprostszej pojedynczej usługi internetowej przyniesie cały dodatkowy bagaż. Dla lekkiej prostej usługi dla połączeń ajax lub dynamicznych zawsze WebApi po prostu rozwiązuje potrzebę. To starannie uzupełnia lub pomaga równolegle do ASP.net MVC.

[[0]} Sprawdź Podcast: Hanselminutes Podcast 264-to nie jest WCF twojego ojca - wszystko o WebAPI z Glenn Block Scott Hanselman aby uzyskać więcej informacji.
 77
Author: Naveen Vijay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-03 20:42:01

W scenariuszach wymienionych poniżej powinieneś wybrać WCF:

  1. Jeśli potrzebujesz wysłać dane na protokołach takich jak TCP, MSMQ lub MIME
  2. Jeśli konsumujący klient po prostu wie, jak konsumować wiadomości SOAP

WEB API jest frameworkiem do tworzenia usług RESTful / HTTP.

Jest tak wielu klientów, którzy nie rozumieją przeglądarki SOAP, HTML5, w takich przypadkach interfejsy API są dobrym wyborem.

Nagłówek usługi HTTP określa jak zabezpieczyć usługę, jak buforowanie informacji, typu treści wiadomości i treści HTTP może określać dowolny typ treści, np. HTML, a nie tylko XML jako usługi SOAP.

 62
Author: Kris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-07 19:40:53

WCF da ci tyle z pudełka, że nie jest nawet porównywalny z niczym. Chyba że chcesz zrobić na własną implementację (by wymienić tylko kilka) uwierzytelniania, autoryzacji, szyfrowania, kolejkowania, dławienia, niezawodnego przesyłania wiadomości, logowania, sesji i tak dalej. WCF nie jest [tylko] usługami sieciowymi; WCF jest platformą programistyczną dla SOA.

 32
Author: tridy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-02 10:42:16

Odkąd używałem obu do tej pory, znalazłem wiele różnic między WCF a Web API. Obie technologie dobrze sprawdzają się w różnych scenariuszach. Nie można więc powiedzieć, który jest lepszy, zależy to od konfiguracji i scenariusza.

Zobacz ten obrazek, aby zrozumieć więcej różnic

Uwaga: dane są nie tylko moim zdaniem jest to również zbierane z innych oficjalnej stronie internetowej.

 28
Author: Rajput,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-07 06:57:23

Jest porównanie na MSDN o tym

WCF i ASP.NET Web API

Dla mnie wybór polegał na tym, kim są klienci i gdzie się znajdują?

W sieci firmowej i klientach bazujących na. Net : użyj WCF z wiązaniem TCP (szybka komunikacja niż HTTP)

Poza siecią firmową i używaj różnych technologii, takich jak PHP, Python itp: używaj Web API z REST

 9
Author: Arshad Mohammad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 01:31:10

Mówiąc o biznesie, WebApi nie ma WSDL, więc programiści powinni udokumentować wszystko ręcznie. I jeżeli na przykład operacja WebApi zwróci listę obiektów, wtedy klient powinien wytworzyć obiekty ręcznie, tzn. WebAPI jest naprawdę podatne na błędy definicji.

Pro Webapi jest bardziej lekki niż WCF.

 7
Author: magallanes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-04 12:33:34

Odnośnie stwierdzenia "brak WebApi WSDL" istnieje kilka sposobów na wygenerowanie klienta Rest. Jednym z popularnych podejść jest Swagger UI / (Swashbukkle Nuget). Daje to bogaty interfejs do zrozumienia schematu wejściowego i wyjściowego punktu końcowego reszty oraz narzędzie online do testowania punktów końcowych.

JSON LD (JSON Linked Documents) jest kolejnym nowym standardem, który jeszcze bardziej poprawi doświadczenie programistów REST opartych na JSON, ujawniając schemat JSON z lepszą semantyką.

 6
Author: Venkatesh Muniyandi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-13 06:34:27

Dlaczego odpowiadam:

Poświęciłem wiele czasu, aby zrozumieć różnicę między tymi dwoma technologiami. Umieszczę tutaj wszystkie te punkty, które myślę :" gdybym miał te punkty w czasie, gdy zastanawiałem się wokół w poszukiwaniu tej odpowiedzi, to zdecydowałem się bardzo wcześniej w wyborze mojej wymaganej technologii."

Źródło informacji:

Microsoft ® Visual Studio® 2015 Unleashed

ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3

Dlaczego ASP.NET Web API i WCF:

Przed porównaniem technologii ASP.NET Web API i WCF, ważne jest, aby zrozumieć, że istnieją w rzeczywistości dwa style / standardy tworzenia usług internetowych: REST (Representational State Transfer) i SOAP / WSDL. SOAP / WSDL był oryginalnym standardem, na którym zostały zbudowane Usługi internetowe. Jednak był trudny w użyciu i miał nieporęczne formaty wiadomości (takie jak XML), które pogarszały wydajność. Usługi oparte na odpoczynku szybko stały się alternatywą. Są łatwiejsze do napisania ponieważ wykorzystują podstawowe konstrukcje HTTP (GET, POST, PUT, DELETE) i zazwyczaj używają mniejszych formatów wiadomości (takich jak JSON). W rezultacie usługi HTTP oparte na REST są obecnie standardem tworzenia usług ściśle ukierunkowanych na sieć.

Zdefiniujmy cel ASP.NET Web API

ASP.NET Web API to technologia firmy Microsoft do tworzenia opartych na REST usług internetowych HTTP. (To dawno temu zastąpił ASMX Microsoftu, który był oparty na SOAP / WSDL.) Web API ułatwia pisanie niezawodne usługi oparte na protokołach HTTP, które rozumieją wszystkie przeglądarki i rodzime urządzenia. Umożliwia to tworzenie usług obsługujących Twoją aplikację i wywoływanie ich z innych aplikacji internetowych, tabletów, telefonów komórkowych, komputerów PC i konsol do gier. Większość aplikacji napisanych dzisiaj, aby wykorzystać obecne połączenie internetowe, korzysta w jakiś sposób z usług HTTP.

Zdefiniujmy teraz cel WCF:

[2]}komunikacja przez Internet nie zawsze jest najskuteczniejszym środkiem. Na na przykład, jeśli zarówno klient, jak i usługa istnieją na tej samej technologii (lub nawet na tej samej maszynie), często mogą wynegocjować bardziej wydajne środki komunikacji (takie jak TCP/IP). Twórcy usług sami podejmowali te same decyzje, których starali się unikać. Musieliby teraz wybierać między tworzeniem efektywnych usług wewnętrznych a uzyskaniem szerokiego dostępu do Internetu. A gdyby mieli obsługiwać oba, być może musieliby stworzyć wiele wersji swoich usługi lub przynajmniej oddzielne proxy do uzyskiwania dostępu do ich usługi. To jest problem, który Microsoft rozwiązał z WCF. Dzięki WCF możesz tworzyć swoje usługi bez obaw o granice. Możesz wtedy pozwolić WCF martwić się o prowadzenie usługi w najbardziej efektywny sposób, w zależności od klienta dzwoniącego. Do zarządzania tym zadaniem WCF wykorzystuje koncepcję punktów końcowych. Usługa może mieć wiele punktów końcowych (skonfigurowanych w czasie projektowania lub po wdrożeniu). Każdy punkt końcowy wskazuje, w jaki sposób usługa może obsługiwać klienta wywołującego: przez Internet, przez remoting, przez Microsoft Message Queuing (MSMQ) i inne. WCF pozwala skupić się na tworzeniu funkcjonalności serwisu. Martwi się o to, jak najefektywniej rozmawiać z dzwoniącymi klientami. W ten sposób jedna usługa WCF może skutecznie obsługiwać wiele różnych typów klientów.

Przykład WCF:

Rozważ przykład:

Dane klienta są udostępniane między aplikacjami. Każda aplikacja może być napisane na innej platformie i może istnieć w innym miejscu. Interfejs klienta można wyodrębnić do usługi WCF, która zapewnia wspólny dostęp do wspólnych danych Klienta. Scentralizuje to dane, ogranicza powielanie, eliminuje synchronizację i upraszcza zarządzanie. Ponadto, korzystając z WCF, można skonfigurować punkty końcowe usługi tak, aby działały w sposób, który ma sens dla klienta wywołującego. Rysunek przedstawia przykład z poprzedniego z scentralizowanym dostępem do danych Klienta w serwis WCF.

W ten sposób WCF obsługuje różnych klientów

Wniosek:

I) kiedy wybrać Web API:

Nie da się zaprzeczyć, że oparte na REST usługi HTTP, takie jak te tworzone przy użyciu ASP.NET Web API stały się standardem budowania usług internetowych. Usługi te oferują łatwe, proste podejście do tworzenia usług dla programistów internetowych. Twórcy stron internetowych rozumieją HTTP GET I POST, a tym samym dobrze dostosowują się do tego typu usług. Dlatego, jeśli piszesz usługi ściśle ukierunkowane na HTTP , ASP.NET Web API jest logicznym wyborem.

Ii) Kiedy wybrać WCF:

Technologia WCF jest przydatna, gdy trzeba obsługiwać wiele punktów końcowych usług opartych na różnych protokołach i formatach wiadomości. Produkty takie jak Microsoft BizTalk wykorzystują WCF do tworzenia solidnych usług, które mogą być używane w Internecie, a także za pośrednictwem różnych konfiguracji Maszyna-Maszyna.Jeśli jednak musisz napisać aplikację, która komunikuje się przez TCP / IP po podłączeniu do sieci lokalnej i działa przez HTTP, gdy poza siecią, WCF jest twoją odpowiedzią .

Ostrzegam:

Web developerzy często postrzegają WCF jako trudniejsze i bardziej złożone do rozwinięcia. W związku z tym, jeśli nie przewidujesz potrzeby usług multiprotocol, prawdopodobnie pozostaniesz przy ASP.NET Web API.

 1
Author: Wiqi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 22:37:33

Z wcf możemy skonfigurować i udostępnić tę samą obsługę usługi dla wielu punktów końcowych, takich jak tcp, http.jeśli chcesz, aby Twoja usługa była oparta tylko na http, lepiej będzie przejść z web API. Web API ma znacznie mniejszą konfigurację w porównaniu do wcf i jest nieco szybsze niż wcf. Wcf wspiera również usługi restful. Jeśli masz ograniczenie. Net framework 3.5 to twoją opcją jest wcf.

 0
Author: Nayas Subramanian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-18 17:17:08