Różnica między WCF a usługami internetowymi

WCF zastępuje wszystkie wcześniejsze technologie usług sieciowych. Jest rozwijany przez Microsoft. Zastępuje to, co tradycyjnie uważa się za „usługi sieciowe”. Usługa sieci Web oparta jest na SOAP, która zwraca dane w postaci XML. Obsługuje tylko protokół HTTP. Nie jest to również oprogramowanie typu open source i może być używane przez każdego klienta, który rozumie XML. Może być hostowany tylko w IIS.

Co to jest WCF?

WCF jest oparty na SOAP i zwraca dane w postaci XML. Jest rozszerzeniem usługi internetowej (ASMX) i obsługuje różne protokoły, takie jak HTTP, HTTPS, TCP, Nazwane potoki, MSMQ itp. WCF ma problem z żmudną i rozbudowaną konfiguracją. To nie jest open source, ale może być używany przez każdego klienta, który rozumie XML. Może być hostowany na wielu platformach, jak w aplikacji lub w IIS lub za pomocą usługi Windows.

W jakich scenariuszach należy zastosować WCF?

  • Do dokonywania transakcji biznesowych WCF zapewnia nam bezpieczny serwer.
  • Dwie lub więcej osób może komunikować się, a także wymieniać dane w czasie rzeczywistym, korzystając z usługi czatu zbudowanej na WCF.
  • Aplikacja deski rozdzielczej, która odpytuje jedną lub więcej usług w poszukiwaniu informacji i przedstawia je logicznie.
  • Ujawnianie przepływu pracy zaimplementowanego przy użyciu Windows Workflow Foundation jako usługi WCF.

Co to jest usługa internetowa?

Jak wspomniano powyżej, usługi sieci Web działają w środowisku bezstanowym. Można uzyskać do niego dostęp tylko przez HTTP. Usługi WCF mogą być hostowane w różnych typach aplikacji. Dlatego, w przeciwieństwie do usług sieciowych, WCF jest bardziej elastyczny.

WCF może być hostowany w różnych scenariuszach. Takie scenariusze obejmują usługi takie jak WAS, IIS, Self-hosting, Managed Windows Service itp.

Bezpośrednie porównanie między WCF a usługami internetowymi (infografiki)

Poniżej znajduje się 9 najważniejszych różnic między WCF a usługami internetowymi

Kluczowe różnice między WCF a usługami internetowymi

Zarówno WCF vs. Web Services to popularne wybory na rynku; omówmy niektóre z głównych różnic między WCF a usługami internetowymi

  • Podczas przesyłania danych z jednej aplikacji do drugiej, usługa sieciowa używa tylko protokołu HTTP. Z drugiej strony, do transportu danych, WCF obsługuje więcej protokołów niż usługi sieciowe ASP.NET. Oprócz wysyłania wiadomości za pomocą HTTP, WCF obsługuje również protokół kontroli transmisji (TCP), kolejkowanie wiadomości Microsoft (MSMQ) i nazwane potoki.
  • WCF jest bardziej odporny architektonicznie niż usługa sieciowa.
  • XmlSerializer jest używany w usługach sieciowych. WCF używa DataContractSerializer, który jest lepszy w porównaniu do XmlSerializer pod względem wydajności.
  • Podczas komunikacji między wieloma aplikacjami opracowanymi na różnych platformach używamy WCF. Korzystanie z WCF jest jedyną możliwością przesyłania danych w przypadku, gdy przesyłamy dane z platformy .NET do dowolnej innej aplikacji działającej na innych systemach operacyjnych, takich jak Unix lub Linux.
  • Bezpieczeństwo w WCF jest bardzo wysokie w porównaniu do usługi internetowej.

Tabela porównawcza WCF a usług internetowych

Poniżej znajduje się 9 najwyższe porównanie między WCF a usługami internetowymi

Podstawa porównania między WCF a usługami internetowymi

WCF

Usługi internetowe

Wersja wstępnaUsługa WCF została wprowadzona wraz z .NET w wersji 3.0.Usługa sieci Web istnieje w środowisku .net od wersji 1.0.
Protokół odbierania i wysyłania wiadomościUsługi WCF domyślnie używają SOAP, ale wiadomości mogą być w dowolnym formacie i przekazywane przy użyciu dowolnego protokołu transportowego, takiego jak WS-HTTP, TCP, Nazwane potoki, HTTP, HTTPs, MSMQ, P2P (Point to Point) itp.Usługi sieci Web ASP.NET mogą wysyłać i odbierać wiadomości za pomocą protokołu SOAP tylko przez HTTP lub HTTPS.
Rozszerzenie plikuUsługi Wcf mają rozszerzenie „.svc”.Usługi sieciowe mają rozszerzenie „.asmx”
DyrektywaStrona svc korzysta z dyrektywy „ServiceHost”.Strona asmx korzysta z dyrektywy „WebService”
Technika serializacjiUżywa DataContractSerializer w przestrzeni nazw System.RunTime.Serialization do serializacji.Do serializacji usługi sieci Web ASP.NET są oparte na XmlSerializer w przestrzeni nazw System.XML.Serialization. Niektóre ograniczenia XmlSerializer to:

  • Możliwość serializacji nieruchomości / pól.
  • Serializacja jest możliwa tylko dla klas kolekcji implementujących Icollection lub IEnumerable.
  • Serializacja nie jest możliwa w przypadku klas implementujących IDictionary, na przykład HashTable.
  • Jawne wskazanie pól lub właściwości, które mają być serializowane do formatu XML, a identyfikacja pól, które mają zostać zignorowane przez serializator, nie jest możliwa.

Mechanizm hostinguUsługi WCF mogą być hostowane na wielu platformach, takich jak IIS, Windows Activation Services (WAS), Managed Windows Services lub self-hosting itp.Usługa sieci Web ASP.net może być hostowana tylko w IIS.
nieobsługiwana obsługa wyjątkówWyjątki, które nie są obsługiwane, nie są zwracane klientom jako błędy SOAP.Nieobsługiwane wyjątki są zwracane klientom jako błędy SOAP w usługach internetowych ASP.NET.
Obsługa wielu wątkówUsługi wielowątkowe są obsługiwane przez usługi WCF.W usługach internetowych nie ma obsługi wielowątkowości.
WystępWCF jest szybszy w porównaniu do usług sieciowychPonieważ usługi sieciowe używają serializatorów, dlatego są wolniejsze niż usługi WCF pod względem wydajności.

Przykład WCF a usługi sieciowe

Poniżej znajduje się przykład WCF vs. Web Services:

Usługi internetowe

Poniższy fragment kodu pokazuje, jak opracować usługę w usłudze sieci Web.

(WebService) public class MyService
(
(WebMethod) public SumClass SumOfNums(string JsonStr)
(
var ObjSerializer = new JavaScriptSerializer();
var ObjSumClass = ObjSerializer.Deserialize(JsonStr);
return new SumClass().GetSumClass(ObjSumClass.First, ObjSumClass.Second);
)
)
public class SumClass
(
public int First, Second, Sum;
public SumClass GetSumClass(int Num1, int Num2)
(
var ObjSum = new SumClass
(
Sum = Num1 + Num2,
);
return ObjSum;
)
)

WCF

Poniższy fragment kodu pokazuje, jak opracować usługę w WCF

ServiceContract) blic class MyService : WebService
(
(OperationContract) public SumClass SumOfNums(string JsonStr)
(
var ObjSerializer = new JavaScriptSerializer();
var ObjSumClass = ObjSerializer.Deserialize(JsonStr);
return new SumClass().GetSumClass(ObjSumClass.First, ObjSumClass.Second);
)
)
(DataContract) public class SumClass
(
(DataMember) public int First;
(DataMember) public int Second;
(DataMember) public int Sum;
public SumClass GetSumClass(int Num1, int Num2)
(
var ObjSum = new SumClass
(
Sum = Num1 + Num2,
);
return ObjSum;
)
)

Wniosek - WCF a usługi sieciowe

Z powyższej dyskusji, usługa WCF jest zdecydowanie zaawansowaną technologią tego serwisu internetowego. WCF jest szybszy niż usługa internetowa pod względem wydajności. WCF zapewnia większe bezpieczeństwo, obsługuje różne protokoły oraz formaty wiadomości. Jedynym gorącym obszarem WCF dla programistów jest jego część konfiguracyjna. Problem ten został jednak rozwiązany również dzięki WCF4.0 poprzez wprowadzenie domyślnych ustawień konfiguracji. Zauważono, że do .NET3.5 studio wizualne zapewnia bezpośredni szablon usługi internetowej. Z.NET4.0 nie otrzymujemy żadnego bezpośredniego szablonu usługi sieciowej. Dlatego musimy stworzyć aplikację internetową i dodać do niej usługę internetową.

Polecane artykuły

Jest to przewodnik po najważniejszej różnicy między WCF a usługami internetowymi. Tutaj omawiamy także różnice między WCF a usługami internetowymi za pomocą infografiki i tabeli porównawczej. Możesz także zapoznać się z poniższymi artykułami, aby dowiedzieć się więcej.

  1. Porównanie - Ubuntu vs Windows 10
  2. Aplikacja mobilna a strony internetowe - przydatne porównania
  3. Tryb uśpienia a Hibernacja - największe różnice
  4. Microsoft Azure vs Amazon Web Services