20 September werd alweer het 3e devNetNoord event gehouden. devNetNoord is een platform voor en door de Noord Nerdelandse .NET developers. Er waren 3 sprekers te gast met een aantal interessante onderwerpen.
De eerste spreker was Kees Dijk die ons in een korte tijd het hele asynchrone dotNet landschap liet zien. Van de historische componenten uit dotNet 1.0 en 2.0 tot de relatief nieuwe toevoegingen in dotNet 4.5. Asynchroniteit is een onmisbaar component in moderne toepassing, dit heeft verschillende oorzaken: toegenomen belang van een responsive UI. Voor moderne applicaties, denk aan apps op een tablet, is het dodelijk als de UI niet vlot reageert op de user input. Dit heeft als gevolg dat alle operaties asynchroon afgehandeld moeten worden zodat de UI thread niet geblokkeerd wordt.
Een ander gebruik van asynchroniteit is het beter kunnen benutten van de meerdere cores van moderne CPU’s. Door je werk te verdelen over meerdere core’s kan er een behoorlijke performance winst behaald worden.
Gelukkig wordt het door verschillende toevoegingen aan dotNet steeds eenvoudiger om asynchroniteit in te bouwen. Vooral de introductie van Task<T>, async/await, Parallel Ling (plinq) maken het eenvoudig(er) om asynchroon/parallel te programmeren. Ook toevoegingen de Reactive Extensions (RX) maken het eenvoudig om bijvoorbeeld events van sensoren (denk aan GPS, touch input) eenvoudig af te handelen.
De tweede spreker, Pieter Joost van de Sande, had een heel ander, onderwerp: Command Query Responsibility Segregation (CQRS) architectural pattern. Een verfrissende kijk op het opzetten van een applicatie architectuur. De CQRS werd vergeleken met de traditionele drie lagen architectuur van Presentatie, Business logica en data acces. Bij CQRS is de architectuur opgesplitst in een lees kant, geoptimaliseerd voor het presenteren van de gevraagde data. De data wordt zoveel mogelijk hap klaar en ge-pre-rendered voor de UI klaargezet, voor maximale responsiveness en schaalbaarheid. De andere kant van de architectuur is de schrijf/actie kant, waar die de gebruikers acties afhandelt. De acties worden als commands door gegeven een command handler welke er events van genereerd. Al deze events worden afgehandeld door de domein laag en opgeslagen in een repository. Door verschillende ‘inspectors’ op de events worden lees data bijgewerkt .
Grote voordelen van de architectuur:
- Schaalbaar en snel. De read kant is geoptimaliseerd voor presentatie en kan eenvoudig geschaald worden.
- Doordat alles wat gebeurd door de applicatie geregistreerd is het ook achteraf mogelijk business logica en business value uit de data te halen. Er kan waardevolle marketing informatie uit de historische data gehaald worden!
Nadelen:
- Specialistische hardware voor het afhandelen van de IO’s
- Er moet veel data gemanaged worden
Als laats liet Gerard van der Pol ons de nieuwe features van Visual Studio 2012 en TFS 2012 zien. Wat vooral interessant is zijn de nieuwe toevoegingen aan TFS om het werken in teams beter te ondersteunen. De scrum dashboard hebben bijvoorbeeld een update gekregen zodat deze ook goed te gebruiken zijn als vervanger van het vertrouwde papieren scrum dashboard met de gekeurde post-its. Vooral handige als je team fysiek over meerdere locaties verdeeld is.
Als met al weer een geslaagd event! Tot de volgende devNetNoord.