Python privalumai ir trūkumai
Išnagrinėkite Python privalumus ir trūkumus, įskaitant jos privalumus, apribojimus, pagrindinius naudojimo atvejus ir kodėl ji išlieka viena populiariausių programavimo kalbų.
Susipažinkite su šešiakampės architektūros galimybėmis didinti programinės įrangos palaikomumą, testuotinumą ir pritaikomumą.
Šiame išsamiame vadove gilinsimės į niuansus, susijusius su Šešiakampė architektūra, nagrinėjant jo apibrėžtį, sudedamąsias dalis ir istoriją. Palyginsime Šešiakampė architektūra ir kitus populiarius architektūrinius raštus, kad išryškėtų jos unikalūs privalumai. Be to, išnagrinėsime jo svarbų vaidmenį domenu valdomame projektavime (DDD) ir mikroservisai, kurios tampa vis svarbesnės šiuolaikiniame pasaulyje. programinės įrangos kūrimas.
Dinamiškame kraštovaizdyje programinės įrangos architektūra, Šešiakampė architektūra, taip pat žinomas kaip uostų ir Adapterių modelis, tapo grėsmingu varžovu, palaipsniui metančiu iššūkį tradicinė daugiasluoksnė architektūra.
Tai lėmė poreikis sukurti architektūrinį dizainą, kuris užtikrintų lengvą testavimą ir geresnį palaikymą, Šešiakampė architektūra buvo sumanyta. Jos misija: teikti patikimą programinės įrangos programos nevaržomi išorinio pasaulio sudėtingumo ir nepastovumo.
Šiame straipsnyje leisimės į kelionę po Šešiakampė architektūra - architektūra, kuri yra paprastumo ir galios sandūroje. Atskleisime jos istoriją, struktūrą ir principus bei palyginsime ją su kitomis architektūriniai modeliai. Išnagrinėsime jos galimybes pagerinti programinės įrangos kokybę ir sumažinti vis didėjančią techninių skolų bangą, kuri vargina programinės įrangos pramonę.
Jos esmė, Šešiakampė architektūraarba uostai ir Adapterių architektūra, yra projektavimo modelis, pagrįstas rūpesčių atskyrimu. Jis suskirsto programą į dvi pagrindines dalis: vidinę ir išorinę.
Viduje, dar vadinamame programos branduoliu, yra verslo logika ir domeno objektai - jūsų programinės įrangos vertės branduolys. Ši vidinė šventovė lieka atskirta nuo išorinių veiksnių, taip išsaugant programinės įrangos vientisumą. verslo logika ir srities modelį.
Kita vertus, išorė yra išorinių sistemų sritis - nuo naudotojo sąsaja į prieigą prie duomenų bazės - kurie sąveikauja su programos branduoliu. Šios sąveikos valdomos naudojant prievadų ir adapterių mechanizmą, užtikrinantį aiškų atskyrimą tarp taikomosios programos šerdis ir jos išorės veikėjai.
Šešiakampė architektūra yra Alisterio Kokburno, vizionieriaus, kuris pirmą kartą išsakė šią koncepciją kaip atsaką į tradicinių technologijų ribotumą, sumanymas. daugiasluoksnė architektūra. Ji buvo sukurta siekiant sukurti technologiškai nepriklausomą domeno sluoksnis kuri izoliuoja šerdį. verslo logika nuo išorės poveikio, pvz. naudotojo sąsaja kodas ir prieigą prie duomenų bazės.
Tradicinėje daugiasluoksnė architektūra, pokyčiai viename sluoksnyje gali persiduoti kitiems sluoksniams ir sukelti nenumatytų pasekmių. Be to, testavimą apsunkino sudėtinga sluoksnių priklausomybė.
Šešiakampė architektūra atsirado sprendimas, siūlantis modelį, pagal kurį pokyčiai vienoje sistemos dalyje nesutrikdytų kitų dalių. Iš esmės juo buvo siekiama, kad verslo logika nepriklausomai nuo to, ar prie jos buvo jungiamasi per žiniatinklio svetainė sąsaja. REST APIarba net komandinė eilutė.
Šešiakampė architektūra, pavadintą dėl šešiakampės iliuzijos diagramose, sudaro trys pagrindinės sudedamosios dalys domeno modelis, prievadai (pirminiai ir antriniai) ir adapteriai (pirminiai ir antriniai).
Svetainė domeno modelis yra programinės įrangos programos pagrindas, apimantis verslo taisyklės ir pagrindinę logiką. Šiame modelyje esantys srities objektai turi konkrečias verslo vertes ir taisykles.
Toliau turime prievadus, kanalus tarp domeno modelis ir išorinį pasaulį. Pirminiai prievadai atskleisti programos verslo logika, kuris yra vartai į taikomosios programos branduolį. Jie atspindi taikomosios programos palaikomus naudojimo atvejus.
Antriniai prievadaiKita vertus, jos nukreiptos į išorę. Jos vaizduoja sąsajas, kurių programai reikia iš išorinio pasaulio, pavyzdžiui, atkaklumo sluoksnius arba išorines paslaugas.
Galiausiai turime adapterius, kurie veikia kaip vertėjai tarp domeno modelis ir išorinį pasaulį. Jie paverčia duomenys iš formato, naudojamo išorinės sistemos į formatą, naudojamą verslo logikair atvirkščiai.
Prievadai ir adapteriai sudaro tiltą tarp taikomosios programos šerdis ir išorės veikėjai. Pirminiai prievadai yra verslo naudojimo atvejai, kuriuos programa atskleidžia, kad išoriniai dalyviai galėtų sąveikauti su programa. Įsivaizduokite juos kaip paslaugų sąsajas savo verslo sluoksnis.
Kita vertus, antriniai prievadai - tai sąsajos, reikalingos jūsų programai iš išorinio pasaulio. Tai gali būti tokios paslaugos kaip prieiga prie duomenų bazės, žiniatinklio paslaugos, arba net laiko paslaugas. Jos atskleidžia tai, ko reikia taikomosioms programoms, nepriklausomai nuo jokių technologijų ar konkrečių pardavėjo savybių.
Adapteriai yra fizinė šių prievadų išraiška. Jie perkelia duomenis iš formato, naudojamo verslo logika į išorės dalyvių naudojamą formatą ir atvirkščiai. Šie adapteriai gali būti konkrečiai technologijai būdingi REST API, SQL duomenų bazių ar pranešimų perdavimo sistemų adapteriai, bet jie taip pat gali būti paketiniai scenarijai ar naudotojo sąsaja kodas. Adapteriai sudaro taikomosios programos ribas, todėl programa gali būti technologiškai nepriklausoma.
Pirminiai prievadai rodo operacijas, kurias gali atlikti mūsų programa, t. y. komandas, kurias gali priimti mūsų pagrindinis domenas. Jie dažnai įgyvendinami kaip sąsajos tokiose kalbose kaip Javaapibrėžiant, kokias operacijas siūlo programa.Pirminiai adapteriaitodėl yra šių sąsajų įgyvendinimo priemonės, skirtos konkretiems išorės dalyviams.
Kita vertus, antriniai prievadai - tai sąsajos, kurias pagrindinis domenas naudoja sąveikai su išoriniu pasauliu. Tai gali būti sąsajos, skirtos domeno objektams išsaugoti arba pranešimams siųsti. Antriniai adapteriai yra faktinės šių sąsajų realizacijos. SQL duomenų bazė adapterį arba el. pašto pranešimų adapterį.
Kartu pirminiai ir antriniai prievadai ir adapteriai sudaro lanksčią, modulinę ribą aplink programą, atskiriančią domeno logika dėl techninių priežasčių. Jie užtikrina aiškų atsakomybės atskyrimą ir leidžia skirtingoms sistemos dalims vystytis nepriklausomai.
Priklausomybės taisyklė yra pagrindinis principas Šešiakampė architektūra kuriame teigiama, kad priklausomybės turėtų būti nukreiptos į taikomosios programos branduolį. Programos branduolys nepriklauso nuo konkrečios duomenų bazės, vartotojo sąsajos ar kitos išorinės agentūros.
Šis principas glaudžiai susijęs su Priklausomybės apvertimo principas (DIP), vienas iš SOLID principų, taikomų kuriant objektus. DIP teigia, kad aukšto lygio moduliai (verslo logika arba domeno sluoksnis neturėtų priklausyti nuo žemo lygio modulių (pvz., duomenų bazės adapterio). Vietoj to, jie abu turėtų priklausyti nuo abstrakcijų. Toks priklausomybių apvertimas leidžia izoliuoti aukšto lygio modulius nuo žemo lygio modulių pakeitimų, taip skatinant tokį dizainą, kai verslo logika lemia bendrą architektūrą.
Žemėlapių sudarymas yra esminis procesas Šešiakampė architektūra, kai konkrečiai technologijai skirtas adapteris konvertuoja duomenis iš formato, naudojamo išorinės sistemos į formatą, kurį mūsų domeno sluoksnis gali suprasti. Šis atvaizdavimas palengvina vertimą tarp vidinių ir išorinių programos duomenų atvaizdavimų.
Pavyzdžiui, kai HTTP užklausa į mūsų programą ateina iš išorinės sąsajos, pvz. REST API, užklausos duomenis iš JSON reikia išversti į domeno objektus, kuriuos gali naudoti programa. Už šį vertimą atsakingi adapteriai.
Ir atvirkščiai, kai programai reikia išsiųsti atsakymą, adapteriai konvertuoja domeno objektus atgal į JSON. Tai leidžia pagrindinei programai nežinoti išorinio pasaulio ypatumų ir kartu užtikrina, kad ji gali teisingai interpretuoti gaunamus duomenis ir formatuoti siunčiamus duomenis.
Šešiakampė architektūra teikia daug privalumų, kuriuos daugiausia galima paaiškinti tuo, kad programinė įranga atskiriama nuo išorinių elementų ir aiškiai atskiriamos skirtingos sistemos dalys.
Vienas iš pagrindinių privalumų yra rūpesčių atskyrimas, skatinantis kodo palaikymą ir skaitomumą. Pagrindinių problemų atskyrimas verslo logika iš išorinis pasaulis leidžia keisti konkrečiai technologijai skirtus adapterius, duomenų bazes ir naudotojo sąsajos nekeičiant pagrindo verslo logika.
Šešiakampė architektūra taip pat pasižymi puikiomis testavimo galimybėmis. Architektūros išorinių priklausomybių izoliacija leidžia kūrėjams atlikti automatinius regresijos testus ir rašyti automatiniai testų rinkiniai lengviau. Dėl šios izoliacijos padidėja programos atsparumas, nes vieno komponento pokyčiai neturės neigiamo poveikio kitiems komponentams.
Be to, architektūra palaiko kelis to paties prievado adapterius, todėl tam pačiam antriniam prievadui galima naudoti kelis adapterius. Toks lankstumas leidžia programai sąveikauti su įvairių tipų duomenų bazėmis arba palaikyti įvairias naudotojo sąsaja platformos.
Programinės įrangos kūrimo srityje palaikomumas dažnai yra geidžiama savybė, tačiau tradiciniai architektūros stiliai gali būti sunkiai pritaikomi. Šešiakampė architektūra išsiskiria tuo, kad joje daug dėmesio skiriama palaikomumui.
Dėmesys skiriamas rūpesčių atskyrimui, Šešiakampė architektūra užtikrinama, kad vienoje programos dalyje atlikti pakeitimai nepersiduotų į kitas dalis. Ši savybė padeda sumažinti laiko ir pastangų, skirtų kodui suprasti ir derinti, sąnaudas.
Be to, ši architektūra skatina pakartotinį kodo naudojimą, skatindama tokį dizainą, kai branduolys verslo logika yra izoliuotas nuo konkrečių technologijų, naudojamų programai valdyti. Toks atskyrimas leidžia kūrėjams keisti, atnaujinti ar pertvarkyti išorinės sąsajos nedarant poveikio pagrindinei logikai, taip sumažinant klaidų atsiradimo riziką.
Techninė skola - didelė programinės įrangos kūrimo problema, susijusi su būsimomis išlaidomis, susijusiomis su kodo pertvarkymu ir trumpikių bei "hakų" taisymu. Šešiakampė architektūra siūlo aktyvų požiūrį į tokios skolos mažinimą.
Sudarydami sąlygas aiškiai atskirti pagrindines verslo logika ir išoriniai komponentai, Šešiakampė architektūra sumažina susipynusių kodų, kurie gali sukelti priežiūros galvos skausmą ir padidinti techninius įsiskolinimus, tikimybę. Architektūrai būdingos palaikymo ir testavimo galimybės taip pat prisideda prie techninių skolų mažinimo, nes padeda išvengti klaidų atsiradimo ir palengvina refaktorizavimo pastangas.
Be to, gebėjimas Šešiakampė architektūra palaikyti infrastruktūros pokyčius be būtinybės keisti verslo logika apsaugo nuo techninių skolų. Ši galimybė leidžia komandoms prisitaikyti prie reikalavimų ar technologijų pokyčių, neperrašant didelės programos dalies.
Praktiškai, Šešiakampė architektūra pateikia struktūrizuotą požiūrį į programinės įrangos kūrimą. Šešiakampė riba aplink pagrindinę programą aiškiai apibrėžia, kur baigiasi programa ir kur išorinis pasaulis prasideda.
Adapteriai veikia kaip sargai, verčiantys išorinių dalyvių užklausas į pagrindinei programai suprantamą formą ir atvirkščiai. Tokiu būdu jie užtikrina, kad pagrindinė programa išliktų nepriklausoma nuo išorinio pasaulio specifikos, nesvarbu, ar tai būtų duomenų bazė, ar išorinė APIarba naudotojo sąsaja.
Į domeną orientuotas projektavimas (DDD) - tai programinės įrangos kūrimo metodika, pagal kurią pirmenybė teikiama pagrindinėms verslo koncepcijoms arba domeno logika, kuris yra pagrindinė projekto varomoji jėga. Ši metodika labai gerai dera su Šešiakampė architektūra, kuriame taip pat pabrėžiama verslo logika ir domeno modelis architektūroje.
Atsižvelgiant į Šešiakampė architektūra, DDD užtikrina, kad taikomosios programos aukšto lygio moduliai - srities sluoksniai - būtų nepriklausomi nuo išorinių elementų, pvz. naudotojo sąsaja arba duomenų bazėje. Šį nepriklausomumą užtikrina prievadai ir adapteriai, kurie apsaugo domeno sluoksnį nuo specifinių duomenų bazės ypatumų. išorinės sistemos, taip sudarant galimybę domeno logika vystytis nepriklausomai.
Be to, Šešiakampė architektūra papildo DDD strateginio projektavimo principus, įskaitant riboto konteksto koncepciją. Kiekvieną DDD apribotą kontekstą galima įsivaizduoti kaip šešiakampį Šešiakampė architektūra, kurio pagrindas yra domeno modelis ir prievadai ir adapteriai veikia kaip ribos.
Kitas šiuolaikinis architektūros stilius - mikroservisai - gali būti labai naudingas Šešiakampė architektūra. Decentralizuotas mikroservisų pobūdis, kai kiekviena paslauga apima tam tikrą verslo gebėjimą, puikiai dera su mikroservisų inkapsuliavimu. verslo logika šešiakampio šerdyje.
Kaip ir kiekvienas mikroservisas turėtų būti laisvai susieti su kitais, o kiekvienas šešiakampis Šešiakampė architektūra taip pat yra izoliuotas nuo kitų, su jais bendraujama tik per nustatytus prievadus ir adapterius. Tai leidžia kiekvienai mikropaslaugai turėti savo šešiakampė architektūra, todėl sukuriamas savarankiškų, laisvai susietų paslaugų rinkinys.
Izoliacija, kurią užtikrina Šešiakampė architektūra gali būti ypač naudinga, kai susiduriama su sudėtingomis ir paskirstytomis mikroservisų savybėmis. Izoliavus pagrindinė verslo logika iš išorinio pasaulio, Šešiakampė architektūra užtikrina, kad verslo logika išlieka nepakitusi, nepaisant kitų paslaugų ar išorinės sistemos.
Programinės įrangos projektavimo būdas gali turėti didelę įtaką jos raidai laikui bėgant. Palyginimas Šešiakampė architektūra į kitas architektūras suteikia mus geriau suprasti jos privalumus ir galimus kompromisus.
Daugiasluoksnė architektūra yra tradicinis architektūrinis modelis kuris struktūrizuoja programą į loginius sluoksnius - dažnai pateikimo, verslo ir duomenų prieigos sluoksnius. Pagrindinis šio modelio trūkumas yra tas, kad jis skatina stiprią priklausomybę tarp sluoksnių, todėl pasikeitimai viename sluoksnyje gali paveikti visą taikomąją programą.
Priešingai, Šešiakampė architektūra sumažina tokias priklausomybes. Vietoj sluoksnių jis turi taikomosios programos šerdis apsuptas keičiamų adapterių. Pavyzdžiui, duomenų bazės serverio pakeitimai turėtų įtakos tik atitinkamam adapteriui, o taikomosios programos šerdis ir kiti adapteriai nepaliesti.
Švari architektūra, kitas architektūrinis modelis, turi daug panašumų su Šešiakampė architektūra. Jie abu pabrėžia rūpesčių atskyrimą, siekia išskirti pagrindines verslo taisyklės nuo išorinių detalių ir laikytis Priklausomybės apvertimo principas.
Tačiau, Šešiakampė architektūra daugiau dėmesio skiriama tam, kaip programa sąveikauja su ne pasaulyje naudojant prievadus ir adapterius, o Švari architektūra pateikiama išsamesnė vidinių architektūros sluoksnių struktūra. Kitaip tariant, Švari architektūra gali būti laikomas papildomu rinkiniu Šešiakampė architektūra, su papildomomis gairėmis, kaip organizuoti vidinę programos struktūrą.
Svogūnų architektūra yra dar vienas architektūros stilius, kuriuo siekiama izoliuoti pagrindinė verslo logika iš išorinės sąsajos ir infrastruktūra. Jį sudaro keli koncentriniai sluoksniai, kurių centre yra domeno modelis, o kiekvienas sluoksnis gali priklausyti tik nuo jo viduje esančių sluoksnių.
Nors juos sieja bendras tikslas, "Hexagonal" ir Svogūnų architektūra pasiekti šiek tiek skirtingais būdais. Svogūnų architektūra daug dėmesio skiriama priklausomybių krypčiai, užtikrinant, kad visos priklausomybės būtų nukreiptos į vidų. Šešiakampė architektūranors taip pat pritaria į vidų nukreiptoms priklausomybėms, daugiau dėmesio skiria sąveikai su išorinis pasaulis per prievadus ir adapterius.
Pagrindinis privalumas Šešiakampė architektūra yra tai, kad joje daugiausia dėmesio skiriama testavimo galimybėms. Atskiriant pagrindinę programą nuo išorinis pasaulis naudojant prievadus ir adapterius, šešiakampė architektūra leidžia vykdyti automatiniai testai kuri gali užtikrinti programinės įrangos stabilumą ir teisingumą.
Į Šešiakampė architektūra. pirminiai prievadai, kurie apima pagrindinę verslo taisyklės, galima patikrinti nepriklausomai nuo išorinio pasaulio. Pavyzdžiui, užuot testuojant bendravus su tikra duomenų baze, galima duomenų bazės adapteris galima pakeisti į bandomąjį dublį, imituojantį tikros duomenų bazės elgesį. Tai leidžia kūrėjams sutelkti dėmesį į testavimą verslo taisyklėso ne sąveika su duomenų baze.
Be to, automatizuoti regresijos testai galima nesunkiai sukurti, kad būtų galima patvirtinti, jog sistema elgiasi taip, kaip tikimasi, kai atliekami pakeitimai. Toks testavimo lygis yra didelis privalumas prižiūrint ir atnaujinant programinę įrangą, nes padeda aptikti ir ištaisyti problemas ankstyvoje stadijoje. kūrimo procesas.
Be to, struktūra Šešiakampė architektūra taip pat palaiko integracijos bandymus. Pakeitus išoriniai komponentai (pvz., duomenų bazės serveris arba išorinė API) su bandymų dubliais, kūrėjai gali patikrinti, kaip taikomosios programos šerdis integruojasi su šiais komponentais nenaudojant išorinių sistemų. Tai gali gerokai padidinti bandymų greitį ir patikimumą.
Šešiakampė architektūra tampa viliojančiu sprendimu didžiulėje programinės įrangos kūrimo strategijų erdvėje. Ji išsiskiria tuo, kad atskiria taikomosios programos šerdis iš išorinės aplinkos, taip užtikrinant aukštą priežiūros, testavimo ir lankstumo lygį. Toks atskyrimas padeda programuotojams sutelkti dėmesį į pagrindinę verslo logika, tuo pat metu didinant programinės įrangos atsparumą pokyčiams. išorinės sistemos.
Nors šešiakampė architektūra turi kompromisų, dėl daugybės jos privalumų ji yra labai vertingas bet kurio kūrėjo įrankių rinkinio privalumas. Šioje srityje programinės įrangos architektūra, šešiakampis modelis ir toliau dominuoja.
Šiame straipsnyje, papildytame kodo pavyzdžiai, siekiama išsamiai suprasti Šešiakampė architektūra ir jo galimą naudą. Nepamirškite, kad veiksmingos architektūros paslaptis slypi ne aklame šablonų laikymesi, o pagrindinių principų supratime ir apgalvotame jų įgyvendinime, kad atitiktų konkrečius reikalavimus.
Šešiakampės architektūros srityje sąsaja, apibrėžta tarp taikymo sluoksnis ir duomenų sluoksnis labai svarbu. Nesvarbu, ar esate programinės įrangos architektas svarsto galimybę taikyti šią metodiką arba kūrėjas stengiantis suprasti jos sudėtingumą, akivaizdu, kad šios architektūros įtaka vis didėja. Ji demonstruoja įvairius būdus, kaip ją galima veiksmingai panaudoti. Pvz. bankininkystė paraiška. saugyklos sąsaja gali veikti kaip antrinis adapteris, jungiantis programos branduolys su išorinis kodas. Toks atskyrimas leidžia lanksčiai keisti konkretus įgyvendinimas iš failų sistema arba konkrečią technologiją, nedarant poveikio taikomųjų programų paslaugoms.
Svetainė plėtra komanda dabar gali dirbti su kairioji pusė paraišką, nesirūpindami dėl išoriniai veiksniai, taip užtikrinant sklandžią pažangą. Taigi, baigiame savo pažintį su pasauliu Šešiakampė architektūra, architektūros stilius, kurio įtaka programinės įrangos kūrimo srityje vis didėja.
