Învățați cum să proiectați pe baza domeniului (design bazat pe domeniul ddd)

1. Introducere

În acest articol, aș dori să vă spun despre aceste trei litere, cu domiciliul în ședință, dar pentru mulți este un mister, precum și rezultat într-o serie de resurse, care ar fi frumos să se cunoască dacă doriți să continuați să dezvolte proiectul pe baza domeniului ( DDD: design de domeniu).







2. De ce DDD?

Există mai multe modele de implementare Domain Logic sau Business Logic:

1) Modul de tabel - este un obiect, într-o singură instanță, care procesează logica de afaceri pentru toate înregistrările din tabela de bază de date sau o vizualizare.

2) Script de tranzacție - organizează interacțiunea cu logica de afaceri prin proceduri care acceptă cererile de la nivelul de prezentare.

3) Modelul de domeniu - direct, modelul obiect al domeniului, incluzând atât comportamentul, cât și datele.

Bazat pe acest lucru, vom face o concluzie mică că acest model ( „Domain Model“) este cel mai potrivit, de exemplu, pentru o astfel de zonă dificilă, deoarece piața financiară. Cele mai multe produse de software-ul nostru este conceput pentru diferite zile de nevoile de afaceri, prin urmare, unele abstracte, soluții generalizate își găsesc locul pe piață (cu un nivel destul de ridicat de concurență) mai puțin și mai puțin. Ce scriu despre toate astea? Deoarece DDD - nu este doar un design de înaltă calitate, dar, de asemenea, un bun exemplu de modul de a selecta zona subiect în software-ul pentru a face mai ușor pentru a depăși dificultățile, schimbări frecvente, probleme de comunicare și de domeniu a altor boli, mai degrabă decât în ​​curs de dezvoltare urât, dificil de înțeles sistem în care orice modificare sau corectare este capabil de a aduce în jos o avalanșă pe tine mai mult și mai multe defecte noi.

DDD nu exclude în nici un fel patrimoniul practicilor de dezvoltare, cum ar fi:

DDD le completează numai. Găsirea modelului drept și abstracția în scenarii complexe necesită cunoștințe considerabile în domeniul abordării orientate obiect și experiență suficientă în aplicarea diferitelor principii, modele și practici, mai degrabă decât doar DDD, cum ar putea părea.

3. De unde pot începe?

Dacă "PR-ul tau" al designului pe bază de domenii (DDD) nu te-a deranjat încă, atunci cred că ar trebui să continuăm, dacă altfel, să privim cel puțin legăturile cu materialele.

Prima carte pentru a pune în lumină DDD pentru publicul larg a fost așa-numitul „Big Blue Book“ (meme BBB :. Big Blue Book): Design Domeniu-Driven: Abordarea complexității în inima de software byEric Evans (nu a fost încă traduse în limba rusă).

Relatează carte mulțumit că reprezintă DDD, și toate aspectele legate, cum ar fi: limbajul de domeniu, template-uri, practica de proiectare, refactorizare, modelarea modul de a face dezvoltarea flexibilă și mult mai mult. Dar chiar dacă sunteți familiarizați cu toate problemele ridicate în carte (care nu este destul de un joc simplu), veți observa că problemele sunt abordate numai din punct de vedere teoretic, lăsând întregul spațiu pentru practica (cartea nu este legat de o dezvoltare anumită platformă). Pentru majoritatea dintre noi citesc teoria pură, fără ranforsare cu exemple practice, nu le place, în această privință, puteți atrage atenția la o versiune prescurtată (și acces gratuit) din această carte, pregătită de InfoQ portal. Dezvoltarea rapidă a domeniului.

Există, de asemenea, câteva prezentări bune de Eric Evans (Eric Evans), de unde puteți începe:

Pe portalul InfoQ puteți găsi multe alte prezentări, articole și interviuri. dedicat DDD.

Deci, cu partea teoretică, ne-am dat seama unde să găsim exemple de aplicare practică a DDD? O carte excelentă pentru acest lucru este .NET Domain-Driven Design cu C #, Problem-Design-Solution scris de Tim McCarthy.

În această carte veți găsi exemple practice:

1) Cum merge procesul de proiectare și dezvoltare, de la definirea cerințelor la scrierea codului







2) Cum să organizați straturile arhitecturale în deciziile lor

3) Cum să aplicați șabloanele și practicile DDD

4) Cum se construiește un cadru mic pentru DDD

5) Cum să izolați domeniul din domeniu de model

6) Modele moderne de reprezentare a datelor și de interacțiune cu acestea (Model-View-ViewModel) într-un mediu cum ar fi WPF (aplicabil și Silverlight) în practică.

Această carte este un excelent atelier DDD, care conține o gamă foarte largă de idei. Cartea începe cu dezvoltarea cerințelor și se termină cu implementarea unei aplicații industriale, codul sursă a căruia este disponibil pe Codeplex.

Întregul concept al cărții este construit pe trei cărți-piloni ai DDD:

În această carte, toate întrebările, tehnicile și modelele utilizate în DDD sunt examinate superficial, toate exemplele sunt însoțite de cod, care simplifică înțelegerea. Cartea este excelentă, dar traducerea rusă a dezamăgit, prin urmare, recomand să citiți originalul.

Cu toate acestea, DDD - este nu doar soluții sau modele practice, acest mod de gândire și de abordare, și există un mare număr de nuanțe, care trebuie să fie luate în considerare în cazul în care vă decideți să urmeze un DDD, cum ar fi concentrându-se pe cea mai mare prioritate este acordată modelului, dezvoltarea domeniului contextului model de limbă procesul de modelare, diviziunea cunoașterii, refactorizarea, proiectare strategică, etc ... acesta este motivul principal pentru a citi cartea lui Eric Evans, deoarece vă va oferi o înțelegere deplină și profundă a filozofiei DDD.

DDD nu este atașamentul față de o anumită tehnologie, dar pentru a se conforma DDD nu va fi ușor, fără a avea instrumente bune și practici în arsenalul dvs., cum ar fi: TDD-cadru, ORM, posibilitatea de punere în aplicare a independenței persistență (Persistența Ignoranța), IoC-container (inversiunea de Control ), precum și caracteristici de AOP (programare orientată spre aspect), cu siguranță nu înseamnă că toate aceste instrumente de care avem nevoie, dar ele ne vor aduce mai aproape de punerea în aplicare DDD. Valoarea practică a acestor fonduri este faptul că acestea vă permit să izoleze modelul de domeniu, care este un obiectiv cheie al DDD. Rezervați Jimmy Nilsson ai putea introduce la caracteristicile și tipurile de instrumente. Jimmy arată, de asemenea, cum să utilizați șabloane de implementare a aplicațiilor enterprise. și de a construi, datorită lor, soluție de ansamblu bazată pe instrumente și practici moderne.

Unele implementări ale șabloanelor DDD în Ruby on Rails:

4. Probleme actuale ale DDD

C DDD, de asemenea, strâns legată de această temă, după cum DDDD: Distribuit domeniul Design Driven (Distributed DDD). DDDD este DDD în scenarii distribuite. In prezent, nu sunt atât de multe resurse dedicate dddd, în câteva cuvinte despre DDDD: acoperă problema mesaje realizarea și DDD, comenzi despicate și interogări (comandă Solicitare de separare (CQS)) contribuie la punerea în aplicare a acestei abordări. Greg Young (Greg Young) a spus că el a fost pregătește o carte despre DDDD.

SOA și DDD - acesta este un alt subiect voluminos, discutat adesea de Udi Dahan

5. șabloane, concepte și concepte DDD

Iată câteva dintre ele:

6. Exemple de aplicații

Găsiți exemple bune de DDD este foarte dificil, nu pentru că nu există, ci pentru că forța reală a DDD implementate în aplicațiile utilizate într-o zone destul de dificil și, de regulă, proiecte necomerciale. Cu toate acestea, puteți găsi unele proiecte bune care pot fi urmărite înapoi unele idei de realizare a modelelor DDD.

1) Aplicația lui Tim McCarthy este proiectul său. descris în detaliu în cartea sa. Acesta descrie nu numai aplicarea de șabloane, ci se concentrează și pe dezvoltarea unui model de domeniu în termeni de DDD.

Proiectul este, de asemenea, interesant deoarece este construit pe .NET 3.5 și demonstrează întreaga putere a abordării moderne a datelor care se leagă de modelul de date (legarea datelor, implementarea modelului MVVM). De asemenea, stilul său este notabil pentru abilitatea de a aloca abstracții și cod reutilizabil.

2) Următorul proiect de urmărit este o aplicație dezvoltată de Yves Goeleven. crearea acestei aplicații este descrisă în blogul său (dedicat și conceptului de bază al DDD). O altă aplicație este cadrul DDD. Ar trebui să acordați atenție punerii în aplicare a interacțiunii șabloanelor de depozitare și de specificații.

3) Billy McCafferty dezvoltă un cadru uimitor, open source, axat pe DDD, numit S # arp Architecture. Are o descriere foarte bună. inclusiv descrierea modelelor și abordărilor, încheiate în cadru. Cadrul este destinat dezvoltării aplicațiilor MVC ASP.NET utilizând NHibernate.

4) Aplicație exemplu de proiectare C # pe domenii (ndddsample). această aplicație, dezvoltată de Jimmy Nilsson, demonstrează divizarea aplicației în straturi cheie în termeni de DDD. Aplicarea practică a șabloanelor de blocuri de construcție în domeniul transportului de mărfuri descris în cartea sa este de asemenea demonstrată.

Acest proiect se bazează pe munca comună a companiei Eric Ivens "Domain Language" și a companiei de consultanță suedeză "Citerus".

Scopul acestui proiect este:

  • Afișați aplicația practică a utilizării DDD cu aplicația .NET.
  • Utilizarea utilităților curente, a tehnologiilor și metodologiilor de dezvoltare în zona .NET, discutate de către comunitatea ALT.NET.
  • Dați exemple practice de implementare a aplicațiilor DDD tipice.
  • Arătați modul de implementare a DDD pe o anumită platformă, care va face cu ușurință același lucru pe orice altă platformă.
  • Ajutați în alegerea practicilor practicate. Diferitele abordări vor permite comunității să le discute și să aleagă una potrivită pentru o anumită implementare.

7. Resurse pentru proiectarea pe domenii

8. Concluzie

Dacă sunteți interesat să vă extindeți "orizonturile orientate pe obiecte" în sisteme complexe de întreprindere și să învățați noi modalități de dezvoltare și proiectare, atunci DDD este exact ceea ce aveți nevoie.

Acest lucru este interesant:







Trimiteți-le prietenilor: