Një përmbledhje e rëndësishme: Arkitektura E Pastër, Robert C. Martin

Ky do të jetë një tregim mbi përshtypjen e librit, si dhe do të shqyrtohen disa koncepcione dhe njohuri që, falë këtij libri, janë mësuar.

Arkitektura

A mund t'i jepni njĂ« pĂ«rgjigje tĂ« qartĂ« pyetjes, çfarĂ« Ă«shtĂ« arkitektura? ÇfarĂ« Ă«shtĂ« arkitektura nĂ« kontekstin e programimit dhe dizajnit? Cila Ă«shtĂ« roli i saj? Ka shumĂ« paqartĂ«si nĂ« kĂ«tĂ« term. Duket se gjithçka Ă«shtĂ« e qartĂ«, por gjithsesi Ă«shtĂ« disi abstrakte dhe pa saktĂ«si. Martin mendon, dhe unĂ« e pajtohem me tĂ«, se njĂ« aplikacion ka dy pĂ«rbĂ«rĂ«s:

  1. Sjellja (behavior) — funksionet dhe detyrat qĂ« programi (komponenti, shĂ«rbimi) i kryen.
  2. Arkitektura — ky term kryesisht ka tĂ« bĂ«jĂ« me ndryshimin e aplikacionit.

Por edhe nĂ«se aplikacioni kryen shumĂ« mirĂ« detyrĂ«n qĂ« duhet, kjo nuk nĂ«nkupton aspak qĂ« ai ka njĂ« arkitekturĂ« tĂ« mirĂ«. Arkitektura — nuk Ă«shtĂ« pĂ«r sjelljen e aplikacionit. Arkitektura — Ă«shtĂ« pĂ«r lehtĂ«sinĂ« e ndryshimit, arkitektura — Ă«shtĂ« pĂ«r lehtĂ«sinĂ« e shpĂ«rndarjes, arkitektura — Ă«shtĂ« pĂ«r pavarĂ«sinĂ« e zhvillimit. Arkitektura — Ă«shtĂ« pĂ«r shpejtĂ«sinĂ« me tĂ« cilĂ«n e kupton njĂ« person i ri nĂ« ekip.

Dhe ja se si të ndërtojmë këtë arkitekturë, si të eliminojmë dhimbjen e kokës me ndryshimin e vogël të kërkesave nga PM ose nga palët e interesuara: për këtë do të flasë libri.

Për autorët

Para se të flasë për këtë libër, dëshiroj të them pak për veten.
Aktualisht jam një Zhvillues Strong Junior, i specializuar në zhvillimin e shërbimeve përmes ASP .NET CORE.

Kam punuar për një vit në një "galerë", dhe duket se po i përballoj pak nga pak.

Këtë libër e kam lexuar tashmë 2 herë dhe rekomandoj të lexojmë të gjithëve:

  • zhvilluesve tĂ« sistemeve embeded;
  • front-end developer tĂ«;
  • back-end developer tĂ«;
  • edhe devops.

Përfundimisht, për të gjithë ata që janë ndonjëherë të lidhur me zhvillimin e softuerit, nënkuptoj zhvillimin direkt të ndryshme atje. Sipas meje, nuk përfshijmë Sales dhe PM këtu (megjithëse do të ishte gjithashtu e dobishme të dihej se pse një dev shpesh shpenzon dy herë më shumë kohë për një detyrë), rekomandoj të lexohet ky libër.
Dhe tani do të përpiqem të argumentoj pse mendoj kështu.

Pak njĂ« informacion tĂ« vogĂ«l rreth autorit tĂ« kĂ«saj libri (sepse pĂ«r mua autoriteti i atij qĂ« shkruan ka shumĂ« rĂ«ndĂ«si). Mendoj se do tĂ« mĂ« kuptoni, ndonĂ«se kjo nuk Ă«shtĂ« gjithmonĂ« e drejtĂ«, por nĂ«se ju flet njĂ« njeri me autoritet nĂ« fushĂ«n e tij — keni njĂ« besim shumĂ« mĂ« tĂ« madh te ajo qĂ« thotĂ« ai. PĂ«r shembull, mendoj se do tĂ« besoni mĂ« shumĂ« nĂ« diagnozĂ«n qĂ« ju jep njĂ« mjek, sesa nĂ« atĂ« tĂ« ndonjĂ« njeriu nga turma (qĂ« ka kĂ«rkuar simptomat nĂ« internet).

Robert Martin — i njohur gjithashtu si Uncle Bob (djedhi Bob) — punon nĂ« fushĂ«n e programimit, pĂ«rkatĂ«sisht nĂ« sisteme tĂ« ndryshme (nga shĂ«rbimet web nĂ« sistemet e integruara), qĂ« nga viti 1970. Ai Ă«shtĂ« njĂ« konsultant dhe arkitekt teknik, ka shkruar pĂ«r revista tĂ« ndryshme teknike, Ă«shtĂ« njĂ« programues shumĂ« i pĂ«rvojshĂ«m, dhe njĂ« person qĂ« ka luajtur njĂ« nga rolesht kryesore nĂ« krijimin e principeve tĂ« njohura SOLID (mund tĂ« thuhet se Ă«shtĂ« krijuesi). Gjithashtu, do tĂ« doja tĂ« shtoja se kĂ«tĂ« libĂ«r mĂ« rekomandoi lideri im i ekipit, me mbi 15 vite pĂ«rvojĂ« nĂ« fushĂ«.

Rreth librit

Varësitë

Para se tĂ« lexoja librin, kam lexuar disa artikuj nĂ« tĂ« njĂ«jtĂ«n platformĂ«, ku shfaqej fjala “varĂ«si”. ÇfarĂ« do thotĂ« kjo, kush Ă«shtĂ« i varur nga kush, çfarĂ« konkretisht nĂ«nkupton “tĂ« jesh i varur”, dhe si mund njĂ« klasĂ« tĂ« jetĂ« e varur nga ndonjĂ«?

Dhe kështu, gjatë leximit të librit kam kuptuar dy çështje:

VarĂ«sia — Ă«shtĂ« njĂ« term, qĂ« do tĂ« thotĂ« se njĂ« klasĂ« (komponent, shĂ«rbim) e njeh njĂ« tjetĂ«r klasĂ« (komponent, shĂ«rbim), dhe kjo njohje nĂ« nivelin e kodit pĂ«rcaktohet (tani programuesit e Java, C#, dhe C do tĂ« mĂ« kuptojnĂ«) me njĂ« import tĂ« caktuar tĂ« hapĂ«sirĂ«s emĂ«rore. Ndryshe: keni njĂ« klasĂ« A me hapĂ«sirĂ«n emĂ«rore Default.Classes dhe njĂ« klasĂ« B Another.Classes. Pra, nĂ«se nĂ« kodin burim tĂ« klasĂ«s A ndodhet pĂ«rdorimi i Another.Classes; — kjo do tĂ« thotĂ« se klasa A Ă«shtĂ« e varur nga klasa B.
PĂ«r tĂ« kuptuar nĂ« skemĂ«, ku Ă«shtĂ« klasa e varur, e ku jo — shikoni drejtimin e shigjetĂ«s: nĂ« 1) shigjeta do tĂ« tregojĂ« nga klasa A nĂ« drejtim tĂ« klasĂ«s B. Kjo do tĂ« thotĂ« se klasa B Ă«shtĂ« mĂ« e pavarur se klasa A. Ndryshimet nĂ« klasĂ«n A nuk do t'i sjellin asnjĂ« “dĂ«m” klasĂ«s B.

Një përmbledhje e rëndësishme: Arkitektura E Pastër, Robert C. Martin

SOLID

NjĂ« nga arsyet kryesore, qĂ« mĂ« shtyu tĂ« lexoj kĂ«tĂ« libĂ«r — Ă«shtĂ« shpjegimi i principeve SОLID nga burimi origjinal, sepse djali Robert i zhvilloi kĂ«to principe dhe mund tĂ« thuhet se falĂ« tij ne dĂ«gjojmĂ« kĂ«tĂ« emĂ«r — SOLID.
PĂ«r ata qĂ« nuk e dinĂ« — kĂ«to parime flasin dhe rekomandojnĂ« qĂ« tĂ« dizajnojnĂ« aplikacionet e tyre sipas 5 rregullave:

S — SRP (Parimi i pĂ«rgjegjĂ«sisĂ« sĂ« vetme)
O — OCP (Parimi i hapur-mbyllur)
L — LSP (Parimi i zĂ«vendĂ«simit tĂ« Liskov)
I — ISP (Parimi i ndarjes sĂ« ndĂ«rfaqeve)
D — DIP (Parimi i inverzimit tĂ« varĂ«sive)

Të gjitha këto parime mund të aplikohen në nivelin e klasave dhe objekteve, në nivelin e moduleve dhe komponentëve dhe në nivelin e lejerve (shërbimeve).

NĂ«se mendoni se Parimi i pĂ«rgjegjĂ«sisĂ« sĂ« vetme — Ă«shtĂ« nĂ« lidhje me atĂ« qĂ« klasa ose moduli duhet tĂ« bĂ«jĂ« vetĂ«m njĂ« gjĂ« — atĂ«herĂ« patjetĂ«r duhet tĂ« lexoni tĂ« paktĂ«n kapitullin mbi SOLID. Sepse ajo pĂ«rkufizim qĂ« u dha mĂ« lart — Ă«shtĂ« njĂ« pasojĂ«, por jo pĂ«rkufizimi i vetĂ« parimit.

Në lidhje me Inverzimin e Varësive

Dua të tërheq vëmendjen në shpjegimin e Parimit të Inverzimit të Varësive (ajo D nga SOLID). Gjatë leximit të librit, kuptova se nuk është vetëm një parim, por gjithashtu një mekanizëm dhe mjet me të cilin mund të ndryshoni drejtimin e varësive tuaja, duke bërë, për shembull, logjikën e biznesit (DOMAIN) të pavarur nga detajet e zbatimit të Shtresës së Qasjes së Të Dhënave (DAL).

Një përmbledhje e rëndësishme: Arkitektura E Pastër, Robert C. Martin

Megjithëse vetë parimi përveç të tjerëve në SOLID do të thotë paksa ndryshe nga mekanizmi, vetë mekanizmi përdoret gjatë gjithë librit dhe është një nga metodat kryesore për të inverzuar dhe ndryshuar drejtimin e varësive tuaja, që po ashtu përdoret në DDD.

Për marrjen e vendimeve arkitektonike

Shumë shpesh në libër do të përmendet parimi për marrjen e vendimeve të rëndësishme arkitektonike: për atë se cilën DB të përdorni, cilin framework të përdorni, cilën bibliotekë të lidhni, se çfarë të përdorni si motor kërkimi etj.

Pra, autori mendon: ju duhet TË PRISHNI sa mĂ« pak vendime tĂ« kĂ«tij lloji. Sepse kĂ«rkesat mund tĂ« ndryshojnĂ«, kufizimet nĂ« performancĂ« gjithashtu, dhe pĂ«rbĂ«rja e sjelljes ka tendencĂ« tĂ« ndryshojĂ«. NĂ« procesin e zhvillimit, njĂ« vendim mund tĂ« duket mĂ« pak efektiv se njĂ« tjetĂ«r, mĂ« pak i rehatshĂ«m se njĂ« tjetĂ«r. Dhe forza e arkitekturĂ«s tuaj do tĂ« pĂ«rcaktojĂ« se sa shpejt dhe pa dhimbje mund tĂ« zĂ«vendĂ«soni njĂ« teknologji me njĂ« tjetĂ«r (pĂ«r kĂ«tĂ« flet po ashtu OCP).

PĂ«r shembull, papritur, mund tĂ« vendosni tĂ« pĂ«rdorni MongoDb nĂ« vend tĂ« Postgresql, ose ndonjĂ«herĂ« skedarĂ«, ose tĂ« pĂ«rdorni tĂ« dhĂ«na tĂ« simulueshme, operacionet me tĂ« cilat do tĂ« kryhen nĂ« memorie. Dhe nĂ«n disa kushte — kjo mund tĂ« detyrojĂ« qĂ« tĂ« rinovoni pothuajse tĂ« gjithĂ« logjikĂ«n.

Për të parandaluar që situata të tilla të ndodhin, ne mund të përdorim disa mekanizma që do të vonojnë sa më shumë që të jetë e mundur vendimmarrjen. Një nga këta mekanizma është abstraksioni.

Referencat për DDD

DDD - Domain Driven Design - është një qasje për zhvillimin e shërbimeve me logjikë biznesi komplekse, që është kritike ndaj ndryshimeve, e orientuar për maksimalizimin e kuptimit nga ana e menaxherëve të projekteve (PM, menaxherët e shitjeve etj.), me anëtarët e zakonshëm. Kështu, që çdo anëtar i projektit të ketë një gjuhë të zakonshme, dhe që çdo njeri të mund të kuptojë tjetrin, dhe që të gjithë të mendojnë në një domain me rregulla të njëjta biznesi.

Nëse ju jeni adhurues i DDD, ose dëshironi të jeni, ose nuk kuptoni diçka në lidhje me të, por dëshironi të kuptoni - libri është i detyrueshëm për t'u lexuar, veçanërisht pjesa e dytë e librit.

Këtu autori shpjegon rreth ekzistencës së Rregullit të Varësisë, dhe pse, duke i ndjekur atë - ju do të ndërtoni arkitekturën e duhur të aplikacionit. Pse varësitë duhet të ndjekin drejtimin në komponentët e Politikës së Lartë, pse domain (komponenti i Politikës së Lartë) duhet të jetë tërësisht i pavarur nga infrastruktura dhe si do ta thjeshtoj këtë për ju në shpërndarje dhe zhvillim

Një përmbledhje e rëndësishme: Arkitektura E Pastër, Robert C. Martin

Abstraksioni

Daja Rob, gjithashtu, tregon se si detajet e implementimit mund të dëmtojnë sistemin tuaj, dhe të mos lejojnë evoluimin pa dhimbje në të ardhmen.

Mos harroni!
Baza e të dhënave - është një detaj implementimi
Kënaqësitë (Web, Mobile, etj) - detaje implementimi
Kornizat - janë detajet e implementimit

Duhet të abstraktohemi sa më shumë nga të gjitha këto dhe të mos varemi, duke përdorur varësinë e përshkruar më sipër me ndërfaqet dhe abstraksionet, Rregullin e Varësisë dhe mekanizma të tjera

Metodat e ndërtimit të moduleve

Ky seksion më pëlqeu veçanërisht si zhvillues i shërbimeve në ASP .NET CORE. Këtu përshkruhen metodologjitë e ndërtimit të një arkitekture të vetme shërbimi nga komponentët e gatshëm.

Robert përshkroi 4 skema të mundshme të ndarjes së shtresave.

Ai dha të kuptohet pse mekanizmi i përdorur aq shpesh i arkitekturës tre-shtresore: UI (kontrollorët), Shërbimet (Domeni), DAL (Baza e të Dhënave) - është mjaft i keq krahasuar me të tjerët. Kam parë jo shumë projekte, por në çdo mikro-shërbim, për shembull në backend, përdoret e njëjta arkitekturë tre-shtresore.

Po shkurtimisht, shpesh përdoret arkitektura një-komponent-një-shërbim. Në përgjithësi, të dyjat nuk janë të këqija, por ajo ka mjaft disavantazhe, krahasuar, për shembull, me si ndërtuar arkitektura kur përdoret DDD, veçanërisht në shërbime të kritikuara ndaj ndryshimeve dhe të komplikuara.

Në përgjithësi, ky është fundi i kësaj përmbledhje për librin. Librin vetë e pashë shumë të mirë, nuk më ka penduar për çfarë kam lexuar, faleminderit autorit. Ju, të dashur lexues, faleminderit për vëmendjen, mos gjykoni ashpër - ky publikim është i bazuar në përshtypjet nga libri dhe entuziazmin tim personal.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster