WCF przeciwko ASP.NET Web API [zamknięte]

spędziłem kilka miesięcy, próbując zrozumieć pojęcia, WCF, i niedawno stworzyłem swoją pierwszą aplikację-usługi WCF.

walczę trochę, aby zrozumieć wszystkie ustawienia w pliku config.
Nie jestem pewien w środowisku, ale wydaje się, że można zrobić niesamowite rzeczy z nim.

na drugi dzień dowiedziałem się, że Microsoft wyszła z nową rzeczą pod nazwą ASP.NET Web API.

dlaczego ja mogę przeczytać, że jest to Rest framework bardzo proste w obsłudze i realizacji.

teraz próbuję dowiedzieć się, jakie są podstawowe różnice między 2 фреймворками, i jeśli muszę spróbować przekonwertować mój stary aplikacja usługi WCF z nowym API.

czy może ktoś proszę mi pomóc zrozumieć różnice i korzystanie z każdego?


nowy ASP.NET Web API jest kontynuacją poprzedniego WCF, Web API projekt (choć niektóre z pojęcia zmieniły).

WCF został stworzony w celu włączenia protokołu SOAP-usług. Do prostych usług RESTful lub RPCish (myślę, klienci, takie jak jQuery) ASP.NET web API powinien być dobrym wyborem.


dla nas WCF służy do SOAP i Web API REST. Chcę, aby web API wspierał SOAP. Nie korzystamy z zaawansowanych funkcji WCF. Oto porównanie z MSDN:

enter image description here


ASP.net web API-to wszystko o HTTP i REST na podstawie GET, POST, PUT, DELETE z dobrze wiedzieć ASP.net styl programowania MVC i JSON returnable; web API jest przeznaczony dla wszystkich płuc procesów i czystych składników na podstawie protokołu HTTP. Do tego, aby iść do przodu z WCF, nawet dla prostego lub jednego prostego serwisu internetowego, on przyniesie cały dodatkowy bagaż. Dla wagi lekkiej prosta obsługa dla ajax lub dynamicznych połączeń zawsze do WebApi po prostu decyduje potrzeba. To delikatnie uzupełnia i pomaga równolegle ASP.net MVC.

Sprawdź podcast: Hanselminutes podcast 264-to nie WCF swojego ojca-Wszystko o WebAPI z Glenn Block Scott Хансельман aby uzyskać więcej informacji.


w scenariuszach, które są wymienione poniżej, należy udać się na WCF:

  1. Jeśli chcesz wysłać dane z protokołów, takich jak TCP, MSMQ lub MIME
  2. Jeśli który klient po prostu wie, jak spożywać SOAP-wiadomości

WEB API-to platforma do tworzenia serwisów RESTful / HTTP.

jest tak wiele klientów, którzy nie rozumieją SOAP, jak przeglądarki, HTML5, w tych przypadkach, web API są dobrym wyborem.

nagłówek HTTP usług wskazuje, jak chronić usługi, jak przechowywać informacje w pamięci podręcznej, wpisz treść wiadomości, a ciało HTTP można określić dowolny typ zawartości, jak HTML nie tylko XML SOAP-usług.


WCF daje tak wiele z pudełka, to nawet nie jest porównywalne z niczym. Jeśli nie chcesz robić na własną realizacji (aby wymienić tylko kilka) uwierzytelniania, autoryzacji, szyfrowania, kolejki, regulacji, wiarygodnych wiadomości, prowadzenia dziennika, sesji i tak dalej. WCF - to nie tylko usługi internetowe; WCF-to platforma rozwoju SOA.


ponieważ do tej pory używałem obu, znalazłem wiele różnic między WCF i Web API. Obie technologii stosu dobrze sprawdzają się w wielu różnych scenariuszach. Dlatego nie można powiedzieć, że jest lepiej, to zależy od konfiguracji i scenariusze.

See this image to understand more differnce

Uwaga: dane nie tylko moja opinia to również będzie z innego oficjalnej strony internetowej.


masz porównanie na MSDN o tym

WCF i ASP.NET Web API

dla mnie wybór był o tym, kto klienci, i gdzie one się znajdują?

wewnątrz sieci firmy i klientów w bazie danych .NET: użyj WCF z połączeniem TCP (szybkie łącza, niż HTTP)

spoza sieci firmowej, i korzystać z różnych technologii, takich jak PHP, Python, i tak dalej: użyj Web API, REST


biznes mówiąc, do WebApi brakuje WSDL, dlatego deweloperzy muszą udokumentować wszystko ręcznie. I jeśli, na przykład, operacja WebApi zwraca listę obiektów, klient musi tworzyć obiekty ręcznie, tzn. do WebAPI naprawdę podatny na błędy definicji.

pro do Webapi jest go łatwiej niż WCF.


Co do stwierdzenia "do WebApi brakuje WSDL", istnieje kilka sposobów tworzenia klienta Rest. Jednym z popularnych rozwiązań jest Swagger UI / (Swashbukkle Nuget). To daje bogaty interfejs do zrozumienia schematu wejścia i wyjścia do punktu końcowego, REST i online-narzędzie do testowania punktów końcowych.

JSON LD (JSON Linked Documents) - jeszcze jeden nowy standard, który jeszcze bardziej poprawi doświadczenie dewelopera REST na podstawie JSON, podając schematu JSON z najlepszej semantyka.


Dlaczego ja odpowiadam:

wziąłem ogromną ilość czasu, aby zrozumieć różnicę między tymi dwoma technologiami. Postawię tutaj, wszystkie te chwile, które myślę: "gdybym miał te chwile w czasie, kiedy zastanawiałem się w poszukiwaniu tej odpowiedzi, zdecydowałem się bardzo wcześnie po wybraniu wymaganej technologii."

źródło:

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ównywać technologii ASP.NET web API i WCF, ważne jest, aby zrozumieć, że w rzeczywistości istnieją dwa style/standard dla tworzenia usług sieciowych: REST (transmisja reprezentacyjnego stanu) i SOAP/WSDL. SOAP / WSDL był oryginalnym standardem, na którym zostały zbudowane usługi sieci web. Jednak trudno go używać i ma nieporęczne formaty komunikatów (na przykład, XML), które zmniejszają wydajność. Reszta usług szybko stała się alternatywą. Łatwiej je pisać, bo używają podstawowych konstrukcji HTTP (GET, POST, PUT, DELETE) i zwykle wykorzystują mniejsze formaty komunikatów (na przykład, JSON). W wyniku eksploatacji HTTP opartych na REST teraz są standardem do pisania usług, które są ściśle ukierunkowane na dostęp do internetu.

zdefiniujmy cel ASP.NET Web API

ASP.NET Web API-jest to technologia firmy Microsoft w celu rozwoju usług sieci web HTTP opartych na REST. (Już dawno zastąpił Microsoft ASMX, który został założony na SOAP / WSDL.) Web API pozwala łatwo pisać niezawodne usługi na podstawie protokołów HTTP, którzy rozumieją wszystkie przeglądarki i własne urządzenia. Pozwala to na tworzenie pomocy technicznej aplikacji i wywoływać je z innych aplikacji internetowych, tabletów, telefonów komórkowych, komputerów PC i konsol do gier. Większość aplikacji napisanych już dziś, aby korzystać z wszędobylski połączenie internetowe, w jakiś sposób korzystają z usług HTTP.

Niech teraz ustalimy cele WCF:

komunikacja przez Internet nie zawsze jest najbardziej skutecznym środkiem. Na przykład, jeśli klient i usługa istnieją na jednej technologii (lub nawet na jednej maszynie), często mogą porozumieć się w sprawie bardziej skutecznych środkach komunikacji (takich jak TCP/IP). Deweloperzy usług odkryli, że robią ten sam wybór, którego próbowali uniknąć. Teraz będą musieli wybierać między tworzeniem skutecznych wewnętrznych usług i możliwością mieć szeroki dostęp dostęp do internetu. I, gdyby musieli obsługiwać oba, mogliby stworzyć kilka wersji swojego serwisu lub, co najmniej, poszczególne proxy w celu uzyskania dostępu do ich serwisu. to jest problem, który Microsoft postanowił z WCF.

Z WCF, możesz stworzyć swój serwis, nie dbając o granicach. Następnie możesz pozwolić WCF się martwić o najbardziej skutecznym uruchomieniu usługi w zależności od wywołującego klienta. Do zarządzania tym zadaniem WCF wykorzystuje koncepcję punktów końcowych. Wasz usługa może mieć kilka punktów końcowych (do wyboru podczas tworzenia lub po wdrożeniu). Każdy punkt końcowy określa, jak usługa może obsługiwać dzwoniącego klienta: za pośrednictwem Internetu, poprzez zdalne interakcji, poprzez kolejkowania wiadomości firmy Microsoft (MSMQ) i wiele innych. WCF pozwala skupić się na tworzeniu funkcjonalności usługi. On się martwi o tym, jak efektywnie rozmawiać z rozmówców klientami. W ten sposób Jedna usługa WCF może skutecznie wspierać wiele różnych typów klientów.

przykład WCF:

Rozważmy przykład:

dane klienta są dzielone pomiędzy aplikacjami. Każda aplikacja może być napisana na innej platformie, i może istnieć w innym miejscu. Interfejs klienta można wyodrębnić w usługę WCF, umożliwiający udostępnianie danych klienta. To centralizuje dane, zmniejsza powielanie, wyłącza synchronizację i upraszcza zarządzanie. Ponadto, za pomocą WCF, można skonfigurować punkty końcowe usługi pracować tak, jak to ma sens dla dzwoniącego klienta. Na rysunku pokazano poprzedni przykład dostępu do danych klienta w usłudze WCF.

This is how WCF serves different clients

wynik:

i) kiedy wybrać Web API:

nie można zaprzeczyć, że HTTP usług opartych na REST, takie jak utworzone za pomocą ASP.NET web API stały się standardem dla tworzenia serwisów internetowych. Usługi te oferują proste i jasne podejście do web deweloperzy usług budowlanych. Developerzy zdają sobie sprawę HTTP GET i POST, a więc, dobrze dostosowują się do tych rodzajów 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 zachować kilka punktów końcowych usługi na podstawie różnych protokołów i formatów komunikatów. Produkty, takie jak Microsoft BizTalk ramię WCF do tworzenia niezawodnych usług, z których można korzystać w Internecie, a także za pomocą różnych konfiguracji maszyna-maszyna.Jeśli, jednak, trzeba napisać aplikację, która komunikuje się przez TCP / IP po podłączeniu do sieci i działa na HTTP, kiedy poza siecią, WCF-odpowiedź.

Ostrzeżenie:

developerzy często rozważają WCF jako bardziej złożony i trudny do opracowania. Dlatego też, jeśli nie przewidujemy potrzebę dla multiprotocol usługi, prawdopodobnie trzymać ASP.NET web API.


z wcf możemy skonfigurować i udostępnić tę samą obsługę usługi dla kilku punktów końcowych, takich jak tcp, http.jeśli chcesz, aby twój serwis był założony tylko na http, wtedy lepiej iść z web API. Web API ma bardzo mniejszą konfigurację w porównaniu z wcf i trochę szybciej niż wcf. Wcf obsługuje również usługi restful. Jeśli masz ograniczenia .Net framework 3.5, twój opcja-wcf.