Michells Mesterværk

Frosts Podcast Show #7 – Dependency Injections med Mark Seemann

by Administrator 13. November 2009 12:04

Mark Seemann er tildagligt udvikler i virksomheden Safewhere. Han er igang med at skrive en Manning bog omkring netop Dependency Injection også er Mark både tidligere MVP og nuværende MDIP.

Har du aldrig arbejdet med DI før kan du finde mere information omkring fremgangsmåderne her.

God fornøjelse.

Tags:

Udvikleren.dk

Comments

11/13/2009 8:39:27 PM #

Janus007

Så fik jeg hørt den podcast og tænker "gad vide om jeg skal sige det positive og være en artig kollega eller det negative og forholde mig mere kritsik" - måske synes jeg bare.. well lad mig starte Smile

Der er flere ting jeg stiller mig lidt uforstående over ved Mark Seemanns udtalelser, måske han vælger at kommentere direkte her på bloggen, det ville være dejligt.

Det første jeg hæfter mig ved er genbrug, der nævnes at genbrug vil være nemmere ved at bruge dependency injection: Det har jeg meget svært ved at se; genbrug handler ikke om bindinger men om fleksibilitet og generiske mekanismer. Genbrug bliver altid sværere i samme take vi bevæger os ud af frameworket, altså i takt med specialiseringen stiger, jo mindre genbrug kan vi finde på - hvilket Mark også siger, altså sjældent at han udvikler noget der kan genbruges på tværs af projekter - Det har intet med DI at gøre.
På samme måde bevæger samtalen sig helt ud i skyen(nej no cloud), men mht. at genruge domæne modellen? Nu er domæne modellen 100% afgrænset af domænet, hmmm så nej; det kan jeg slet ikke forstå I snakker om?

Derudover finder jeg det også lidt sjovt og det er jo nok bare mig der er ramt af DI-syndromet for længe siden, men Mark nævner 'new' og jo.. der kan vi kun være enige, et 'new' har intet at gøre inde i klassen. Jeg ser stadig meget kode med 'new', men tænker altid "hmm, det må enten være et hack, bulldozer programming eller POC", filosofien er naturligvis at 'new' laver en tight-coupling som dels er unødig men også ganske kompliceret at sidde med.

Begrebet 'sort magi' har jeg nu aldrig hørt før, men kan da sagtens forestille mig det - jeg sidestiller det lidt med opfattelsen omkring LINQ *GG* Der vil altid sidde nogle konservative udviklere og føle de bliver overhalet indenom Wink

Mark nævner flere gange 'binde dem op på' altså at man skulle binde udviklingen op på dependency injection, hvad menes her? Er det selv DI eller et bestemt DI-framework? Hvis DI bruges korrekt vil det aldrig kunne ses i koden hvilket DI-framework der er valgt, kun lige med undtagelse af bootstrapperen eller config-filen, selve koden må ALDRIG udtrykke en relation/ binding til DI.

En ting som jeg synes Mark ikke gør så meget ud af at holde fokus på er, at DI gør det meget nemmere at være udvikler, man behøver ikke spekulere så meget over hvem hvad og hvorfor - Dependency Injection gør applikationen mindre kompleks at forstå!

Anyway.. det er rart at Mark Seeman forsøger at skabe fokus på emnet. I min verden burde DI være en helt naturlig del af C#-frameworket og burde altid have været måden at udvikle på.
Jeg glæder mig naturligvis til at læse bogen og komme med kritik og ligeledes se hvordan man kan bruge 140 sider til DI? (Sorry Mark)

Tak til Daniel for endnu et godt podcast initiativ og dynamik på bloggen Smile

Janus007 Denmark

11/17/2009 7:55:28 PM #

Mark Seemann

Jamen, jeg vil da gerne tage diskussionen her på bloggen. Det er en længere kommentar jeg skal forholde mig til, så hvis jeg ikke får svaret på det hele i først omgang skal du være velkommen til at gøre mig opmærksom på det.

Diskussionen om genbrug falder i et afsnit af samtalen der fokuserer på løs kobling. Den fleksibilitet du nævner kommer efter min erfaring først og fremmest med løs kobliing. Det er rigtigt at det ikke i sig selv har noget at gøre med DI, men det er der i virkeligheden ikke noget, der har: DI er et middel til at opnå et mål (løs kobling), ikke et mål i sig selv.

Jeg vil fastholde at genbrug af domænemodeller er afsindigt relevant. Lad os sige at vi udvikler en web-applikation der viser sig at blive meget populær - faktisk så populær at mange brugere efterspørger et automatiserings-API (SOAP eller REST - det er ikke så vigtigt). Her er det meget praktisk hvis web-applikationen fra starten er udviklet med et UI, der taler med en domænemodel, der er intet ved om web-platformen. Hvis det er tilfældet, kan vi genbruge domænemodellen til at implementere en web service. Et andet eksempel kunne være at særligt 'tunge' brugere gerne vil have en rich client, og at vi kunne genbruge domænemodellen til at implementere sådan en.

Konteksten forbliver selvfølgelig den samme, men måden vi ender med at bruge domænemodellen kan ende med at tage os i helt andre retninger end vi oprindeligt kunne forudse.

Alt dette kunne vi sådan set også opnå med en monolitisk domænemodel så længe den er afkoblet fra specifikke UI- eller service-platforme. Der hvor det bliver virkeligt interessant er når de ressourcer som domænemodellen benytter skal være fleksible. Data Access er det evige eksempel: De fleste domænemodeller benytter data på en eller anden måde, men der kan også være tale om andre afhængigheder. Når vores domænemodel optræder i rollen som konsument kan vi kun variere de konsumerede services hvis vi injecter dem.

Som du kan høre her, er mit yndlingseksempel lige i øjeblikket det scenario, hvor man ønsker at udvide brugsmulighederne for en applikation så den også kan køre på Windows Azure. Det kan du i praksis næppe gøre bare ved at ændre en connection string og så håpe på at alt stadig fungerer som før. Her vil det være essentielt at domænemodellen kommunikerer med datalaget igennem et interface. I det tilfælde er det så igen domænemodellen vi genbruger i nye sammenhænge, og løs kobling er igen nøglen til at vi kan gøre dette.

Jeg er helt enig i dine betragtninger om at kode skal være uafhængig af konkrete DI Containers - jeg synes heller ikke jeg har sagde noget, der kunne tolkes som det modsatte?

Personligt er jeg helt enig i at DI gør mit liv som udvikler meget lettere, men min erfaring efter at have mødt mange forskellige udviklere fra mange forskellige udviklingsafdelinger er at der er en væsentlig indlæringsbakke man skal op ad før man når til den erkendelse. Det er bl.a. den udfordring jeg forsøger at adressere med min bog.

Mark Seemann Denmark

11/19/2009 6:32:54 PM #

Janus007

Tak for svar Mark.

Jeg forstår 100% hvad du siger mht. domænemodellen i den kontekst, jeg opfattede det som om at selve domænemodellen skulle kunne genbruges til andre domæner - det lyder selvfølgelig underligt at jeg hørte det som sådan, men vi er helt enige Smile Ikke at man nødvendigvis skal smide den monolitiske applikationsstruktur på bålet, men at man nøje skal overveje formålet med applikationen.

"Jeg er helt enig i dine betragtninger om at kode skal være uafhængig af konkrete DI Containers - jeg synes heller ikke jeg har sagde noget, der kunne tolkes som det modsatte? "
-> Jeg hørte det som at du flere gange ikke ville smide DI ind i applikationen pga. binding til DI, men at du benyttede dig af poor man DI istedet Smile

Jeg ser frem til at læse bogen.

Janus007 Denmark

2/14/2010 2:00:58 PM #

اخبار

Thank you very much for the possibility to have a look into the office. Nice boy, he has got the talent to explain.

اخبار Egypt

2/28/2010 3:13:59 AM #

stock trading

Awesome blog it's not often that I comment but I felt you deserve it.

stock trading United States

2/28/2010 11:29:49 AM #

stocks

Just wanted to say that you have some great content on your website. If it's allowed I would like to use some of the information you provided on my blog. If I link back to your website would it be OK to do so?

stocks United States

3/15/2010 3:15:46 AM #

generalized anxiety disorder treatment

I am quite new to wordpress. but what you write in this blog is really good and very informative. I think it will help me in the future. Thanks for the great job.

generalized anxiety disorder treatment United States

3/17/2010 12:07:03 PM #

arac sorgulama

I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else!

arac sorgulama United States

3/19/2010 10:41:49 AM #

wow leveling guide

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon.

wow leveling guide United States

3/20/2010 3:42:49 PM #

ehliyet

Excellent post.I want to thank you for this informative read, I really appreciate sharing this great post. Keep up your work.

ehliyet Denmark

4/3/2010 9:51:45 AM #

wow leveling guide

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon.

wow leveling guide United States

4/5/2010 1:36:32 PM #

Melissa Suffield

Hey, I'd just like to say, what a cool blog! i'm in the process of doing a bit of research for my website but i had a problem reading this post as the text sticking out on to the menu.... NVM! sorry, my fault, its my old version of chrome causing the bug. May be worthwhile telling ppl to update? All the best. Melissa Suffield

Melissa Suffield United States

4/7/2010 9:24:31 PM #

Connecticut Payday Loans

It is a rough road that leads to the heights of greatness.

Connecticut Payday Loans United States

Add comment


(Will show your Gravatar icon)

(De 3 specielle karaktere i det danske alfabet?)
  Country flag

biuquote
  • Comment
  • Preview
Loading



Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen