Rozdiel medzi WCF a webovými službami

WCF je náhradou za všetky predchádzajúce technológie webových služieb. Je vyvinutý spoločnosťou Microsoft. Nahrádza to, čo sa tradične považuje za „webové služby“. Webová služba je založená na SOAP, ktorý vracia dáta vo formáte XML. Podporuje iba protokol HTTP. Nie je to ani open source a môže ho konzumovať každý klient, ktorý rozumie XML. Hostiteľom môže byť iba služba IIS.

Čo je to WCF?

WCF je založený na SOAP a vracia dáta vo formáte XML. Je to rozšírenie webovej služby (ASMX) a podporuje rôzne protokoly ako HTTP, HTTPS, TCP, Named Pipes, MSMQ, atď. WCF má problém so zdĺhavou a rozsiahlou konfiguráciou. Nie je to otvorený zdroj, ale môže ho použiť akýkoľvek klient, ktorý rozumie XML. Môže byť hostený na viacerých platformách ako v aplikácii alebo na IIS alebo pomocou služby okna.

V ktorých scenároch sa musí použiť WCF?

  • Na uskutočňovanie obchodných transakcií nám WCF poskytuje zabezpečený server.
  • Dvaja alebo viacerí ľudia môžu komunikovať a vymieňať si údaje v reálnom čase pomocou chatovacej služby postavenej na WCF.
  • Aplikácia dashboardu, ktorá zisťuje informácie o jednej alebo viacerých službách a logicky ich prezentuje.
  • Odhalenie pracovného toku, ktorý je implementovaný pomocou Windows Workflow Foundation ako služby WCF.

Čo je to webová služba?

Ako je uvedené vyššie, webové služby fungujú v prostredí bez štátnej príslušnosti. Prístup je možný iba cez HTTP. Služby WCF môžu byť hostené v rôznych typoch aplikácií. Preto na rozdiel od webových služieb je WCF flexibilnejšia.

WCF sa môže hostiť v rôznych scenároch. Takéto scenáre zahŕňajú služby ako WAS, IIS, Self-hosting, Spravovaná služba Windows atď.

Porovnanie medzi hlavami medzi WCF a webovými službami (infografika)

Nižšie je uvedený najväčší rozdiel medzi WCF a webovými službami

Kľúčové rozdiely medzi WCF a webovými službami

Obe WCF verzus webové služby sú populárnou voľbou na trhu; diskutujme o niektorých hlavných rozdieloch medzi WCF a webovými službami

  • Pri prenose údajov z jednej aplikácie do druhej používa webová služba iba protokol HTTP. Na druhej strane WCF na prepravu údajov podporuje viac protokolov v porovnaní s webovými službami ASP.NET. WCF okrem odosielania správ pomocou protokolu HTTP podporuje aj protokol TCP (Transmission Control Protocol), Microsoft Message Queuing (MSMQ) a pomenované kanály.
  • WCF je architektonicky robustnejšia ako webová služba.
  • XmlSerializer sa používa vo webových službách. WCF používa DataContractSerializer, čo je z hľadiska výkonu lepšie v porovnaní s XmlSerializer.
  • Pri komunikácii medzi viacerými aplikáciami vyvinutými na rôznych platformách používame WCF. Použitie WCF je možné iba na prenos údajov v prípade, že prenášame údaje z platformy .NET do akejkoľvek inej aplikácie bežiacej na iných operačných systémoch, ako sú Unix alebo Linux.
  • Bezpečnosť v WCF je v porovnaní s webovými službami veľmi vysoká.

Tabuľka porovnania WCF a webových služieb

Nižšie je 9 najvyšších porovnaní medzi WCF a webovými službami

Základ porovnania medzi WCF a webovými službami

WCF

Webové služby

Úvodná verziaSlužba WCF bola zavedená pomocou .NET verzie 3.0.Webová služba existuje v .net framework od verzie 1.0.
Protokol na prijímanie a odosielanie správSlužby WCF štandardne používajú SOAP, ale správy môžu byť v akomkoľvek formáte a prenášané pomocou ľubovoľného prenosového protokolu, ako sú WS-HTTP, TCP, Named Pipes, HTTP, HTTP, MSMQ, P2P (Point to Point) atď.Webové služby ASP.NET môžu odosielať a prijímať správy pomocou protokolu SOAP cez protokol HTTP alebo HTTPS.
Rozšírenie súboruSlužby WCF majú príponu „.svc“.Webové služby majú príponu „.asmx“
smerniceStránka svc používa smernicu „ServiceHost“.Stránka asmx používa smernicu „WebService“
Serializačná technikaNa serializáciu používa DataContractSerializer v mennom priestore System.RunTime.Serialization.Pre serializáciu sú webové služby ASP.NET založené na XmlSerializer v mennom priestore System.XML.Serialization. Niektoré z obmedzení produktu XmlSerializer sú:

  • Možnosť serializácie verejných vlastností / polí.
  • Serializovaný je možný iba pre triedy zberu implementujúce Icollection alebo IEnumerable.
  • Serializácia nie je možná pre triedy implementujúce IDictionary, napríklad HashTable.
  • Explicitné označenie polí alebo vlastností, ktoré sa majú serializovať do XML, a identifikácia polí, ktoré má serializátor ignorovať, nie je možné.

Mechanizmus hosteniaSlužby WCF môžu byť hostené na viacerých platformách, ako sú IIS, Windows Activation Services (WAS), Managed Windows services alebo self-hosting atď.Webovú službu ASP.net je možné prevádzkovať iba v IIS.
neošetrená manipulácia s výnimkamiVýnimky, ktoré nie sú spracované, sa klientom nevracajú ako chyby SOAP.Výnimky, ktoré nie sú spracované, sa klientom vracajú ako chyby SOAP vo webových službách ASP.NET.
Podpora viacerých vlákienViaczávitové vlákno je podporované službami WCF.Vo webových službách nie je podporovaná podpora viacerých vlákien.
výkonWCF je v porovnaní s webovými službami rýchlejšiaKeďže webové služby používajú serializátory, sú z hľadiska výkonu pomalšie ako služby WCF.

Príklad WCF verzus webových služieb

Nižšie je uvedený príklad WCF verzus webové služby:

Webové služby

Nasledujúci útržok kódu ukazuje, ako vyvíjať službu vo webovej službe.

(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

Nasledujúci útržok kódu ukazuje, ako vyvinúť službu v 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;
)
)

Záver - WCF vs webové služby

Z vyššie uvedenej diskusie je služba WCF určite pokročilá technológia, ktorú poskytujú webové služby. Z hľadiska výkonu je WCF rýchlejšia ako webová služba. WCF poskytuje lepšiu bezpečnosť, podporuje rôzne protokoly a formáty správ. Jedinou hektickou oblasťou WCF pre vývojárov je jej konfiguračná časť. Tento problém sa však vyriešil aj s WCF4.0 zavedením predvolených nastavení konfigurácie. Všimnite si, že až do.NET3.5 poskytuje vizuálne štúdio priamu šablónu pre webové služby. Od.NET4.0 nedostávame žiadnu priamu šablónu pre webové služby. Preto musíme vytvoriť webovú aplikáciu a pridať k nej webovú službu.

Odporúčané články

Toto bol návod na najväčší rozdiel medzi WCF a webovými službami. Tu diskutujeme aj kľúčové rozdiely medzi WCF a webovými službami s infografikou a porovnávaciu tabuľku. Ďalšie informácie nájdete aj v nasledujúcich článkoch.

  1. Porovnanie - Ubuntu vs Windows 10
  2. Webové stránky pre mobilné aplikácie vs - užitočné porovnania
  3. Režim spánku verzus najvyššie rozdiely v režime dlhodobého spánku
  4. Webové služby spoločnosti Microsoft Azure verzus Amazon

Kategórie: