Wednesday, September 10th, 2008
Skriv en kommentar

Gøran Hansen holdt hele tre foredrag på gårsdagens MSDN Live i Bergen. Det første var en slags introduksjon til Silverlight, men jeg har allerede brukt en del tid på å sette meg inn i denne teknologien, så her var det ikke noe nytt for meg.

Deretter snakket han om noe som heter ASP.NET Dynamic Data som kom i SP1 for .NET 3.5. Det dreier seg om et rammeverk for å automatisk generere en web app basert på et databaseskjema. En komplett site med view og edit muligheter av alle tabeller i basen får man vha. et project template + én linje kode. Deretter kan man gå igang og modifisere de delene man ønsker for å lage en mere skreddersydd løsning.

Hele greia minner faktisk mye om Ruby on Rails. Gøran gav en veldig bra demo av teknologien, og argumenterte godt for hvorfor vi ønsker å gjøre det sånn (DRY.., Don’t Repeat Yourself). Han kom også med en prediksjon; han tror at scaffolding-implementasjonen som muligjør Dynamic Data om ikke så alt for lenge også vil dukke opp i WPF og Silverlight. Det høres flott ut. ScottGu har en bra blogpost som går mer i detalj om bruk av Dynamic Data.

Men skulle ikke denne artikkelen handle om Presentation Model?

Jo, det skulle den, for Gjørans siste foredrag var nok det mest interessante. Her demonstrerte han nemlig praktisk GUI programmering i WPF, men med fokus på hvordan koden bør struktureres.

Gjøran koder etter to kjente prinsipper

  1. Programmer mot et interface, ikke en implementasjon
  2. Separation of Concerns

Jeg har utallige ganger hørt om disse, og jeg har utallige ganger hørt og lest om patterns som MVC, MVP og Presenter Model, men aldri før har jeg fått en så konkret og illustrerende kodedemo som jeg fikk i går. Det gikk opp et aldri så lite lys for meg. Med Gjørans kode får man skilt ut GUI logikken fra selve presentasjonen, slik at den både kan gjenbrukes mellom ulike views (Silverlight, ASP.NET, WinForms etc.) og slik at den kan enhetstestes! Faktisk!

Gjørans Presentation Model er et objekt som abstraherer et brukerinterface. Det er et UI uten UI som han sa. Det inneholder UI’ets state og operasjoner, og i WPF eller Silverlight er det koblet til et view gjennom toveis databinding. Toveis databinding er ekstremt bra i disse nye GUI teknologiene, og det er det som gjør at Presnetation Model patternet fungerer ekstra bra her.

Det ble også poengtert at Presentation Model objektene alltid forholdt seg til data modellen gjennom interface – nødvendig for å få til enhetstesting, men også slik kan gjøre endringer enklere etc.

Koden Gjøran viste var fra hans SPRINT Board prosjekt, som han sa han skulle legge ut på Codeplex – men han lovet også å legge den + presentasjonene ut på bloggen sin, du finner den her. Koden, også fra Silverlight demone, er absolutt verdt en titt.

Kategorier: NNUG / community.
RSS feed for kommentarene. Tilbaketråkk.

4 kommentarer til “WPF eller Silverlight + Presentation Model = KANONBRA DESIGN”

  1. Jonas Follesø Says:

    Gøy og høre at Gøran leverte varene på MSDN! Han er en god kammerat og kollega av meg :)

    Om du vil lese mer, eller ha flere eksempler på Silverlight applikasjoner som bruker MVVM har jeg en del informasjon på bloggen. Har nylig snakket om Silverlight på TechEd New Zealand og Australia om nettopp dette.

    http://jonas.follesoe.no/TechEd2008NdashSilverlight2ForDevelopers.aspx

    http://jonas.follesoe.no/UnitTestingPresentationModelAndTheHTMLBridgeAtCodeCampNZ.aspx

    En ekstra gevinst av å bruke Presentation Model patternet er at du kan gjøre koden din mer “designer vennlig”. Dvs. at du kan f.eks bruke stub implementasjoner av eksterne tjenester når konden konsumeres i Blend, noe som gir designerne en mye enklere jobb med å style applikasjonen.

  2. Gøran Says:

    Hei Torbjørn

    Alltid morsomt med slike tilbakemeldinger. Det er akkurat slike tilbakemeldinger som gjør at jeg gidder å bruke så mye tid på dette. Det var hardt og holde tre foredrag, men det hjalp meg veldig at dere i Bergen var så engasjert!

    Når det gjelder Presentation Model så skal jeg legge ut kildekoden fra demoen på bloggen min snart. Så får dere i første omgang laste den ned derfra.

    Jonas begynner å bli verdenskjent og hans TechEd presentasjon er særdeles bra! Anbefaler deg å ta en titt.

    Gøran

  3. Gøran Says:

    Nu har jeg publisert kildekoden på bloggen min.

    Gøran

  4. Torbjørn Says:

    Supert, gleder meg til å ta en titt.

Skriv en kommentar

Tillatte tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Siste kommentarer

Bette
It's appropriate time to make some plans for the long run and it's time to be happy. I have learn this submit and if I may just I desire to recomme...
Torbjørn
En korreksjon: I artikkelen her sier jeg at det limbiske system ofte kalles reptilhjernen. Dette er ikke riktig! Begrepene reptilhjernen (eller R-comp...
Torbjørn
PS: Takk til Børge Hansen, som delte SCARF-modellen med meg!...
Børge Hansen
Denne likte jeg veldig godt. Du skriver godt og har gode betraktninger  Keep it up – flere trenger å tørre å lære mer om ledelse – du l...
Tormod
Er egentlig ikke overrasket. F# sin fortè er programmererens produktivitet/kvalitet og anledning til parallell kjøring. Men kjøremotoren har ...
Stian
Ville også prøvd med et større problem (x100 eller x1000 f.eks). Når man snakker så små brøkdeler av et sekund som her så kan tiden for en ell...
Torbjørn
Har ikke sjekket - tar en titt i morgen hvis tid :)...
Einar W. Høst
Mhp tco: hva sier ILSpy?...
Torbjørn
Har ikke sett noe på PSeq før, men kjenner til den typen funksjoner fra blant annet Clojure. Og problemet med slike funksjoner i sammenhenger som de...
Håvard
Veldig bra sammenligning! Har du sett på ytelsen av PSeq.* fra powerpakken? Tipper den vil gi performancehit på små mengder, men kan kanskje resul...
Creative Commons-lisens
Innholdet på denne bloggen er tilgjengelig under Creative Commons Navngivelse-Ikkekommersiell-DelPåSammeVilkår 3.0 Norge lisens.

Programmeringsbloggen
Kjempekjekt.com

© 2006-2013 Torbjørn Marø

Jeg har vært en profesjonell programmerer siden 1999, og dette er min blogg. Målet med bloggen er å stimulere meg selv og alle andre til kontinuerlig eksperimentering og læring.

Jeg forsøker å være allsidig, og programmerer blant annet i C#, Ruby, Erlang og Clojure.

Jeg praktiserer TDD og andre smidige utviklingspraksiser. Jeg er opptatt av kvalitet og ren kode.

Dette og ganske mye mer kan du lese om på denne bloggen!