Vad är .NET RIA Services?

En av de nyheter som annonserades på MIX som jag personligen tror kommer att få stor betydelse i framtiden är .NET RIA Services - ett nytt ramverk för att bygga flerskiktade lösningar med rika klienter i form av Silverlight, WPF eller AJAX-applikationer.

.NET RIA Services adresserar många av de problem som utvecklare av flerskiktade lösningar ständigt brottas med – som hur du hanterar autentisering, auktorisering, datavalidering, filtrering, ”change-tracking” samt kommunikation med ditt tjänstelager – samtidigt som din applikation ska vara enkel att testa och underhålla.

Ramverket bygger på tanken att klienten bör ses som en  utsträckt del av hela applikationen, snarare än något som är separerat från de delar av applikationen som körs på servern (även om de olika lagren fortfarande har klart separerade ansvarsområden):

RIAServices 

.NET RIA Services kommer alltså att kunna användas för fler olika typer av klienter, men den första förhandsvisningen innehåller en implementation för Silverlight 3-klienter. En fundamental del i .NET RIA Services är den kodgenerering och synkronisering av affärslogik, entiteter, valideringsregler från serverskikt till klientskikt som verktygsstödet i Visual Studio möjliggör, något som kommer förenkla utveckling av den här typen av applikationer avsevärt.

Det som jag tycker är mycket trevligt är att ramverket i sig inte begränsar dig till en viss typ av data/domän-modell – i den förhandsvisning som nu släppts finns inbyggt verktygsstöd för LINQ to SQL och Entity Framework – men det går alldeles utmärkt att använda andra OR-mappers och  (nästan) helt rena s.k. POCO-klasser (i den version som finns nu måste du märka upp vilka egenskaper som är nycklar med ett speciellt Key-attribut, teamet arbetar på att hitta vägar runt det). Ramverket är också byggt med testbarhet i åtanke så du kan t.ex. enkelt mocka bort beroende till tjänstelagret när du vill testa din klient.

Fredrik Normén har spelat in den här introduktionen till .NET RIA Services, där han också går igenom några av nyheterna i Silverlight 3 som utökade navigeringsfunktioner och offline-stöd:

Get Microsoft Silverlight

På sajten MSDN Code Gallery finns en bra grundgenomgång av .NET RIA Services komplett med kodexempel samt ett antal olika exempelapplikationer som beskriver olika scenarion för dig som vill lära dig mer om hur ramverket fungerar. Där finns också ett alldeles lysande whitepaper som i detalj beskriver hur kodgenereringen arbetar och hur de olika klasser som skapas fungerar – rekommenderas varmt om du vill förstå vad som händer bakom kulisserna.

För att kunna testa .NET RIA Services behöver du ladda hem och installera Silverlight 3 Tools for Visual Studio. Du behöver också ladda hem och installera själva .NET RIA Services-ramverket.

OBS! – gör inte detta på din produktionsmaskin utan gör det på en separat testmaskin eller i en virtuell miljö. Framförallt om du idag redan arbetar med Silverlight 2 är det här viktigt eftersom projektmallarna i Visual Studio för 2:an och projektmallarna för 3:an inte är kompatibla med varandra (det är möjligt att utveckla både för 2:an och 3:an på samma maskin men det är ganska krångligt – Jeff Wilcox har en bra artikel som beskriver hur du går tillväga).