Avatar billede Droa Seniormester
05. september 2016 - 19:06 Der er 9 kommentarer

DDD spørgsmål fra en nybegynder

Hej Eksperter.

Mit sidste spørgsmål vækkede interesse fra arne_v som svarede med en DomainModel kode, der gjorde mig mere nysgerrig i hvad DomainModellen var, og hvordan man korrekt implementere den. Jeg er langsomt ved og forstå konceptet, og ville lige se om jeg kunne få lidt konfirmation i om jeg har forstået korrekt.

Product - kan være en enkelt side på et website, eller Window Form

Aggregate - er en samling af Variabler og/eller underligende Aggregates, der giver mening af samle. (ligesom Entities?)(er alle Aggregates Perstiant eller burde man lave et PersistantAggregate interface ud over Aggregate?)

ModelEvent - en måde at informere hele ens Domain om at der er sket noget på ens Product.

Underliggende Aggregates må godt have en Parent ref til den overliggende Aggregate.

Den bedste måde at ændre i Aggregates er med event sourcing.

Product bør laves med et ID som os skal bruges til og referere til objektet når man skal finde det igen. (kan man bruge GUID?)

Jeg tror det var alle mine spørgsmål, håber ikke de er for dumme, fordi ville virkeligt sætte pris på og kunne forstå DDD bedre :)
Avatar billede MadsHaupt Juniormester
05. september 2016 - 20:08 #1
Kan du fortælle lidt mere om, hvad DDD er?
Jeg tænker ikke jeg selv har arbejdet med det før, men jeg kan lave noget research på det.
Avatar billede Droa Seniormester
05. september 2016 - 20:21 #2
DDD står for Domain-driven design, jeg mener det er OOP, kan lige linke Wiki-siden.

https://en.wikipedia.org/wiki/Domain-driven_design
Avatar billede arne_v Ekspert
05. september 2016 - 22:56 #3
Lidt blandede kommentarer.

I spoergsmaalet http://www.computerworld.dk/eksperten/spm/1012512 skitserede jeg en domain model.

Jeg har en ret pragmatisk holdning til hvad en domain model er. For mig er det bare en samling klasser som tilsammen har de data man arbejder med.

Puristerne vil naeppe kunne lide at jeg blandede Persistable in i domain model.

For en mere stringent definition se f.eks. PEAA.

Men som sagt har jeg er mere afslappet forhold til Domain Model.

Onde tunger ville maaske endda sige at jeg laver et kendt anti-pattern Anemic Domain Model (kun data og ingen funktionalitet).

Jeg vil noejes med at vedgaa at jeg laver Domain Model ret slanke.

:-)

DDD er en software design process som er bygget op omkring domain model.

Jeg har aldrig arbejde med den.

Og med min "slanke" domain model, saa ville det heller ikke vaere en god ide.

Men derfor kan det jo godt vaere en udmaerket process.
Avatar billede Droa Seniormester
05. september 2016 - 23:07 #4
Jeg er først blevet færdig med min programmør uddannelse for 2 år siden, og det er ret begrænset hvor meget fagerfaring jeg har, det er nu mest derfor jeg er nysgerrig i og lære og bruge modeller og designs korrekt, da jeg selv syntes jeg mangler en del flere års fagerfaring endnu, før jeg begynder og bruge modificeret modeller.

Jeg sad og så TechEd's video med Vaughn Vernon, der har skrevet en bog omkring implementering af DDD, det lød som om at DDD var en god ide og lære, eller ihvertfald at have i bagtankerne, når man designer et projekt.
Avatar billede arne_v Ekspert
05. september 2016 - 23:17 #5
Der er masser af tilgange til deisgn.

DDD, TDD, BDD, FDD o.s.v..

Laes lidt om dem og find ud af hvad du synes virker for dig.

Du skal ikke udlede noget af at jeg ikke bruger DDD. Jeg koder heller ikke GUI hvis jeg kan blive fri. :-)

Det er mit indtryk at DDD er lidt tung sammenlignet med de oevrige DDD. Jeg tror mest paa DDD til rimeligt komplekse problem stillinger.
Avatar billede Droa Seniormester
05. september 2016 - 23:36 #6
Jeg udvikler heller ikke GUI selv, men det lød som om DDD var godt til f.eks multitrådet systemer, som f.eks Net Services.

Jeg har været igang med og udvikle Utilities til et special software dere inkludere en XMPP/Jabber Server.

Der sker en del Data-udveksling.. det er en ret stor mundfuld for min erfaring, men giver en del perspektiv i hvad man kan forvente i fremtiden, da jeg både får rørt Kryptering, Komprimering algoritmer, Tråde-management, data-management, m.m.

Det er slog mig i DDD var at det lød som en god måde at behandle data på.

især fordi xmpp fungere delvist som en http protokol.

Xmpp er en chat client som f.eks også bruges af facebook, den kan en del smarte ting, over en protokol der nok kan beskrives bedst som et XML dokument der aldrig lukker.

ligesom XML er der tæt på en uendelig kombination af muligheder at man kan sende, dog kun en begrænset mængde som giver mening for serveren.

alt kommunikation skal ske ind over serveren, der er ingen Peer 2 Peer feature, som gør at serveren behandler både adresseringer til clienter, samt nogen lidt mere intime beskeder, som nok kan beskrives som en form for Understøttelses stream mellem Server og Klient, da man kan gætte sig til der skal snakkes en del, når en åben protokol kan være ret forskellig fra Klient til Klient, og Server til Server.

men rent teknisk, er Xmpp meget Request/Response basseret, selvom man køre over en Stream der aldrig lukker.
Avatar billede arne_v Ekspert
05. september 2016 - 23:49 #7
Jeg ved godt hvad XMPP er.

Men jeg ved ikke nok om hverken XMPP eller DDD til at kunne sige om devil vaere et godt match.
Avatar billede arne_v Ekspert
05. september 2016 - 23:52 #8
Avatar billede Droa Seniormester
06. september 2016 - 00:26 #9
nemlig, det er en længere process :)

jeg har prøvet mit bedste på og lave noget der virker igennem de sidste 2 år, og er gået igennem mange versioner, af både min kerne del, og den struktur jeg bruger, vil os mene min kodning er blevet bedre og bedre, og jeg har fået mere forståelse for hvad jeg laver.

men koden er blevet mere og mere rodet, og der er kommet utroligt mange ekstra features ind, som koden oprindeligt slet ikke var lavet til, som har gjort mange ting køre med Tape og pap, til og få det til og se skindene ud.

Derfor er det nok på tide at lave en Version 3, som er lavet med den erfaring jeg nu har samlet, men betyder os jeg søger en Model der skal være roden til denne nye Version.

men lyder til jeg nok lige skal lave lidt mere research, før jeg begynder på projektet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester