Silverlight / RIA

Silverlight er en aldri så liten revolusjon for .NET utviklere, og som webutvikler er jeg selvsagt interessert. I 2008, like etter at version 2.0 ble lansert, shippet vi vår første Silverlight-kontroll i et av produktene våre i Contiki. Her er det jeg har skrevet om denne teknologien og rike internettapplikasjoner generelt.

MSDN Live Bergen – september 09

Einar presenterer WPF og Silverlight på MSDN Live i Bergen

Denne uken var det i Bergen igjen tid for å ta imot MSDN Live – Microsoft’s road show for utviklere. Som nevnt tidligere var det tre foredragholdere denne gangen, Børge Hansen, Einar Ingebrigtsen og Fredrik Kalseth. Jeg minglet litt først på dagen, så jeg fikk ikke med meg Børge sine presentasjoner av hva som er nytt i VS 2010 og C# 4.0, men her er min oppsummering av de andre foredragene..

WPF 4

I sommer har Einar vært med og utviklet en Microsoft Surface applikasjon for underholdningsprogrammet De Ukjente på NRK1, og han startet med en presentasjon av det, og snakket litt om erfaringene fra prosjektet. Deretter tok han for seg noen utvalgte områder i WPF 4 – han snakket litt om multitouch, demonstrerte ribbons (som han nevte også kan benyttes i WPF 3.5), viste hvordan man lager jumplists for Windows 7, og til slutt avlørte han noen nye databindingsteknikker.

Demonstrasjonen ble desverre noe preget av at Einar hadde lastet ned siste versjon av Visual Studio 2010, som krasjet i tide og utide. Jeg antar de klarer å gjøre IDE’en stabil igjen før den endelige releasen, men inntrykket vi fikk under demoen var ikke bra, og førte til at Einar ikke rakk å vise oss WPF’s nye Visual State Manager.

Silverlight 3

Silverlight-sesjonen gikk mye bedre. Versjon 3 inneholder et hav av nye ting, og også her valgte Einar ut et lite sett av de mest spennende tingene. Han demonstrerte en skygge-effekt som bruker Silverlights pixel shader støtte, han viste oss hvordan Out of Browser fungerer, demonstrerte deler av navigasjons-støtten som er bygget inn (deep linking), og hvordan databinding har blitt mere likt slik det er i WPF.

Det var kanskje mest spennende mot slutten, da han bruke .NET RIA services. Jeg er kjent med hva dette er for noe fra diverse podcasts, men hadde faktisk aldri sett det før – og jeg ser nå at dette er noe jeg absolutt bør se nærmere på. RIA services ser ut til å være en veldig naturlig komponent i enhver løsning som har mye funskjonalitet i browseren (Silverlight eller AJAX-heavy web site), og jeg skulle gjerne ha sett et eget foredrag på MSDN Live dedikert til dette rammeverket.

Einar nevnte også Silverlight Toolkit, en samling av kontroller man kan laste ned fra codeplex, og demonstrerte også en av dem som heter Dataform. Denne verktøykassen inneholder mye bra som man bør ta en titt på om man skal utvikle noe i Silverlight.

Til slutt fortalte Einar litt om Balder, 3D motoren han laget for Silverlight, som etterhvert har/skal utvikle seg til å bli en spillmotor også for Xna og OpenGL. Balder er “hovedpersonen” i en bok som lanseres i disse dager: 3D Game Development with Microsoft Silverlight 3: Beginner’s Guide. Sikkert spennende lesestoff om du går med en liten spillutvikler i magen.

ASP.NET 4

Fredrik viste seg å være en meget solid foreleser. I sitt første foredrag brukte han endel slides til å raskt gå over en rekke nye ting i ASP.NET versjon 4: Slankere web.config, cache providers, preload providers, session state compression, viewstate mode, client id mode, encoding-forbedringer, rendering-forbedringer for å støtte XHTML, MSDeploy, JSONP, m.m.

Deretter gikk han mer i dybden på et par ting, nemlig routing – som begynner å bli ganske kjent nå – og client template rendering. I demoen brukte han et “full-fledged” web prosjekt som bl.a. inneholdt enhetstester, bruk av IoC container (Ninject), repository pattern, og god seperasjon av ansvar i presentasjonslaget. Jeg synes dette fungerte veldig bra, og gav foredraget en ekstra dimensjon i forhold til en typisk demo av hva som er nytt i ASP.NET. Vi måtte holde 100% fokus på hva som skjedde på skjermen for å ikke falle av, for Fredrik holdt et ganske bra tempo, og gav oss mye “valuta for pengene”.

Han gav oss også et par andre tips til ting det kan være verdt å se på. Først og fremst var dette ASP.NET Chart Controls pakken fra Microsoft (presentert av ScottGu her). Her har de laget en flott, gratis chart-pakke som kan erstatte mye av behovet for tredjepartskontroller.

Det andre tipset var et lite javascript biblotek som heter datejs – noe jeg gjerne kommer til å bruke selv nå som jeg vet om det.

Smidig utvikling i Visual Studio

Den siste forelesningen til Fredrik fikk jeg bare delvis med meg (måtte rydde NNUG-standen), men likevel var det den jeg likte aller best. Her snakket han nemlig om flere av mine “hjertebarn”; han gav bl.a. en god introduksjon til Onion Architecture og Inversion of Control, og snakket om god utviklingsprosess med bruk av testdreven utvikling, branching, continuous integration, automatisk deploy til test og staging-miljø, automatisk kjøring av funksjonelle tester vha selenium, m.m.

Han brukte flere, nye features i Visual Studio og Team Foundation Server, og viste bl.a. hvordan de nå har tatt i bruk Workflow Foundation for å lage build- og deployment-prosesser, noe som virket ganske bra. Fredrik brukte det samme web prosjektet som han  viste oss i den første sesjonen, og jeg tror som sagt dette gav dem som hørte på noe ekstra, ved at de fikk se et fullverdig prosjekt gjort på den “riktige” måten.

Oppsummering

Dagen ble bedre enn forventet. Beskrivelsen av agendaen, med fokus på Microsoft’s produkter, gav et for snevert inntrykk av hva foredragene inneholdt. Jeg ble spesielt imponert over Fredrik sine presentasjoner, og jeg synes vi absolutt bør forsøke å få ham til å komme og holde noen foredrag for oss på NNUG i Bergen – de fleste utviklere kan lære noe av hvordan han gjør saker og ting.

Holder du til i Oslo kan du forøvrig fortsatt få med deg disse foredragene, da MSDN Live kommer til Oslo Kongressenter tirsdag 29. september.

Det beste Silverlight-grensesnittet sålangt?

patient.png 

Til alle som er interessert i hva som er mulig å få til på web i forhold til rike internett-applikasjoner, men som ikke har fått med seg denne enda: Du bare må ta en titt på Microsofts visjon for helsevesenet. Den består av tre ulike grensesnitt, og du bør bruke litt tid på hver av dem for å teste ut alle finurlighetene. Gled deg! 

WPF eller Silverlight + Presentation Model = KANONBRA DESIGN

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.


Torbjørn: La oss anta to ulike definisjoner av Template Method pattern - de to ytterpunkte...

Lars-Petter: Hei igjen. Siden du inviterer til å ta diskusjonen i bloggen, og har tatt deg t...

Torbjørn: Lars-Petter: Det er én måte å se det på. Det er absolutt fortsatt Template M...

Lars-Petter: Hei. Har du ikke i prinsippet her gått over fra Template Method (arv) til Strat...

Christian Abildsø: I alle fall i C#, så føles dette som kode som blir mer fleksibel men vanskelig...

Torbjørn: Hei Henrik, og takk for tilbudet. Ble oppmerksom på Rasberry Pi for under en uk...

Henrik Sandaker Palm: Ang. større hobby prosjekt. Du er som er en slik rakker på programmering har j...

Øivind Nilsen: Slutt å bruke mobilnummeret mitt som eksempel !...

Bjørn Einar Bjartnes: Jeg har også latt meg fascinere av Clojure, uten at jeg har kommet så veldig l...

Bjørn Einar Bjartnes: Sweet :) Jeg tror egentlig jeg liker det som det er, med musikk. Litt av utford...

 Hold deg oppdatert

Søk i bloggen

Ferske innlegg

  • Template Method del 4: Multippel arv
  • Template Method Intermesso
  • Template Method del 3: Bare funksjoner
  • Template Method del 2: På vei mot funksjonell programmering
  • Kategorier

  • .net ninja (37)
  • Bøker (17)
  • Diverse prosjekter (35)
  • DSL (10)
  • Erlang (10)
  • F# (5)
  • Hardware (1)
  • Jobb (77)
  • Julekalender (51)
  • kjempekjekt.com (23)
  • LISP/Clojure (33)
  • NNUG / community (60)
  • O/RM & databaser (10)
  • Off topic (116)
  • OO-design/clean code (30)
  • Podcasts (14)
  • Polyglot (77)
  • Ruby (27)
  • Silverlight / RIA (3)
  • Software/verktøy (20)
  • Softwareutvikling (20)
  • Testing / TDD (30)
  • the contiki strip (13)
  • User experience (3)
  • WCF (3)
  • Webutvikling (32)
  • WPF (9)
  • WTF (12)
  • Last ned Wallpaper

    Programmeringsbloggens tøffe skrivebordsbakgrunn med snippets fra ulike språk laster du ned her!

    Abonner via epost

    Om du vil kan du få alle nye blogposter tilsendt til din epost. Abonner nå, det er kjempeenkelt!

    Meta