Programavimas

Tinkamos technologijos pasirinkimas paslaugų sluoksnio kūrimui .NET

Kuriant paslaugų sluoksnį savo programose, technologijos pasirinkimas, kuris bus naudojamas paslaugų lygmenyje, priklauso nuo daugelio veiksnių. Šiame straipsnyje pateiksiu diskusiją apie tai, kada ir kaip galite nuspręsti pasirinkti tinkamą technologiją, kad įdiegtumėte paslaugų sluoksnį, kai kuriate programas .Net.

Du žymūs varžovai, kuriuos turite kurdami „.Net“ paslaugų sluoksnį, yra WCF ir „Web API“. WCF yra SOA kūrimo platforma - ji teikia daug funkcijų ir palaiko daug įvairių transporto protokolų. Nors WCF yra vieninga sistema, skirta kurti į paslaugas orientuotas programas, „Web API“ yra lengva alternatyva RESTful paslaugoms kurti, kurias gali naudoti daugybė skirtingų klientų. „RESTful“ paslaugos naudoja pagrindinį HTTP ir yra paprastos su daug mažesne apkrova, palyginti su SOAP paslaugomis. Galite naudoti „WebHttpBinding“ WCF, kad sukurtumėte ne SOAP RESTful paslaugas per HTTP. WCF yra daug universalesnis ta prasme, kad gali palaikyti daugelį transporto protokolų - HTTP, TCP ir kt. Galite pasinaudoti WCF, kad sukurtumėte saugias, patikimas ir operacines paslaugas, kurios galėtų palaikyti pranešimų siuntimą, dvipusį ryšį ir greito perdavimo kanalus, pvz., TCP. , Pavadinti vamzdžiai arba UDP.

Jei jums reikia sukurti lengvas, į išteklius orientuotas paslaugas per HTTP, kurios gali panaudoti visas HTTP protokolo funkcijas, naudoti versijas, naršyklių talpyklos valdymą ir lygiagretumą naudojant „Etags“, „Web API“ yra geras pasirinkimas. Savo paslaugų lygmenyje turėtumėte pasirinkti „Web API“, o ne „WCF“, kai norite, kad jūsų paslaugos būtų atskleistos įvairiems klientams, t. Y. Žiniatinklio naršyklėms, mobiliesiems telefonams, planšetiniams kompiuteriams ir kt. Žiniatinklio API yra nedidelė ir gerai tinka įrenginiams, kuriuose yra ribotas pralaidumo kaip išmanieji telefonai. Vienas iš pagrindinių suvaržymų, su kuriais susidūriau naudodamas WCF, yra jo plati konfigūracija - žiniatinklio API yra daug paprastesnė ir patogesnė naudoti. Pripažįstu, kad WCF yra daug universalesnis, palyginti su žiniatinklio API, tačiau, jei jums nereikia tų funkcijų, kurias teikia WCF, ir viskas, ko jums reikia, yra tik RESTful paslaugos, o ne HTTP, aš visada norėčiau, kad žiniatinklio API būtų lengvas ir paprastas naudoti .

Taip pat norėčiau pristatyti diskusiją apie „Web API“ ir „ASP.Net MVC“ skirtumus, nes yra tam tikrų klaidingų nuomonių, kada pasirinkti vieną, o ne kitą. Pasirinkimas tarp ASP.Net MVC ir žiniatinklio API priklauso nuo daugelio veiksnių. Yra keletas aspektų, kuriuos turėtumėte atsiminti prieš nuspręsdami naudoti kurį nors iš jų.

Atminkite, kad žiniatinklio API naudoja HTTP veiksmažodžius ir todėl HTTP veiksmažodžiu pagrįstą atvaizdavimą susiejimo metodams su atitinkamais maršrutais. Tam pačiam HTTP veiksmažodžiui negalima perkelti tam tikro maršruto metodų. Turėtumėte žinoti apie šį dizaino suvaržymą (nors yra galimų problemų), kai pasirenkate tarp ASP.Net MVC ir „Web API“. Skirtingai nuo ASP.Net MVC, žiniatinklio API naudoja maršrutą, pagrįstą HTTP veiksmažodžiais, o ne URI, kuriuose yra veiksmų. Taigi, naudodamiesi žiniatinklio API, galite rašyti „RESTful“ paslaugas, kurios gali panaudoti HTTP protokolą - galite kurti lengviau išbandomas ir prižiūrimas paslaugas. Maršrutavimas žiniatinklio API yra daug paprastesnis ir jūs galite sklandžiai derėtis dėl turinio. ASP.Net MVC nukreipimo modelyje yra veiksmai URI.

Kitas dalykas, kurį norėtumėte apsvarstyti, yra tai, ar norite, kad jūsų funkcijos būtų rodomos konkrečioje programoje, ar funkcionalumas turėtų būti bendras. Jei norite atskleisti savo paslaugas, skirtas tik vienai programai, norėtumėte naudoti ASP.Net MVC - valdiklį ASP.Net MVC programoje, tai yra specifinė programa. Priešingai, norėtumėte naudoti žiniatinklio API metodą, jei jūsų verslo poreikiai reikalauja, kad jūs apskritai atskleistumėte funkcionalumą. Norėčiau naudoti žiniatinklio API metodą, jei funkcionalumas labiau orientuotas į duomenis, ir ASP.Net MVC metodą, jei funkcionalumas labiau orientuotas į vartotojo sąsają.

Turėtumėte naudoti žiniatinklio API per ASP.Net MVC, jei norite, kad valdiklis grąžintų duomenis keliais formatais, pvz., JSON, XML ir kt. Be to, duomenų formatą nurodyti žiniatinklio API yra paprasta ir lengva sukonfigūruoti. Žiniatinklio API taip pat įvertina ASP.Net MVC, nes ji gali būti savarankiška (panaši į WCF). Jums reikės, kad ASP.Net MVC valdikliai būtų priglobti tame pačiame žiniatinklio serveryje, kuriame buvo priglobta programa, nes ASP.Net MVC valdikliai yra tos pačios programos dalis. Priešingai, savo žiniatinklio API valdiklius galite priglobti ir už IIS ribų - galite priglobti jį lengvame pasirinktiniame pagrindiniame kompiuteryje ir leisti paslaugą naudoti daugeliui skirtingų klientų.