Jakie są różnice między WCF i ASMX web services?

Jestem całkowicie zdezorientowany między WCF i ASMX web services. Korzystałem z wielu serwisów internetowych na moim wcześniejszym etapie, a teraz pojawiła się nowa rzecz o nazwie WCF. Nadal mogę stworzyć WCF, który będzie funkcjonował jako serwis internetowy. Myślę, że będzie więcej rzeczy w WCF.

Jakie są różnice między WCF a Web services? Kiedy należy stosować każdy z nich?

Author: hichris123, 2010-03-15

5 answers

[[0]}Keith Elder ładnie porównuje ASMX do WCF tutaj. Zobacz też

Kolejne porównanie ASMX i WCF można znaleźć tutaj - nie zgadzam się w 100% ze wszystkimi tam punktami, ale to może dać ci pomysł.

WCF jest w zasadzie "ASMX na stereoidach" - może to być wszystko, co ASMX może-plus o wiele więcej!.

ASMX to:

  • łatwy i prosty w zapisie i konfiguracji
  • dostępne tylko w IIS
  • tylko z HTTP

WCF może być:

    Hostowanie w IIS, usłudze Windows, aplikacji Winforms, aplikacji konsolowej - masz całkowitą swobodę]}
  • używany z HTTP( REST i SOAP), TCP/IP, MSMQ i wieloma innymi protokołami

W skrócie: WCF jest tutaj, aby całkowicie zastąpić ASMX.

Sprawdź centrum programistyczne WCF na MSDN .

Update: link wydaje się martwy-spróbuj tego: Co To Jest Windows Communication Foundation?

 372
Author: marc_s,
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-05-12 20:23:16

ASMX Web services mogą być wywoływane tylko przez HTTP (tradycyjny webservice z .asmx). Podczas gdy usługa WCF lub komponent WCF mogą być wywoływane przez dowolny protokół (jak http, tcp itp.) i wszelkiego rodzaju transportu.

Po drugie, ASMX web services nie są elastyczne. Jednak usługi WCF są elastyczne. Jeśli tworzysz nową wersję usługi, musisz po prostu odsłonić nowy koniec. Dlatego usługi są zwinne i co jest bardzo praktycznym podejściem do aktualnych trendów biznesowych.

We twórz WCF jako kontrakty, interfejsy, operacje i umowy dotyczące danych. Jako deweloper Jesteśmy bardziej skoncentrowani na usługach logiki biznesowej i nie musimy się martwić o stos kanałów. WCF jest zunifikowanym API programistycznym dla każdego rodzaju usług, więc tworzymy usługę i wykorzystujemy informacje konfiguracyjne do skonfigurowania mechanizmu komunikacji, takiego jak HTTP / TCP / MSMQ itp

 37
Author: NET Experts,
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
2015-01-22 15:16:25

Jest to bardzo stare pytanie, ale nie sądzę, aby korzyści z ASMX zostały dość przedstawione. Chociaż nie jest strasznie elastyczny, Usługi internetowe ASMX są bardzo proste w użyciu i zrozumiałe. Podczas gdy WCF jest bardziej elastyczny, jest również bardziej złożony, aby wstać i skonfigurować.

ASMX Web services są gotowe do wstawienia i dodania jako odniesienie webservice zaraz po dodaniu pliku. (zakładając, że twój projekt buduje)

Dla prostego przepływu pracy programistycznej create webservice -> run webservice -> add webservice reference, na ASMX webservice ma bardzo mało, co może pójść źle, niewiele, co można źle skonfigurować, i to jest jego siła.

W odpowiedzi na te, które twierdzą, że WCF zastępuje ASMX, odpowiem, że WCF musiałby dodać usprawniony tryb konfiguracji K. I. S. S., aby całkowicie zastąpić ASMX.

Przykładowy web.config dla ASMX webservice:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>
 22
Author: Andrew Hoffman,
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
2015-04-06 22:10:36

WCF całkowicie zastępuje ASMX web services. ASMX to stary sposób na tworzenie usług internetowych, a WCF to obecny sposób na tworzenie usług internetowych. Wszystkie nowe usługi SOAP web service, na kliencie lub serwerze, powinny być wykonywane przy użyciu WCF.

 11
Author: John Saunders,
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
2015-01-22 15:15:40

Toczy się wiele rozmów na temat prostoty usług internetowych asmx nad WCF. Pozwolę sobie wyjaśnić kilka kwestii.

  • to prawda, że początkujący Programiści usług internetowych łatwo zaczną korzystać z usług internetowych asmx. Visual Studio wykonuje za nich całą pracę i chętnie tworzy projekt Hello World.
  • ale jeśli możesz nauczyć się WCF (co z kursu nie zajmie dużo czasu), możesz zobaczyć, że WCF jest również dość prosty i możesz łatwo iść do przodu.
  • Its ważne, aby pamiętać, że te wspomniane zawiłości w WCF są rzeczywiście przypisywane pięknym cechom, które niesie ze sobą. Istnieją adresy, powiązania, umowy i punkty końcowe, usługi i klienci wszystkie wymienione w pliku konfiguracyjnym. Piękno polega na tym, że twoja logika biznesowa jest segregowana i bezpiecznie utrzymywana. Jutro jeśli chcesz zmienić wiązanie z basicHttpBindingna netTcpBinding możesz łatwo utworzyć wiązanie w pliku konfiguracyjnym i z niego skorzystać. Więc wszystkie zmiany związane z klientami, kanały komunikacyjne, wiązania itp. mają być wykonywane w konfiguracji, pozostawiając logikę biznesową bezpieczną i nienaruszoną, co ma prawdziwy sens.
  • WCF "Usługi internetowe" są częścią znacznie szerszego spektrum komunikacji zdalnej umożliwianej przez WCF. Uzyskasz znacznie wyższy stopień elastyczności i przenośności podczas robienia rzeczy w WCF niż dzięki tradycyjnemu ASMX, ponieważ WCF został zaprojektowany od podstaw, aby podsumować wszystkie różne programy rozproszone infrastruktury oferowane przez Microsoft. Punkt końcowy w WCF może być komunikowany równie łatwo przez SOAP / XML, jak przez TCP / binary i aby zmienić ten nośnik, wystarczy plik konfiguracyjny mod. Teoretycznie zmniejsza to ilość nowego kodu potrzebnego przy przenoszeniu lub zmianie potrzeb biznesowych, celów itp.
  • Web Services mogą być dostępne tylko przez HTTP i działa w środowisku bezstanowym, gdzie WCF jest elastyczny, ponieważ jego usługi mogą być hostowane w różnych typach aplikacji. Ty może obsługiwać usługi WCF w konsoli, usługach Windows, IIS I WAS, które ponownie są różnymi sposobami tworzenia nowych projektów w Visual Studio.
  • ASMX jest starszy od WCF, a wszystko, co ASMX może to zrobić, może WCF (i nie tylko). Zasadniczo można zobaczyć WCF jako próby logicznego grupowania wszystkich różnych sposobów uzyskania dwóch aplikacji do komunikacji w świecie Microsoft; ASMX był tylko jednym z tych wielu sposobów i tak jest teraz zgrupowane pod parasolem WCF możliwości.
  • zawsze będziesz lubię korzystać z Visual Studio dla NET 4.0 lub 4.5, ponieważ ułatwia życie podczas tworzenia usług WCF.
  • główną różnicą jest to, że Usługi internetowe używają XmlSerializer. Ale WCF używa DataContractSerializer, który jest lepszy pod względem wydajności w porównaniu do XmlSerializer. Dlatego WCF działa o wiele lepiej niż inne odpowiedniki technologii komunikacyjnych z. NET, takie jak asmx,. NET remoting itp.

Nie zapominajmy, że byłem jednym z tych gości, którzy bardziej lubili usługi asmx niż WCF, ale to czas nie byłem dobrze świadomy usług WCF i jego możliwości. Bałem się konfiguracji WCF. Ale odważyłem się i próbowałem napisać kilka własnych usług WCF, a kiedy dowiedziałem się więcej o WCF, teraz nie mam żadnych zahamowań na temat WCF i polecam je każdemu i wszystkim. Szczęśliwego kodowania!!!

 4
Author: Sagnik Majumder,
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-02-01 13:48:05