Гарчиг[Нуух][Үзүүлэх]
Цэвэр, удаан эдэлгээтэй кодыг бий болгох нь аливаа төслийн програм хангамжийг хөгжүүлэх урт хугацааны амжилтанд чухал ач холбогдолтой. Цэвэр, тогтвортой кодын ялгаа нь эхнийх нь бүх хугацаанд шинэчлэгдэж, засвар үйлчилгээ хийх боломжтой байдаг бол сүүлийнх нь унших, ойлгох, засварлахад хялбар байдаг.
Эдгээр удирдамж нь шинэ функцуудыг хурдан нэмж, алдааг шийдвэрлэхийн тулд зохион байгуулалтгүй кодын төөрдөг шороогоор шигших ачааллаас хөгжүүлэгчдийг чөлөөлдөг тул маш чухал юм.
Програм хангамжийн төслүүдэд тодорхой бүтэц, санаа зовоосон асуудлуудыг салгах замаар сонгины архитектур нь эдгээр зорилгод хүрэхэд тусална.
Сонгины архитектур нь программыг төвлөрсөн давхарга болгон хуваах замаар доорх түвшний онцлогийг бодолгүйгээр давхарга бүрийн логик дээр анхаарлаа төвлөрүүлэх боломжийг хөгжүүлэгчид олгодог. Нэг давхаргад өөрчлөлт оруулах нь бусад давхаргад нөлөөлөхгүй тул хариуцлагыг ингэж хуваах нь кодын засвар үйлчилгээ, шинэчлэлтийг цаг хугацааны явцад хялбаршуулдаг.
Хөгжүүлэгчид сонгины архитектурын үзэл баримтлалыг хэрэгжүүлснээр урт хугацаанд ажиллагаатай, удирдах боломжтой, уян хатан программ хангамжийг бий болгож чадна.
Энэ нийтлэлд бид сонгины архитектурын үндсэн зарчим, давуу тал, таны төслүүдэд хэрэглэх талаар судлах болно.
Сонгины архитектур гэж юу вэ?
Програмын кодыг функциональ байдал, зорилгынхоо дагуу давхаргажуулах аргыг сонгины архитектур гэж нэрлэдэг. Загвар нь төв домэйны загварын эргэн тойронд төвлөрсөн тойрог буюу давхаргууд байгуулахыг шаарддаг бөгөөд тэдгээр нь тус бүр нь тодорхой үүрэг хариуцдаг бөгөөд гол руу чиглэсэн хамааралтай байдаг.
Хэрэглээний дэд бүтэц болон хэрэглэгчийн интерфэйс нь програмын гаднах давхаргуудаар илэрхийлэгддэг бол програмын үндсэн домайн логик нь хамгийн өндөр давхаргатай давхаргаар илэрхийлэгддэг.
Сонгины архитектур нь практик ач холбогдолтой, ялангуяа өргөн цар хүрээтэй, нарийн төвөгтэй програм хангамжийн системийг бий болгоход ихээхэн ач холбогдолтой юм. Аппликейшн давхаргад баригдсан үед кодын баазыг турших, засвар үйлчилгээ хийх, шинэчлэх нь илүү хялбар бөгөөд энэ нь бизнесийн логикийг дэлгэцийн давхарга болон дэд бүтцээс тусгаарладаг.
Нэмж дурдахад, энэхүү модульчлагдсан байдал нь хөгжүүлэгчдэд системийн бусад бүрэлдэхүүн хэсгүүдэд нөлөөлөхгүйгээр хэсэг, технологийг солих боломжийг олгодог бөгөөд энэ нь зарим систем эсвэл үйлчилгээ хуучирсан эсвэл хоцрогдсон тохиолдолд маш чухал байж болох юм.
Сонгины архитектурын давхаргууд
Сонгины архитектурын үндэс нь төвлөрсөн тойрог буюу давхрагын тухай ойлголт бөгөөд тэдгээр нь тус бүр нь тодорхой үүрэг гүйцэтгэдэг бөгөөд бусадтай тодорхой тодорхойлогдсон арга замаар харилцан үйлчилдэг. Сонгины архитектурын янз бүрийн давхаргууд болон тэдгээрт юу багтсаныг доор жагсаав.
Домэйн давхарга
Сонгины архитектурын хамгийн гүн давхарга болох програмын чухал домэйн логикийг энд оруулсан болно. Энэ нь тоймлон харуулж байна өгөгдлийн бүтэц, загварууд болон програмын арилжааны домэйныг тодорхойлсон байгууллагууд.
Бизнесийн дүрмийн хэрэгжилт, баталгаажуулалт болон програмын үндсэн функцийг бүрдүүлдэг бусад чухал шинж чанарууд нь домайн давхаргын үүрэг юм. Домэйн логикийг бусад түвшнээс тусгаарласан тохиолдолд шалгах, хадгалахад хялбар байдаг.
Програмын давхарга
Хэрэглээний давхарга нь домэйн давхарга ба дэд бүтцийн давхаргын хооронд байрладаг. Хэрэглээний тохиолдлууд, удирдамж болон бусад элементүүд нь програмын бизнесийн логикийг гүйцэтгэдэг програмын логикийг бүрдүүлдэг. Үйлдлээ дуусгахын тулд хэрэглээний давхарга нь домэйн давхаргатай холбогддог.
Мөн өгөгдлийг унших, бичихийн тулд дэд бүтцийн давхаргатай өгөгдөл солилцдог. Түүнчлэн, энэ давхарга нь дэд бүтцийн давхарга нь бизнесийн хэрэгцээг олж авахын тулд ашиглаж болох API-г санал болгодог бөгөөд эдгээр шаардлагыг ашиглах боломжтой код болгон хувиргах үүрэгтэй.
Дэд бүтцийн давхарга
Өгөгдлийн сан, API болон гадаад үйлчилгээ зэрэг гадны байгууллагуудтай харилцдаг давхаргыг дэд бүтцийн давхарга гэж нэрлэдэг. Энэ нь интерфэйсээр дамжуулан домэйн давхаргатай харилцаж, хэрэглээний давхаргад заасан интерфэйсүүдийн хэрэгжилтийг санал болгодог.
Мэдээллийн хадгалалт, сүлжээ, аюулгүй байдал нь энэ давхарга нь гадны эх сурвалжтай холбогдоход анхаардаг цөөн хэдэн онцлог шинж чанарууд юм. Дэд бүтцийн давхаргыг бусад түвшнээс хараат бус байлгах замаар програмын бусад хэсэгт нөлөөлөхгүйгээр өөрчилж, шинэ боломжуудыг нэмж болно.
Илтгэлийн давхарга
Програмын хэрэглэгчийн интерфэйс нь харагдац болон хянагчдаас бүрдэх ба танилцуулгын давхарга нь түүнийг удирдах үүрэгтэй. Өгөгдөл авах, тохируулах, хэрэглэгчийн оролт, гаралтыг хянахын тулд энэ нь хэрэглээний давхаргатай холбогддог.
Даалгавруудыг гүйцэтгэх, өгөгдлийг эцсийн хэрэглэгчдэд ойлгомжтой байдлаар харуулахын тулд энэ давхарга нь хэрэглээний давхаргатай хамт ажилладаг. Хэрэглэгчийн интерфэйсийг өөрчлөх, кодын баазыг хадгалахад хялбар болгохын тулд үзүүлэнгийн давхаргыг бусад түвшнээс тусад нь байлгах хэрэгтэй.
Сонгины архитектурын 5 үндсэн зарчим
Програм хангамжийн дизайн нь Сонгины Архитектурыг бүрдүүлдэг хэд хэдэн чухал санаан дээр суурилдаг. Эдгээр удирдамж нь кодын баазын модульчлагдсан байдал, туршилт, урт хугацааны засвар үйлчилгээ зэргийг баталгаажуулдаг. Сонгины архитектурын чиглүүлэгч санаанууд нь дараах байдалтай байна.
- Санаа зовоосон асуудлуудыг салгах: Энэ санаа нь програмын янз бүрийн функциональ бүрэлдэхүүн хэсгүүдийг тусдаа модулиуд эсвэл давхаргад хуваахыг шаарддаг. Давхарга бүр бусдаас хамааралгүй байх ёстой, учир нь энэ нь тодорхой үүрэг гүйцэтгэдэг. Энэ хуваагдлын ачаар цаг хугацаа өнгөрөх тусам кодын баазыг турших, засварлах, шинэчлэх нь илүү хялбар болсон.
- Төвлөрсөн давхарга: Сонгины бүтэц нь програмын давхаргыг төвийн домэйны загварт төвлөрсөн төвлөрсөн тойрог болгон зохион байгуулахыг агуулдаг. Програмын бизнесийн логик нь хамгийн гүн давхаргад байрладаг бөгөөд энэ нь домэйн загварыг илэрхийлдэг. Програмын хэрэглэгчийн интерфэйс болон дэд бүтэц нь гаднах давхаргад дүрслэгдсэн байдаг.
- Давхаргын бие даасан байдал: Сонгины архитектурын давхаргууд нь бие биенээсээ хараат бус байх ёстой. Энэ нь давхарга үр дүнтэй ажиллахын тулд өөр давхаргаас хамаарах ёсгүй гэсэн үг юм. Үүний оронд давхарга бүр нь бусдаас хамааралгүй, сайн тодорхойлсон интерфэйстэй байх ёстой.
- Dependency Injection: Сонгины архитектурын тусламжтайгаар давхаргууд хоорондын хамаарлыг хараат байдлын тарилга гэж нэрлэгддэг дизайны техникийг ашиглан удирддаг. Энэ нь бүрэлдэхүүн хэсгүүдийг дангаар нь үүсгэхээс илүүтэй хамаарлыг нийлүүлэхийг шаарддаг. Энэхүү стратегийн үр дүнд кодын бааз нь илүү уян хатан, дасан зохицох чадвартай болдог.
- Нэгжийн туршилт: Сонгины архитектурын чухал хэсэг бол нэгжийн туршилт юм. Давхарга бүрийг туршилтыг хялбар болгох арга замаар үүсгэх ёстой. Энэ нь давхарга бүр бусад түвшинтэй тодорхой харилцан үйлчлэлтэй байх ёстой бөгөөд мэдээллийн сан, API зэрэг гадны нөөцөөс ангид байх ёстой гэсэн үг юм. Кодын сангийн найдвартай байдал, алдаа дутагдал хоёулаа нэгжийн туршилтаар баталгааждаг.
Сонгины архитектурын ашиг тус
Алдарт программ хангамжийн загвар болох "Согины архитектур" нь бизнес эрхлэгчид болон хөгжүүлэгчдэд хэд хэдэн давуу талтай. Сонгины архитектурын гол давуу талуудын заримыг доор жагсаав.
Өргөтгөх чадвар
Onion Architecture-ийн давуу талтай модульчлагдсан зохион байгуулалт нь програмыг масштаблахад хялбар болгодог. Дизайн нь програмын бизнесийн логикийг агуулсан үндсэн домэйн давхаргын эргэн тойронд бүтээгдсэн бөгөөд програмын янз бүрийн хэсгүүдтэй харьцдаг бусад давхаргуудаар хүрээлэгдсэн байдаг.
Програм нь үндсэн домэйны давхаргад нөлөөлөхгүйгээр модульчлагдсан бүтэцтэй тул нэмэлт функц, боломжоор хялбархан өргөжүүлж болно.
Түвшин хоорондын үүрэг хариуцлагыг тодорхой заадаг тул ерөнхий дизайныг хадгалах нь илүү хялбар бөгөөд энэ нь нэг давхаргад өөрчлөлт оруулахад бусад давхаргад өөрчлөлт оруулах шаардлагагүй гэсэн үг юм.
Туршилт хийх боломжтой
The Onion Architecture-ийн туршилтын чадвар нь түүний гол давуу талуудын нэг юм. Архитектур нь санаа зовоосон асуудлуудыг тусгаарлахыг дэмждэг тул давхарга бүрийг бие даан турших нь илүү хялбар байдаг.
Хөгжүүлэгчид програмыг жижиг бие даасан бүрэлдэхүүн хэсгүүдэд хуваах замаар бүрэлдэхүүн хэсэг бүрийн ажиллагааг баталгаажуулах нэгжийн тестийг үүсгэж болно. Энэ нь програм зөв ажиллаж байгаа эсэхийг шалгахаас гадна алдааг олж засварлахад хялбар болгодог.
Тогтвортой байдал
Onion Architecture-ийн дэмждэг модульчлагдсан, салангид архитектур нь програмыг цаг хугацааны явцад хадгалахад хялбар болгодог. Хөгжүүлэгчид нэг давхаргад өөрчлөлт хийх боломжтой, учир нь давхарга бүр өөр өөр функцтэй бөгөөд тодорхой интерфейсээр дамжуулан бусад давхаргатай харилцдаг.
Үүний үр дүнд, өөрчлөгдөж буй бизнесийн хэрэгцээг програмын програм хангамжийг бүрэн дахин бичих шаардлагагүйгээр хялбархан хангаж чадна.
Уян хатан байдал
Дасан зохицох боломжтой Onion Architecture нь хөгжүүлэгчдэд системийн бусад бүрэлдэхүүн хэсгүүдэд нөлөөлөхгүйгээр програмыг өөрчлөх боломжийг олгодог. Давхарга бүр бие даасан бөгөөд зөвхөн сайн тодорхойлсон интерфэйсээр дамжуулан бусад түвшинтэй харилцдаг тул хөгжүүлэгчид системийн бусад бүрэлдэхүүн хэсгүүдийг өөрчлөхгүйгээр бүрэлдэхүүн хэсгүүдийг солих эсвэл шинэчлэх боломжтой.
Энэ нь үндсэн технологийн талаар санаа зовох шаардлагагүй болж, байгууллагууд өөрчлөгдөж буй зах зээлийн нөхцөл байдал, үйлчлүүлэгчдийн эрэлт хэрэгцээнд дасан зохицох боломжийг олгодог.
хязгаарлалт
Хэдийгээр Onion Architecture нь олон давуу талыг санал болгодог хүчирхэг програм хангамжийн дизайн боловч сул талгүй биш юм. Сонгины архитектурын зарим хязгаарлалтууд нь дараах байдалтай байна.
- Нарийн төвөгтэй байдал нэмэгдсэн: Сонгины архитектурын үр дүнд хэрэглээний нарийн төвөгтэй байдал нэмэгдэж болох бөгөөд энэ нь түүний сул талуудын нэг юм. Хөгжүүлэгчид илүү их кодыг хадгалах ёстой бөгөөд програмыг жижиг, илүү модульчлагдсан бүрэлдэхүүн хэсгүүдэд хуваах үр дүнд давхарга хоорондын харилцан үйлчлэлийг зохион байгуулах нэмэлт төвөгтэй байдлыг шийдвэрлэх ёстой.
- Сургалтын эгц муруй: Дизайны үндсэн зарчим, шилдэг туршлагыг мэдэхгүй хөгжүүлэгчид Сонгины архитектурыг эзэмшихэд бэрхшээлтэй тулгардаг. Аппликешн нь найдвартай, удирдах боломжтой, өргөтгөх боломжтой байхын тулд хөгжүүлэгчид архитектурын давхарга болон интерфейсийг хэрхэн зөв хэрэгжүүлэх талаар мэддэг байх ёстой.
- Гүйцэтгэлийн нэмэлт зардал: Нэмэлт давхаргууд болон интерфэйсүүд шаардлагатай байгаа тул сонгины архитектур нь програмын гүйцэтгэлийн торгууль өгч магадгүй юм. Нэмэлт код болон давхаргууд хоорондын харилцан үйлчлэлийн улмаас програмын гүйцэтгэл удааширч болно.
- Хэт их инженерчлэл: Сонгины архитектурыг ашиглах нь программыг хөгжүүлэгчид хэт их инженерчлэл хийх боломжийг нэмэгдүүлдэг. Хөгжүүлэгчид модульчлах, үүрэг хариуцлагыг салгахад хэт их ач холбогдол өгснөөр хэтэрхий төвөгтэй, ойлгомжгүй загвар бүтээх эрсдэлтэй.
- Хөгжлийн хугацаа нэмэгдсэн: Сонгины архитектурыг хэрэгжүүлэхэд бусад загвараас илүү цаг хугацаа, хүчин чармайлт шаардагдана. Архитектур дахь давхаргууд болон интерфэйсүүдийг хөгжүүлэгчид зохих ёсоор төлөвлөж, боловсруулсан байх ёстой бөгөөд энэ нь хөгжлийн мөчлөгийн саатал үүсгэж болзошгүй юм.
Танай бизнест Сонгины архитектурыг хэрэгжүүлэх
Сонгины архитектурыг хэрэгжүүлэхэд хэцүү байж болох ч системчилсэн арга барилыг ашиглах нь илүү хялбар болгодог. Сонгины архитектурыг хэрэгжүүлэхийн тулд хөгжүүлэгчид дараах алхмуудыг ашиглаж болно.
- Домэйн давхаргаас эхэл: Домэйн давхарга нь Сонгины Архитектурын үндэс суурийг бүрдүүлдэг учраас хөгжүүлэгчид бүтээдэг эхний давхарга байх ёстой. Аппликешны бизнесийн логикт тохирох нэгж, загваруудыг тодорхойлно уу.
- Хэрэглэх тохиолдлуудыг тодорхойл: Хэрэглээний тохиолдлууд нь програмын өвөрмөц функцүүдийн төлөөлөл болдог. Хэрэглээний тохиолдлуудыг хөгжүүлэгчид хүлээн зөвшөөрч, тэдгээрийг холбох процедурыг зааж өгөх ёстой.
- Хэрэглээний давхаргыг хэрэгжүүлэх: Өмнөх үе шатанд заасан ашиглалтын тохиолдол, үйлдлүүдийг хэрэглээний давхарга хэрэгжүүлэх ёстой. Энэ давхарга нь танилцуулга болон дэд бүтцийн давхаргаас хамааралгүй байх ёстой.
- IДэд бүтцийн давхаргыг хэрэгжүүлэх: Аппликейшн нь дэд бүтцийн давхаргаар дамжуулан мэдээллийн сан, API зэрэг гадаад үйлчилгээнд холбогдсон. Энэ давхарга нь хэрэглээний давхаргаас хамааралгүй байх ёстой бөгөөд интерфейсээр дамжуулан түүнтэй харилцах ёстой.
- Presentation Layer-г хэрэгжүүлэх: Програмын хэрэглэгчийн интерфэйс нь Presentation Layer-аар хийгдсэн. Энэ давхарга нь бусдаас тусдаа байх ёстой бөгөөд интерфейсээр дамжуулан хэрэглээний давхаргатай холбогдох ёстой.
- Dependency Injection ашиглах: Сонгины архитектурын гол бүрэлдэхүүн хэсэг нь хамаарлын тарилга юм. Хөгжүүлэгчид интерфэйсээр дамжуулан давхаргуудад хамаарлыг оруулах замаар давхаргууд нь бие даасан, тусад нь турших боломжтой гэдгийг баталж чадна.
- Нэгжийн тест бичих: Хөтөлбөр нь зориулалтын дагуу ажиллаж байгаа эсэхийг шалгахын тулд нэгжийн туршилтууд маш чухал юм. Архитектурын давхарга бүрийн хувьд хөгжүүлэгчид зориулалтын дагуу ажиллаж байгаа эсэхийг шалгахын тулд нэгжийн тестийг бий болгох ёстой.
- Давхаргыг бие даасан байлгах: The Onion Architecture-ийн давхаргууд нь бие биенээсээ хамааралгүй байх ёстой. Түвшин хоорондын шууд хамаарал байх ёсгүй бөгөөд давхарга бүр нь бусадтай интерфейсээр дамжуулан харилцах ёстой.
Дүгнэлт
Дүгнэж хэлэхэд, програм хангамж хөгжүүлэх хүчин чармайлт бүрийг засвар үйлчилгээ хийх боломжтой, цэвэр код бичихээс эхлэх ёстой. Энэ нь кодын баазыг өргөтгөх боломжтой, удирдах боломжтой, ойлгомжтой гэдгийг баталгаажуулдаг. Цэвэр код нь уншихад хялбар бөгөөд дибаг хийх, өөрчлөхөд хялбар байдаг.
Түүнчлэн, кодыг ойлгоход хялбар, согог багатай тул хөгжүүлэлтийн хугацааг богиносгодог.
Цэвэр, урт хугацааны код бичдэг хүмүүст зориулсан үр дүнтэй дизайны загвар бол сонгины архитектур юм. Сонгины архитектур нь янз бүрийн давхаргад санаа зовоосон асуудлуудыг бүлэглэх замаар давхарга бүр өөр өөр үүрэгтэй бөгөөд бусад давхаргаас тусгаарлагддаг гэдгийг баталгаажуулахад тусалдаг..
Давхарга бүр дээр бие даан ажиллах чадвартай тул үүрэг хариуцлагыг хуваах нь кодыг өөрчлөх, хадгалахад хялбар болгодог.
хариу үлдээх