Kas yra tarpinė programinė įranga? Apibrėžimas ir naudojimo atvejų pavyzdžiai

Tarpinė programinė įranga yra dažniausiai naudojamas terminas kuriant internetą. Tai gali reikšti daug ką, atsižvelgiant į kontekstą, o tai šiek tiek painioja šį terminą.

Šiame straipsnyje pradėsime apibrėždami terminą, o tada tęsime diskusiją apie keletą skirtingų naudojimo atvejų.

Perskaitę šį straipsnį galėsite labiau įsitraukti į techninius ir architektūrinius pokalbius su savo bendraamžiais. Jūs taip pat galėsite kurti saugias ir patikimas API bei duomenų srautus.

Tarpinės programos apibrėžimas

Tarpinė programinė įranga yra programinė įranga, kuri veikia kaip tarpininkas tarp dviejų programų ar paslaugų, kad palengvintų jų bendravimą.

Galite galvoti apie tai kaip apie tarpinį serverį, kuris gali veikti kaip duomenų kaupiklis, vertėjas ar tiesiog tarpinis serveris, kuris persiunčia užklausas.

Tarpinės programinės įrangos naudojimo atvejai

1) Vertėjas

Yra daugybė keitimosi duomenimis formatų, tokių kaip JSON, XML ir Protobuf. Nors šiais laikais dažniausiai naudojame JSON, kiekvienas iš jų turi savo naudojimo atvejus.

Pavyzdžiui, žinoma, kad „Protobuffers“ veikia geriau nei JSON, tačiau jie nėra žmonėms skaitomi. Taigi vidinėms paslaugoms galbūt naudojate „Protobuffers“ ir JSON galite naudoti, kai API vartotojas yra naršyklė.

Taip pat galite peržiūrėti mano straipsnį apie „Protobuffers“, jei norite sužinoti daugiau apie juos.

Tarkime, kad mums reikia šių dviejų tarnybų, kurios kalba skirtingais protokolais, bendrauti tarpusavyje.

Mes galime sukurti tarpinę programinę įrangą, kuri naudoja duomenų konvertavimo biblioteką ir paverčia užklausas formatu, kurį supranta gaunančioji tarnyba.

2) Duomenų kaupimas-dubliavimas

„Mikroserviso“ architektūra yra populiarus architektūrinis modelis, paprastai taikomas šiuolaikinėse programose.

Jei nesate susipažinę su mikro paslaugų architektūra, tai iš esmės reiškia, kad jūsų programą sudaro daugybė mažų programų ar paslaugų, kurios yra nepriklausomos viena nuo kitos ir veikia kartu bendraujant internetu.

Pvz., Vykdant elektroninės prekybos projektą, jūs galite turėti mikropaslaugą, skirtą produktams laikyti ir gauti, kitą mikropaslaugą, skirtą paieškai, ir dar vieną, skirtą autentifikuoti ir saugoti vartotojus. Ir kiekvienas turi savo duomenų bazę.

Tarkime, kad norime savo paiešką įgyvendinti taip, kad joje būtų ieškoma tiek vartotojų, tiek produktų.

Jei tai būtų monolitinė programa, galėtume tiesiog parašyti užklausą, kad galėtume ieškoti kiekvienoje lentelėje ir prisijungti prie rezultatų. Bet dabar mūsų duomenų bazės veikia skirtinguose serveriuose.

Ši problema turi keletą sprendimų, ir mes apžvelgsime du iš jų.

Duomenų kaupimas

Mes galime naudoti tarpinę programinę įrangą, norėdami siųsti užklausas abiem serveriams ir paprašyti jų ieškoti duomenų bazėse naudotojo vardų ir produktų, atitinkančių ieškomą žodį.

Tada galime sukaupti abiejų serverių rezultatus ir grąžinti juos klientui. Atkreipkite dėmesį, kad užklausų skaičius didėja tiesiškai, nes mes didiname serverių skaičių (taip pat turime tuos duomenis sujungti).

Duomenų kopijavimas

Duomenų dublikatus galime saugoti savo paieškos serveryje, kad jis galėtų juos tiesiogiai ieškoti, o ne prašyti iš produktų ir vartotojų serverių. Tai yra mažiau efektyvu atminties požiūriu, bet daug greičiau - ir greitis yra labai svarbus paieškos paslaugoms.

Jei mums reikalingos lentelės yra Produktas ir Vartotojas, tas lenteles galime sukurti ir savo paieškos serveryje. Tada, kai tik išsaugosime naują vartotoją savo vartotojų duomenų bazėje, vieną kopiją išsaugosime ir paieškos serveryje.

Mes turime keletą variantų: pirma, mes galime iškviesti paieškos serverio išsaugojimo metodus iš Vartotojo ir Produkto serverių išsaugojimo metodų, kad kopijuotume duomenis. Arba galime sukurti tarpinę programinę įrangą taupymui, kuri atliks šiuos veiksmus:

  • Kai tik gaunama išsaugojimo užklausa, paskambinkite produkto / vartotojo serverio išsaugojimui ir paieškos serverio išsaugojimui.
  • Jei pirmasis išsaugojimas nepavyksta, nekvieskite išsaugojimo kitu (taip duomenų bazės bus nuoseklios).

Pažvelkime į dizaino schemas be tarpinės programinės įrangos ir be jos. Pirma, taip atrodo be:

Negražiai atrodo, tiesa? Iš tiesų, jis yra negražus, todėl jūsų kodas taps sudėtingesnis ir glaudžiau sujungtas.

Čia yra tas pats sprendimas su tarpine programine įranga:

Pagal šį scenarijų kliento pusė tiesiog paskambina tarpinei programinei įrangai, kad išsaugotų produktą ar vartotoją, o visa kita ji tvarko.

Nėra kodo, susijusio su duomenų kopijavimu Produkto, Vartotojo serveriuose ar kliento pusėse. „Middleware“ rūpinasi ta medžiaga.

3) API sauga

Bet kurį iš kliento pusės gaunamų kodų galime peržiūrėti siunčiamas užklausas naršyklės konsolėje arba per tarpinį serverį.

Kalbėjome apie Vartotojo serverį, kuris rūpinasi prisijungimu ir prisiregistravimu. Jei mūsų tvarkyklės kodas tiesiogiai siunčia užklausas tam serveriui, atpažįstamas mūsų autentifikavimo serverio adresas. Sužinoję mūsų vidinės programos IP adresą, užpuolikai gali naudoti įrankius, kad surastų mūsų galinius taškus ir patikrintų, ar mūsų serveryje nėra pažeidžiamumų.

Mes galime naudoti tarpinę programinę įrangą kaip tarpinį serverį, norėdami nuslėpti savo autentifikavimo serverio URL. Mūsų sąsaja bendrauja su tarpine programine įranga ir ji persiųs užklausą autentifikavimo serveriui ir grąžins atsakymą.

Šis metodas taip pat leidžia mums užblokuoti visas užklausas mūsų autentifikavimo serveriui, išskyrus užklausas iš tarpinės programinės įrangos URL. Tai daro mūsų autentifikavimo serverį daug saugesnį.

Anksčiau to padaryti nebuvo įmanoma, nes mūsų sąsaja bendravo su autentifikavimo serveriu. Kadangi vartotojo sąsaja reiškia kliento kompiuterį, negalėjome pritaikyti IP filtro.

4) Viešųjų API atskleidimas

Ankstesnėje dalyje sužinojome, kad tarpinės programos gali būti naudojamos apriboti prieigą prie mūsų API.

Dabar pažvelkime į kitą lygties pusę: ką daryti, jei norime suteikti ribotą prieigą prie mūsų API? Galbūt mes esame programinės įrangos inžinierius banke ir bankas planuoja hakatoną. Mes turėtume suteikti prieigą prie savo API, tiesa?

Kadangi esame bankas, be abejo, negalime suteikti prieigos prie visos API ir leisti atlikti visas operacijas. Tai reiškia, kad turime rasti būdą, kaip suteikti ribotą prieigą.

Šiuo tikslu galime įdiegti tarpinę programinę įrangą, kuri atskleidžia tik kai kuriuos galinius taškus ir nukreipia užklausas į mūsų tikrąją API. Tada mes pateikiame šią API kūrėjams per hakatoną.

Išvada

Šiame įraše mes pradėjome apibrėždami, kas yra tarpinė programinė įranga, ir bandėme suskirstyti tarpinių programų naudojimo atvejus kuriant žiniatinklį.

Atminkite, kad tai nėra išsamus naudojimo atvejų sąrašas, bet vis tiek tikiuosi, kad jis jums buvo naudingas.

Ačiū, kad skaitėte. Jei jums patiko straipsnis, kviečiu apsilankyti mano tinklaraštyje. Taip pat galite užsiprenumeruoti mano pašto sąrašą, kad gautumėte pranešimą, kai paskelbsiu naują įrašą :)