Programmering af distribuerede systemer for begyndere
Hvis jeg skal pege på en teknologi, som dagligt giver de største produktivitets forbedringer hos de folk som jeg besøger så er det Windows Communication Foundation. I min optik er WCF er den vigtigste enkeltstående teknologi som Microsoft har lavet i flere år.
I 2004 var jeg til den første offentlige "Milestone" på Indigo, som det hed den gang. Dette var et software design review.
Ideen med et sådan "review" er at man sætter 100 nørder ind i en stor sal med pre-configurerede pc'er indeholdende udviklingsmiljø og biblioteker. Man fortæller så de her nørder at de næste par dage skal de kode en IM applikation med det nye rammeværk - Indigo.
Under denne sceance går folk fra produktteamet rundt i lokalet og snakker med programmørerne og får live feedback. Sidst i sceancen får vi fiktive hundrede dollars og bliver bedt om at bruge dem på prioriteringer i forbindelse med produktet som det ser ud nu. Det kan være: proritering af hurtig launch, understøttelse for bestemte standarder, interoperabilitet med andre leverandører software stacks osv.
Jeg kan ikke huske hvad jeg brugte min penge på, men jeg er sikker på at det var noget fornuftigt .
Jeg sad ved siden af en yderst kompetent, meget åben og talende fyr (hvilket altid har virket stærkt intimiderende på en jysk træmand som undertegnede). John er gammel kollega med Don Box, som var vores host på scenen og de to var også kollegaer med Aaron Skonnard hos Developmentor, som stod for alt teknisk indhold.
Aaron har gennem hele min introduktion til Microsofts platform være en gennemgående figur dels med en (gratis) bog om xml og dets type system, dels som forfatter til en række kurser og senest som den mentor, jeg sender folk videre til for at få en introduktion til Windows Communication Foundation.
Så hvis du vil starte med Windows Communication Foundation helt fra bunden så har Aaron forfattet en serie webcasts som i øjeblikket kommer på uge basis.
God introduktion.
Kommentarer (4)
Hvor kommer det distriburede system ind henne?
Er det indigo? Og er det en .NET eller noget udenfor .NET?
Hvilken model bruges der?
Jeg er selv interresseret i dist. systemer, så jeg bliver jo lidt nød til at spørge.
For mig er distribuerede systemer det software, som ikke kun er "on premise install". Dvs software som indgår i en eller anden distribuerert helhed uanset om systems funktionalitet f.eks. er spredt på maskine, OS, server farm og/eller geografisk.
WCF (aka. Indigo) er det rammeværk som .Net(> v. 3.0) tilbyder til at kode webservices, P2P, MQ osv.
M.a.o fra Mono dokumentationen:
"WCF is Microsoft's unified framework for building secure, reliable,transacted, and interoperable distributed applications."
Modellen kan du se af den første video. Kort fortalt er det en model, som populært omtales som ABC.
'C' - står for Contract. Dette er et interface programmeret i et .Net sprog.
'A' - er Address, dvs. det endpinot hvorfra applikationen "udstilles" (f.eks http://minservice.dot/foo)
'B' - er Binding, som fortæller runtime hvilken kanal, protokol, interoperabilitets niveau og sikkerhed, som applikationen udstilles med.
Jeg er enig med Rene her - WCF er en mindre genistreg fra Microsofts side (i modsætning til WPF, men det er en anden diskussion), og er behageligt at arbejde med.
Der lægges op til en intuitiv arkitektur (hvis man laver serviceorienterede apps), og det hele er ganske godt gennemarbejdet. Ud over det er der den forbedrede performance, idet WCF introducerer nye serializers.
Alt i alt er jeg glad for WCF, og ideen om at afkoble implementationen af ens service fra det faktiske transportlag på en måde, som gør det nemt.

