Erinevus WCF-i ja veebiteenuste vahel

WCF on kõigi varasemate veebiteenuste tehnoloogiate asendaja. Selle on välja töötanud Microsoft. See asendab seda, mida tavaliselt peetakse veebiteenuseks. Veebiteenus põhineb SOAP-il, mis tagastab andmed XML-kujul. See toetab lihtsalt HTTP-protokolli. Samuti pole see avatud lähtekoodiga ja seda võib kasutada iga klient, kes mõistab XML-i. Seda saab majutada ainult IIS-is.

Mis on WCF?

WCF põhineb SOAP-il ja tagastab andmed XML-kujul. See on veebiteenuse (ASMX) laiend ja toetab erinevaid protokolle nagu HTTP, HTTPS, TCP, Named Pipes, MSMQ jne. WCF-il on probleem oma tüütu ja ulatusliku konfiguratsiooniga. See pole avatud lähtekoodiga, kuid seda saab kasutada iga klient, kes mõistab XML-i. Seda saab hostida mitmel platvormil nagu rakenduses või IIS-is või kasutades aknateenust.

Millistes stsenaariumides tuleb WCF-i kasutada?

  • Äritehingute tegemiseks pakub WCF meile turvalist serverit.
  • Kaks või enam inimest saavad WCF-i peale üles ehitatud vestlusteenuse abil suhelda ja ka andmeid reaalajas vahetada.
  • Armatuurlaua rakendus, mis küsib teavet ühe või mitme teenuse kohta ja esitleb seda loogiliselt.
  • Töövoo paljastamine, mida rakendatakse Windows Workflow Foundationi abil WCF-teenusena.

Mis on veebiteenus?

Nagu eespool arutatud, töötavad veebiteenused kodakondsuseta keskkonnas. Sellele pääseb juurde ainult HTTP kaudu. WCF-i teenuseid saab hostida erinevat tüüpi rakendustes. Seetõttu on WCF erinevalt veebiteenustest paindlikum.

WCF-i saab hostida erinevatel stsenaariumidel. Sellised stsenaariumid hõlmavad selliseid teenuseid nagu WAS, IIS, isemajutus, hallatud Windowsi teenus jne.

Võrdlus WCF-i ja veebiteenuste vahel (infograafika)

Allpool on toodud 9 parimat erinevust WCF vs veebiteenuste vahel

Peamised erinevused WCF-i ja veebiteenuste vahel

Mõlemad WCF vs veebiteenused on turul populaarsed valikud; arutagem mõnda peamist erinevust WCF-i ja veebiteenuste vahel

  • Andmete ühest rakendusest teise rakendusse ülekandmisel kasutab veebiteenus ainult HTTP-protokolli. Teisest küljest toetab WCF andmete transportimiseks rohkem protokolle kui ASP.NET veebiteenustega. Lisaks sõnumite saatmisele HTTP abil toetab WCF ka edastuse juhtimisprotokolli (TCP), Microsofti sõnumijärjekorda (MSMQ) ja nimetatud torusid.
  • WCF on arhitektuuriliselt vastupidavam kui veebiteenus.
  • XmlSerializerit kasutatakse veebiteenustes. WCF kasutab DataContractSerializerit, mis on jõudluse osas parem kui XmlSerializer.
  • Suheldes mitme erinevatel platvormidel välja töötatud rakenduste vahel, kasutame WCF-i. WCF-i kasutamine on andmete edastamiseks ainus võimalik juhul, kui me edastame andmeid .NET-platvormilt muudesse rakendustesse, mis töötavad teistes opsüsteemides, näiteks Unix või Linux.
  • WCF-i turvalisus on veebiteenusega võrreldes väga kõrge.

WCF vs veebiteenuste võrdlustabel

Allpool on toodud 9 parimat WCF-i ja veebiteenuste võrdlust

WCF-i ja veebiteenuste võrdluse alus

WCF

Veebiteenused

Sissejuhatuse versioonWCF-i teenusega tutvustati .NET versiooni 3.0.Veebiteenus eksisteerib .net-raamistikus alates versioonist 1.0.
Protokoll sõnumite vastuvõtmiseks ja saatmiseksWCF-teenused kasutavad vaikimisi SOAP-i, kuid sõnumid võivad olla mis tahes vormingus ja edastada mis tahes transpordiprotokolli abil, näiteks WS-HTTP, TCP, Named Pipes, HTTP, HTTPs, MSMQ, P2P (punktist punkti) jne.ASP.NET veebiteenused saavad SOAP-i kasutades sõnumeid saata ja vastu võtta ainult HTTP või HTTPS kaudu.
Faili lisalaiendWcf-teenustel on laiend .svc.Veebiteenustel on laiend .asmx
DirektiivSVC-lehel on kasutatud „ServiceHost” direktiivi.Asmxi leht kasutab „WebService” direktiivi
SerialiseerimistehnikaSerialiseerimiseks kasutab System.RunTime.Serialization nimeruumi DataContractSerializer.Seerialiseerimiseks põhinevad ASP.NET-i veebiteenused System.XML.Serialization-nimeruumi XmlSerializeril. Mõned XmlSerializer'i piirangud on järgmised:

  • Avalike kinnistute / väljade seerialiseerimise võimalus.
  • Serialiseeritud on võimalik ainult kollektsiooniklasside jaoks, mis rakendavad rakendust Icollection või IEnumerable.
  • Järjestamine pole ID-sõnaraamatuid rakendavate klasside puhul võimalik, näiteks HashTable.
  • XML-i seerialiseeritavate väljade või omaduste selgesõnaline osutamine ja serialiseerija poolt ignoreeritavate väljade tuvastamine pole võimalik.

Hosting mehhanismWCF-i teenuseid saab hostida mitmel platvormil, näiteks IIS, Windowsi aktiveerimisteenused (WAS), Hallatud Windowsi teenused või isemajandamine jne.ASP.net-i veebiteenust saab hostida ainult IIS-is.
käsitsemata ErandkäsitlusKäsitlemata erandeid ei tagastata klientidele SOAP-tõrgetena.Käsitsemata erandid tagastatakse klientidele ASP.NET-veebiteenuste SOAP-tõrgetena.
Mitme lõime tugiWCF-teenused toetavad mitmekordset keermestamist.Veebiteenustes mitut lõimetamist ei toetata.
EtendusWCF on veebiteenustega võrreldes kiiremKuna veebiteenused kasutavad serialiseerijaid, on need jõudluse osas aeglasemad kui WCF-teenused.

WCF vs veebiteenuste näide

Allpool on toodud WCF vs veebiteenuste näited:

Veebiteenused

Järgmine koodilõik näitab meile, kuidas veebiteenuses teenust arendada.

(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

Järgmine koodilõik näitab meile, kuidas arendada teenust WCF-is

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;
)
)

Järeldus - WCF vs veebiteenused

Ülaltoodud arutelust järeldub, et WCF-teenus on kindlasti täiustatud tehnoloogia, mis veebiteenus. WCF on jõudluse osas kiirem kui veebiteenus. WCF pakub paremat turvalisust, toetab nii erinevaid protokolle kui ka sõnumivorminguid. Ainus arendajate jaoks mõeldud WCF-i hektiline ala on selle konfiguratsiooniosa. Kuid see probleem lahendati ka WCF4.0-ga, viies sisse vaikeseaded. On märgatud, et kuni.NET3.5 pakub visuaalstuudio veebiteenuse otsest malli. Alates saidist.NET4.0 ei saa me otsest veebiteenuse malli. Seetõttu peame looma veebirakenduse ja lisama sellele veebiteenuse.

Soovitatavad artiklid

See on juhend peamiste erinevuste vahel WCF vs veebiteenuste vahel. Siin käsitleme ka WCF vs veebiteenuste peamisi erinevusi infograafikaga ja võrdlustabelit. Lisateabe saamiseks võite vaadata ka järgmisi artikleid.

  1. Võrdlus - Ubuntu vs Windows 10
  2. Mobiilirakendus vs veebisaidid - kasulikud võrdlused
  3. Unerežiim vs talveunerežiim - kõige erinevused
  4. Microsoft Azure vs Amazon veebiteenused

Kategooria: