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ępna | Usł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ści | Usł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 pliku | Usługi Wcf mają rozszerzenie „.svc”. | Usługi sieciowe mają rozszerzenie „.asmx” |
Dyrektywa | Strona svc korzysta z dyrektywy „ServiceHost”. | Strona asmx korzysta z dyrektywy „WebService” |
Technika serializacji | Uż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:
|
Mechanizm hostingu | Usł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ów | Wyją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ów | Usługi wielowątkowe są obsługiwane przez usługi WCF. | W usługach internetowych nie ma obsługi wielowątkowości. |
Występ | WCF jest szybszy w porównaniu do usług sieciowych | Ponieważ 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.
- Porównanie - Ubuntu vs Windows 10
- Aplikacja mobilna a strony internetowe - przydatne porównania
- Tryb uśpienia a Hibernacja - największe różnice
- Microsoft Azure vs Amazon Web Services