Dlaczego odpowiadam:
Poświęcenie ogromnej ilości czasu na zrozumienie różnicy między tymi dwiema technologiami. Umieszczę tutaj wszystkie te punkty, które myślę: „Gdybym miał te punkty w czasie, gdy zastanawiałem się w poszukiwaniu tej odpowiedzi, to bardzo wcześniej zdecydowałem się na wybór 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 w rzeczywistości istnieją dwa style / standardy tworzenia usług sieciowych: REST (Representational State Transfer) i SOAP / WSDL. SOAP / WSDL był oryginalnym standardem, na którym zbudowano usługi sieciowe. Był jednak trudny w użyciu i miał nieporęczne formaty wiadomości (takie jak XML), które obniżały wydajność. Usługi oparte na REST szybko stały się alternatywą. Łatwiej je pisać, ponieważ wykorzystują podstawowe konstrukcje HTTP (GET, POST, PUT, DELETE) i zwykle używają mniejszych formatów wiadomości (takich jak JSON). W rezultacie usługi HTTP oparte na REST są teraz standardem dla usług pisania ściśle ukierunkowanych na Internet.
Zdefiniujmy cel interfejsu API sieci Web ASP.NET
ASP.NET Web API to technologia firmy Microsoft służąca do opracowywania usług HTTP opartych na REST. (Dawno temu zastąpił ASMX Microsoftu, który był oparty na SOAP / WSDL.) Web API ułatwia pisanie solidnych usług opartych na protokołach HTTP zrozumiałych dla wszystkich przeglądarek i urządzeń natywnych. Umożliwia to tworzenie usług wspierających aplikację i wywoływanie ich z innych aplikacji internetowych, tabletów, telefonów komórkowych, komputerów i konsol do gier. Większość aplikacji napisanych dzisiaj w celu wykorzystania stale obecnego połączenia internetowego w pewien sposób korzysta z usług HTTP.
Zdefiniujmy teraz cel WCF:
Komunikacja przez Internet nie zawsze jest najbardziej wydajnym środkiem. Na przykład, jeśli zarówno klient, jak i usługa istnieją w tej samej technologii (lub nawet na tej samej maszynie), często mogą wynegocjować bardziej efektywne środki komunikacji (takie jak TCP / IP). Deweloperzy usług stwierdzili, że dokonują tych samych wyborów, których starali się unikać. Musieliby teraz wybierać między tworzeniem wydajnych usług wewnętrznych a możliwością uzyskania szerokiego dostępu przez Internet. A jeśli musieliby obsługiwać oba, musieliby stworzyć wiele wersji swoich usług lub przynajmniej oddzielnych serwerów proxy w celu uzyskania dostępu do swojej usługi. To jest problem rozwiązany przez Microsoft za pomocą WCF .
Dzięki WCF możesz stworzyć swoją usługę bez obawy o granice. Następnie możesz pozwolić WCF martwić się o uruchomienie usługi w najbardziej efektywny sposób, w zależności od klienta wywołującego. Aby zarządzać tym zadaniem, WCF wykorzystuje koncepcję punktów końcowych. Twoja 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, zdalnie, za pomocą kolejkowania wiadomości Microsoft (MSMQ) i nie tylko. WCF umożliwia skupienie się na tworzeniu funkcjonalności usługi. Martwi się, jak najskuteczniej rozmawiać z klientami dzwoniącymi. W ten sposób pojedyncza usługa WCF może skutecznie obsługiwać wiele różnych typów klientów.
Przykład WCF:
Rozważ przykład:
Dane klientów są udostępniane między aplikacjami. Każda aplikacja może być napisana na innej platformie i może istnieć w innej lokalizacji. Możesz wyodrębnić interfejs klienta do usługi WCF, która zapewnia wspólny dostęp do udostępnionych danych klienta. Centralizuje to dane, ogranicza powielanie, eliminuje synchronizację i upraszcza zarządzanie. Ponadto za pomocą WCF można skonfigurować punkty końcowe usługi tak, aby działały w sposób odpowiedni dla klienta wywołującego. Rysunek pokazuje poprzedni przykład ze scentralizowanym dostępem do danych klientów w usłudze WCF.
Wniosek:
i) Kiedy wybrać interfejs API sieci Web:
Nie można zaprzeczyć, że usługi HTTP oparte na REST, takie jak te utworzone przy użyciu ASP.NET Web API, stały się standardem do budowania usług sieciowych. Usługi te oferują łatwe i proste podejście dla programistów tworzących usługi internetowe. Programiści WWW rozumieją HTTP GET i POST, dzięki czemu dobrze dostosowują się do tego rodzaju usług. Dlatego jeśli piszesz usługi ściśle ukierunkowane na HTTP , logicznym wyborem jest ASP.NET Web API.
ii) Kiedy wybrać WCF:
Technologia WCF jest przydatna, gdy trzeba obsługiwać wiele punktów końcowych usług w oparciu o różne protokoły i formaty komunikatów. Produkty takie jak Microsoft BizTalk wykorzystują WCF do tworzenia niezawodnych usług, które mogą być używane również przez Internet za pomocą różnych konfiguracji maszyna-maszyna. Jeśli jednak musisz napisać aplikację, która komunikuje się przez TCP / IP po połączeniu z lokalnym sieć i działa przez HTTP, gdy jest poza siecią, WCF jest twoją odpowiedzią .
Być ostrzeżonym:
Programiści często postrzegają WCF jako trudniejsze i bardziej skomplikowane. Dlatego jeśli nie przewidzisz potrzeby usług wieloprotokołowych, prawdopodobnie trzymasz się interfejsu API sieci Web ASP.NET.