PHP 8.2: Mis on uus?
PHP uus versioon on kohe nurga taga. Milliseid uusi rakendusi peaksite teadma? Vaadake seda artiklit, et teada saada!

Tutvuge Hexagonal Architecture'i võimsusega tarkvara hooldatavuse, testitavuse ja kohandatavuse suurendamisel.
Selles põhjalikus juhendis süveneme nüansse, mis käsitlevad Kuuekandiline arhitektuur, uurides selle määratlust, komponente ja ajalugu. Teeme võrdlusi järgmiste valdkondade vahel Kuuekandiline arhitektuur ja muud populaarsed arhitektuurimustrid, et rõhutada selle unikaalseid tugevusi. Samuti uurime selle kriitilist rolli domeenipõhises disainis (DDD) ja mikroteenustes, mis on tänapäeva maailmas üha olulisemad. tarkvaraarendus.
Dünaamilise maastiku dünaamiline tarkvara arhitektuur, Kuuekandiline arhitektuur, mis on tuntud ka kui sadamad ja Adapterite muster, on kujunenud arvestatavaks konkurendiks, mis esitab järk-järgult väljakutse normidele traditsiooniline mitmekihiline arhitektuur.
Ajendatuna vajadusest arhitektuurse disaini järele, mis tagaks lihtsa testimise ja kõrgendatud hooldatavuse, Kuuekandiline arhitektuur oli välja mõeldud. Selle missioon: pakkuda jõulist tarkvararakendused mida ei piira välismaailma keerdkäikudest ja ebakindlusest.
Selle artikli jooksul alustame teekonda läbi annaalide, mis on seotud Kuuekandiline arhitektuur - arhitektuur, mis on lihtsuse ja võimsuse sõlmpunktis. Avaldame selle ajalugu, struktuuri ja põhimõtteid ning võrdleme seda teiste arhitektuuride ja arhitektuuride vahel. arhitektuurimustrid. Me uurime selle potentsiaali tõsta tarkvararakenduste kvaliteeti ja vähendada tarkvaratööstust ohustavat tehnilist võlga.
Selle keskmes on, Kuuekandiline arhitektuurvõi sadamad ja Adapterite arhitektuuron disainimudel, mis põhineb probleemide eraldamisel. See jaotab rakenduse kaheks esmaseks osaks: sisemine ja väline osa.
Sisemine osa, mida nimetatakse ka rakendussüdamikuks, sisaldab äriloogika ja domeeniobjektid - teie tarkvara väärtuse tuum. See sisemine pühamu jääb välistest mõjudest eraldatuks, säilitades seega terviklikkuse äriloogika ja domeenimudel.
Väljaspool seevastu on väliste süsteemide valdkond - alates kasutajaliides andmebaasile juurdepääsuks - mis suhtlevad rakenduse tuumaga. Neid suhtlusi hallatakse portide ja adapterite mehhanismi kaudu, mis tagab puhta eraldatuse rakenduse ja rakenduse tuum ja selle välised osalejad.
Kuuekandiline arhitektuur on Alistair Cockburni, visionääri idee, kes esmakordselt sõnastas selle kontseptsiooni vastusena traditsiooniliste meetodite piirangutele. mitmekihiline arhitektuur. Selle eesmärk oli luua tehnoloogiavaba domeenikiht mis isoleerib tuumiku äriloogika välistest mõjudest, nagu näiteks kasutajaliides kood ja juurdepääs andmebaasile.
Traditsioonilises mitmekihiline arhitektuur, võivad muutused ühes kihis kanduda üle teistesse kihtidesse, põhjustades soovimatuid tagajärgi. Lisaks sellele oli testimine keeruline kihtide vaheliste keeruliste sõltuvuste tõttu.
Kuuekandiline arhitektuur tekkis lahendus, mis pakub mudelit, mille puhul muutused süsteemi ühes osas ei kõiguta teisi osi. Sisuliselt püüti sellega muuta äriloogika agnostiline, kas sellele oli juurdepääs veebiliidese kaudu, a REST API, või isegi käsurea.
Kuuekandiline arhitektuur, mis sai oma nime kuusnurkse illusiooni järgi diagrammi kujutistes, koosneb kolmest põhikomponendist:. valdkondlik mudel, pordid (primaarne ja sekundaarne) ja adapterid (primaarne ja sekundaarne).
The valdkondlik mudel on tarkvararakenduse süda, mis kapseldab ärireeglid ja põhiloogika. Selles mudelis asuvad domeeni objektid sisaldavad konkreetseid äriväärtusi ja reegleid.
Järgmisena on meil sadamad, kanalid vahel. valdkondlik mudel ja välismaailma. Esmased sadamad paljastada rakenduse äriloogika, mis on väravaks rakenduse tuumale. Need esindavad kasutusjuhtumeid, mida rakendus toetab.
Sekundaarsed sadamadseevastu on väljapoole suunatud. Nad kujutavad liideseid, mida rakendus vajab välismaailmast, näiteks püsivuskihte või väliseid teenuseid.
Lõpuks on meil adapterid, mis toimivad tõlkijatena vahel. valdkondlik mudel ja välismaailma. Nad teisendavad andmed formaadist, mida kasutavad välissüsteemid vormingule, mida kasutab äriloogikaja vastupidi.
Pordid ja adapterid moodustavad silla rakenduse tuum ja välised osalejad. Esmased pordid esindavad rakenduse ärikasutusjuhtumeid, mis võimaldavad välistel osalejatel rakendusega suhelda. Mõelge neist kui teenuse liidestest teie ärikiht.
Teisest küljest on sekundaarsed pordid need liidesed, mida teie rakendus vajab välismaailmast. Need võivad olla sellised teenused nagu andmebaasile juurdepääs, veebiteenused või isegi ajateenused. Need avaldavad seda, mida rakendus vajab, sõltumata mis tahes tehnoloogiast või müüjaspetsiifilistest omadustest.
Adapterid on nende sadamate füüsilised ilmingud. Nad teisendavad andmed formaadist, mida kasutab äriloogika välisosalejate kasutatavale vormingule ja vastupidi. Need adapterid võivad olla REST APIde, SQL-andmebaaside või sõnumivahetussüsteemide tehnoloogiaspetsiifilised adapterite muundajad, kuid need võivad olla ka partiiskriptid või kasutajaliides kood. Adapterid moodustavad rakenduse piiri, mis võimaldab rakendusel olla tehnoloogiast sõltumatu.
Esmased pordid esindavad operatsioone, mida meie rakendus saab teha - käske, mida meie tuumdomeen saab vastu võtta. Neid rakendatakse sageli liidestena sellistes keeltes nagu Java, mis määratleb, milliseid toiminguid rakendus pakub.Esmased adapteridon seega nende liideste rakendused konkreetsete väliste osalejate jaoks.
Teisest küljest on sekundaarsed pordid liideseid, mida tuumdomeen kasutab välismaailmaga suhtlemiseks. Nende hulka võivad kuuluda liidesed domeeni objektide säilitamiseks või teadete saatmiseks. Sekundaarsed adapterid on nende liideste tegelikud rakendused - a SQL andmebaas adapter või näiteks e-posti teatiste adapter.
Üheskoos primaarsed ja sekundaarsed sadamad ja adapterid moodustavad rakenduse ümber paindliku, modulaarse piiri, mis eraldab domeeniloogika tehnilistest probleemidest. Need tagavad vastutuse selge lahususe ja võimaldavad süsteemi eri osadel areneda sõltumatult.
Sõltuvuse reegel on põhiprintsiip Kuuekandiline arhitektuur mis sätestab, et sõltuvused peaksid olema suunatud rakenduse tuuma suunas. Rakenduse tuum ei sõltu ühestki konkreetsest andmebaasist, kasutajaliidesest või muust välisest asutusest.
See põhimõte on tihedalt seotud Sõltuvuse ümberpööramise põhimõte (DIP), mis on üks objektorienteeritud projekteerimise SOLID-põhimõtetest. DIP sätestab, et kõrgetasemelised moodulid (äriloogika või domeenikiht ei tohiks sõltuda madala taseme moodulitest (nagu andmebaasiadapter). Selle asemel peaksid mõlemad sõltuma abstraktsioonidest. Selline sõltuvuste ümberpööramine võimaldab kõrgetasemelisi mooduleid isoleerida madalama taseme moodulite muudatustest, soodustades disaini, kus äriloogika juhib üldist arhitektuuri.
Kaardistamine on oluline protsess Kuuekandiline arhitektuur, kus tehnoloogiaspetsiifiline adapter konverteerib andmed formaadist, mida kasutab välissüsteemid formaati, mida meie domeenikiht saab aru. See kaardistamine hõlbustab tõlkimist rakenduse sisemiste ja väliste andmete esitusviiside vahel.
Näiteks, kui meie rakendusse tuleb HTTP päring väliselt liideselt, nagu näiteks REST API, tuleb taotluse andmed tõlkida JSONist domeeniobjektideks, mida rakendus saab kasutada. Selle tõlkimise eest vastutavad adapterid.
Kui aga rakendus peab saatma vastuse, teisendavad adapterid domeeniobjektid tagasi JSONiks. See võimaldab põhirakendusel jääda teadmatusse välismaailma eripäradest, tagades samal ajal, et ta suudab sissetulevaid andmeid õigesti tõlgendada ja väljaminevaid andmeid vormindada.
Kuuekandiline arhitektuur pakub hulgaliselt eeliseid, mis on suures osas tingitud tarkvararakenduste lahtisidumisest nende välistest elementidest ja süsteemi erinevate osade vahelisest selgest eristamisest.
Üks peamisi eeliseid on probleemide lahusus, mis soodustab koodi hooldatavust ja loetavust. Tuuma lahtisidumine äriloogika alates välismaailm võimaldab muudatusi tehnoloogiaspetsiifilistes adapterites, andmebaasides ja kasutajaliidesed ilma tuumikut muutmata äriloogika.
Kuuekandiline arhitektuur paistab silma ka testitavuse vallas. Arhitektuuri välissõltuvuste isoleerimine võimaldab arendajatel käivitada automatiseeritud regressioonitestid ja kirjutada automatiseeritud testimise komplektid kergemini. Selline eraldatus suurendab rakenduse vastupidavust, kuna muutused ühes komponendis ei mõjuta teisi komponente negatiivselt.
Lisaks toetab arhitektuur mitu adapterit sama pordi jaoks, mis võimaldab kasutada sama sekundaarse pordi jaoks mitut adapterit. Selline paindlikkus võimaldab rakendusel suhelda eri tüüpi andmebaasidega või toetada erinevaid kasutajaliides platvormid.
Tarkvaraarenduse valdkonnas on hooldatavus sageli ihaldatud omadus, kuid see on omadus, mida traditsioonilised arhitektuuristiilid ei pruugi pakkuda. Kuuekandiline arhitektuur paistab siinkohal silma oma tugeva rõhuasetusega hooldatavusele.
Keskendudes probleemide lahususele, Kuuekandiline arhitektuur tagab, et ühes rakenduse osas tehtud muudatused ei mõjuta teisi osi. See omadus aitab vähendada koodi mõistmiseks ja silumiseks kuluvat aega ja vaeva.
Lisaks sellele soodustab arhitektuur koodi korduvkasutamist, edendades disaini, kus tuumiku äriloogika on isoleeritud konkreetsetest tehnoloogiatest, mida kasutatakse rakenduse juhtimiseks. Selline lahtisidumine võimaldab arendajatel välja vahetada, uuendada või ümber kujundada välised liidesed mõjutamata põhiloogikat, vähendades vigade sisseviimise riski.
Tehniline võlg, mis on oluline probleem tarkvaraarenduses, viitab tulevastele kuludele, mis on seotud koodis olevate lühikeste ja häkkide parandamise ja parandamisega. Kuuekandiline arhitektuur pakub ennetavat lähenemist sellise võla vähendamiseks.
hõlbustades selget eraldamist tuumiku äriloogika ja välised komponendid, Kuuekandiline arhitektuur vähendab tõenäosust, et kood on omavahel seotud, mis võib tekitada hoolduse peavalu ja suurendada tehnilist võlga. Arhitektuurile omane hooldatavus ja testitavus mängivad samuti rolli tehnilise võla vähendamisel, kuna need aitavad vältida vigade sisseviimist ja hõlbustavad refaktooringut.
Lisaks sellele on võime Kuuekandiline arhitektuur toetada muudatusi infrastruktuuris, ilma et oleks vaja teha muudatusi infrastruktuuri äriloogika annab kaitsva puhvri tehnilise võla vastu. See võime võimaldab meeskondadel kohaneda nõuete või tehnoloogiate muutustega, ilma et nad peaksid suuri rakenduse osi ümber kirjutama.
Praktikas, Kuuekandiline arhitektuur toob struktureeritud lähenemisviisi tarkvaraarendusele. Kuusnurkne piir ümber põhirakenduse annab selge piiritluse, kus rakendus lõpeb ja kus on välismaailm algab.
Adapterid toimivad väravavalvuritena, mis tõlgivad väliste osalejate taotlused selliseks, et põhirakendus saaks neist aru, ja vastupidi. Seda tehes tagavad nad, et põhirakendus jääb välismaailma eripärade suhtes agnostiliseks, olgu see siis andmebaas, andmebaas, või väline API, või kasutajaliides.
Valdkonnapõhine disain (DDD - Domain-Driven Design) on tarkvaraarenduse metoodika, mis seab prioriteediks põhilised ärikontseptsioonid ehk domeeniloogika, mis on disaini peamine liikumapanev jõud. See metoodika on märkimisväärselt hästi kooskõlas Kuuekandiline arhitektuur, mis samuti rõhutab äriloogika ja valdkondlik mudel arhitektuuris.
Seoses Kuuekandiline arhitektuur, DDD tagab, et rakenduse kõrgetasemelised moodulid - domeenikihid - on sõltumatud välistest elementidest, nagu näiteks kasutajaliides või andmebaasi. Selline sõltumatus on tagatud portide ja adapterite abil, mis kaitsevad domeenikihti eripärade eest. välissüsteemid, võimaldades seega domeeniloogika areneda iseseisvalt.
Lisaks sellele, Kuuekandiline arhitektuur täiendab DDD strateegilise disaini põhimõtteid, sealhulgas piiratud kontekstide kontseptsiooni. Iga piiratud konteksti võib DDD-s kujutada kui kuusnurka, mis on kujutatud Kuuekandiline arhitektuur, mille keskmes on domeenimudel ja sadamad ja adapterid tegutsedes piiridena.
Mikroteenused, teine kaasaegne arhitektuuristiil, võivad suuresti kasu saada Kuuekandiline arhitektuur. Mikroteenuste detsentraliseeritud olemus - kus iga teenus kapseldab konkreetset ärivõimalust - sobib hästi kokku kapseldamise ja äriloogika kuusnurga südames.
Nii nagu iga mikroteenus peaks olema lõdvalt seotud teistega, peaks iga kuusnurk olema Kuuekandiline arhitektuur on ka teistest isoleeritud, suheldes ainult määratletud portide ja adapterite kaudu. See võimaldab igal mikroteenusel omada omaette kuusnurkne arhitektuur, mille tulemuseks on autonoomsete, vabalt seotud teenuste kogum.
Isolatsioon, mida pakub Kuuekandiline arhitektuur võib olla eriti kasulik mikroteenuste keerukuse ja hajutatud olemuse käsitlemisel. Isoleerides põhiline äriloogika välismaailmast, Kuuekandiline arhitektuur tagab äriloogika jääb puutumatuks, sõltumata muudatustest teistes teenustes või välissüsteemid.
See, kuidas tarkvara kujundatakse, võib mõjutada oluliselt selle arengut aja jooksul. Võrreldes Kuuekandiline arhitektuur teiste arhitektuuridega annab meile sügavama arusaama selle tugevatest külgedest ja võimalikest kompromissidest.
Kihiline arhitektuur on traditsiooniline arhitektuurimuster mis struktureerib rakenduse loogilisteks kihtideks - sageli esitlus-, äri- ja andmekasutuskihtideks. Selle mustri peamine puudus on see, et see soodustab tugevat sõltuvust kihtide vahel, mis viib olukorrani, kus muutused ühes kihis võivad mõjutada kogu rakendust.
Seevastu, Kuuekandiline arhitektuur minimeerib selliseid sõltuvusi. Kihtide asemel on see rakenduse tuum ümbritsetud vahetatavate adapteritega. Muudatused andmebaasiserveris mõjutavad näiteks ainult vastavat adapterit, jättes andmebaasi rakenduse tuum ja muud adapterid puutumata.
Puhas arhitektuur, teine arhitektuurimuster, on palju sarnaseid jooni Kuuekandiline arhitektuur. Nad mõlemad rõhutavad probleemide eraldamist, püüavad isoleerida tuumiku ärireeglid välistest üksikasjadest ja järgida Sõltuvuse ümberpööramise põhimõte.
Siiski, Kuuekandiline arhitektuur keskendub rohkem sellele, kuidas rakendus interakteerub väljaspool maailma sadamate ja adapterite abil, samas kui Puhas arhitektuur pakub arhitektuuri sisemiste kihtide üksikasjalikumat struktuuri. Teisisõnu, Puhas arhitektuur võib vaadelda kui superset Kuuekandiline arhitektuur, koos täiendavate juhistega rakenduse sisemise struktuuri korraldamiseks.
Sibula arhitektuur on teine arhitektuuriline stiil, mille eesmärk on isoleerida põhiline äriloogika alates välised liidesed ja infrastruktuur. Sellel on mitu kontsentrilist kihti, mille keskel on domeenimudel, ja iga kiht võib sõltuda ainult selle sees olevatest kihtidest.
Kuigi neil on ühine eesmärk, on Hexagonal ja Sibula arhitektuur saavutada seda veidi erinevalt. Sibula arhitektuur paneb suurt rõhku sõltuvuste suunale, tagades, et kõik sõltuvused lähevad sissepoole. Kuuekandiline arhitektuurtoetab küll samuti sissepoole suunatud sõltuvusi, kuid asetab suurema rõhu koostoimele välismaailm läbi selle sadamate ja adapterite.
Peamine tugevus on Kuuekandiline arhitektuur on selle keskendumine testitavusele. Eraldades põhirakenduse tuumikrakendusest välismaailm sadamate ja adapterite kaudu võimaldab Hexagonal Architecture teostada automatiseeritud testid mis võib tagada usalduse tarkvara stabiilsuse ja korrektsuse suhtes.
In a Kuuekandiline arhitektuur... primaarsed sadamad, mis kapseldavad tuumiku ärireeglid, saab testida välismaailmast sõltumatult. Näiteks selle asemel, et testimise ajal suhelda reaalse andmebaasiga, võib näiteks andmebaasi adapter saab välja vahetada testkaksikuga, mis simuleerib reaalse andmebaasi käitumist. See võimaldab arendajatel keskenduda testimisele ärireeglidpigem kui andmebaasi koostoimimine.
Lisaks sellele, automatiseeritud regressioonitestid saab hõlpsasti konstrueerida, et kontrollida, kas süsteem käitub muudatuste tegemisel ootuspäraselt. Selline testitavuse tase on tarkvara hooldamisel ja uuendamisel oluline eelis, sest see aitab tuvastada ja parandada probleeme arendusprotsessi varases etapis.
Lisaks sellele on struktuur Kuuekandiline arhitektuur toetab ka integratsioonitestimist. Asendades välised komponendid (nagu andmebaasiserver või väline API) testdublettidega, saavad arendajad testida, kuidas rakenduse tuum integreerub nende komponentidega, ilma et oleks vaja kasutada tegelikke välissüsteeme. See võib oluliselt parandada testide kiirust ja usaldusväärsust.
Kuuekandiline arhitektuur ilmneb kui ahvatlev lahendus tarkvaraarenduse strateegiate laialivalguvuses. See eristab end selle poolest, et lahutab eraldiseisva rakenduse tuum väliskeskkonnast, tagades seeläbi suure hooldatavuse, testitavuse ja paindlikkuse. Selline eraldamine hõlbustab arendajatel keskenduda põhilistele äriloogika, tugevdades samal ajal tarkvara vastupanuvõimet muutuste suhtes. välissüsteemid.
Kuigi kuusnurkse arhitektuuriga on seotud kompromissid, teeb selle arvukad eelised sellest väga väärtusliku vara iga arendaja tööriistakasti. Valdkonnas tarkvara arhitektuurjätkab kuuekandiline mudel oma domineerimist.
See artikkel, mis on vürtsitatud koodinäitedeesmärk on anda põhjalik arusaam Kuuekandiline arhitektuur ja selle võimalikku kasu. Pidage meeles, et tõhusa arhitektuuri saladus ei seisne mitte mustrite pimedas järgimises, vaid selle aluseks olevate põhimõtete mõistmises ja nende läbimõeldud rakendamises konkreetsete nõuete täitmiseks.
Kuuekandilise arhitektuuri valdkonnas on liides, mis on määratletud järgmiste elementide vahel rakenduskihi ja andmekihi on ülimalt tähtis. Olenemata sellest, kas olete tarkvaraarhitekt kes kaalub selle metoodika kasutuselevõttu või arendaja, kes püüab mõista selle keerukust, on selge, et selle arhitektuuri mõju kasvab jätkuvalt. See näitab erinevaid viise, kuidas seda saab tõhusalt kasutada. Näiteks on ühes pangandus taotlus... repositooriumi liides võib toimida sekundaarse adapterina, mis ühendab rakenduse tuum koos väline kood. Selline eraldamine võimaldab paindlikult vahetada konkreetne rakendamine a failisüsteem või konkreetset tehnoloogiat, ilma et see mõjutaks rakendusteenuseid.
The areng meeskond saab nüüd töötada vasakpoolne rakendusest, ilma et peaks muretsema välised tegurid, tagades seeläbi tõrgeteta arengu. Ja nii me lõpetame meie uurimise maailma kohta Kuuekandiline arhitektuur, arhitektuuristiil, mis jätkab oma mõju laiendamist kogu tarkvaraarenduse maastikul.