WPF eller Silverlight + Presentation Model = KANONBRA DESIGN
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
- Programmer mot et interface, ikke en implementasjon
- 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.
Programmeringsbloggen
September 10th, 2008 at 7:40 am
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.
September 10th, 2008 at 11:45 am
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
September 10th, 2008 at 8:10 pm
Nu har jeg publisert kildekoden på bloggen min.
Gøran
September 10th, 2008 at 8:42 pm
Supert, gleder meg til å ta en titt.