Loading...

Какво представляват "Domain-driven design" и "Clean Architecture"?

avatar Георги Кацаров 2 минути
Какво представляват "Domain-driven design" и "Clean Architecture"?

Да усвоите синтаксиса на един език и основни парадигми в програмирането с него далеч не изчерпва всички умения, които трябва да изградите. Ако сте на този етап, то пред вас стои сериозното предизвикателство да започнете работа по истински приложения, които се състоят от множество различни аспекти. Както можете да се досетите, милиони разработчици от цял свят в продължение на няколко десетилетия вече се сблъскват с проблеми от най-различен характер и предлагат цялостни, структурни решения, за да облекчат и стандартизират работата по определени типове приложения. В следствие на тази стандартизация се появяват различни философии или методологии. Едни от тях са т.нар. "Domain-driven design" и "Clean Architecture". Какво представляват те?

Какво е "Domain-driven design"?

Понятието "Domain-driven design" за първи път е използвано от Ерик Еванс в неговата едноименна книга. Domain-driven design (или "DDD") е концепцията, при която структурата и езика на софтуерния код (под "език" визираме имената, методите и променливите на класовете) трябва да съответстват на бизнес домейна. Например, ако говорим за финтех приложение, ориентирано към крайния потребител, да кажем за заеми, то може да включва класове като LoanApplication и Customer, както и методи като AcceptOffer и Withdraw.

Основни цели на Domain-driven дизайна са:

• Поставяне на основния фокус на проекта към домейна и неговата логика;
• Базиране на сложните дизайни на модел на домейна;
• Иницииране на творческа колаборация между техническите и домейн експертите, за да създадат концептуален модел, който обхваща определени проблеми на домейна;

Какво е Clean Architecture

"Clean Architecture" е друга дизайн философия, която разделя елементите на даден дизайн на отделни кръгове (или т.нар. "ring levels"). Основното правило, около което е изградена концепцията за Clean architecture, се състои в това, че зависимостите в кода, които съществуват в даден кръг, могат да произлизат единствено от външния кръг, около този, в който се намираме. Те не могат да "прескачат" нивата от кръгове, а следват стриктно подчинение едно на друго и винаги "вървят" в посока отвън-навътре. Кодът, който се намира в даден вътрешен кръг, няма идея за функциите на външните кръгове/слоеве. Променливите, функциите и класовете, които съществуват във външните слоеве, не могат да бъдат споменавани във вътрешните нива. Препоръчително е също така различните data формати да са стриктно обособени в отделните кръгове/слоеве.

Концепцията за "Чиста архитектура" е изложена за първи път от Robert C. Marting в неговия блог. Подобно на други софтуерни философии тя също иска да осигури методология при писането на код, при която да направи по-лесна разработката на качествен код, който дава по-добра производителност, по-лесен е за корекции и обновления и съдържа възможно по-малко зависимости. Важна цел на Clean architecture философията е да осигури на разработчиците възможност да организират кода по такъв начин, че бизнес логиката да е енкапсулирана и ясно отделена от различните delivery механизми. Именно затова различните аспекти на тази философия се изобразяват чрез неопределен брой вложени един в друг кръгове.

Ако вече сте изградили основни умения за работа с ASP.NET MVC, без значение дали е .NET Core или .NET Framework и искате да усвоите похватите свързани с Domain-Driven Design и Clean Architecture, то нашият курс "Domain-Driven Design with ASP.NET Core Microservices - август 2020" е точно това, от което имате нужда. Не пропускайте тази възможност а се запишете още днес. Очакваме ви!