De technische architectuur van .NET applicaties is in 2008 subtiel gewijzigd met de introductie van .NET 3.5 en Visual Studio 2008. (okee, voor insiders was vs2008 al eind 2007 beschikbaar ;-) )

Onderstaand diagram is een globaal overzicht van een meerlaags architectuur gebaseerd op het ontwikkelen van een applicatie met Visual Studio 2008.

apparchitecture

WPF, WCF en Linq zijn de nieuwe verschijningen en vervangen respectievelijk winforms, webservices en SQL queries/Hibernate-achtige oplossingen.

Update: Zoals we de diagrammen van meerlaags applicaties in de studieboeken zien zou je bijna denken dat je zelfs voor het simpelweg ophalen van een lijstje met plaatsnamen of landen uit een eenvoudige databasetabel een business-class moet maken. Dat lijkt me in dat geval overbodig. Daarom wijzig ik het bovenstaand plaatje in:

apparchitecture

Waarbij de directe lijn tussen de service laag en de datalaag wordt gebruikt voor gegevensuitwisseling waarbij geen extra logica nodig is. Iemand een idee waarom dit niet zou kunnen of mogen?

"It took us ten years to get back to where we were".

- Anders Hejlsberg, architect van C#

Dit en meer werd er over C# 4.0 verteld tijdens de Professional Developers Conference die 26 t/m 30 oktober werd gehouden in L.A. Voor .NET developers en ontwerpers waren er interessante presentaties bij.

De sessies zijn online te bekijken in WMV-HQ formaat!

Het is de .NET developers onder ons misschien al opgevallen, databinding wordt niet automatisch bijgewerkt als je een waarde in een tekstveld wijzigt en dan op een knop in een toolstrip klikt.

Databinding is niets meer dan een object met gegevens koppelen aan een control (zoals een textbox) op een scherm.

image

Het vreemde is dat zodra je een waarde in een tekstveld wijzigt, de gekoppelde waarde pas wordt bijgewerkt als je expliciet met de muis of de tab toets naar een ander veld gaat.

In de situatie waarin je een waarde veranderd en dan meteen op een ‘save’ knop in de toolbar klikt gebeurt er niets met de ingevoerde waarde.

Toolstrips (knoppenbalken) krijgen namelijk geen focus. Dus de waarde wordt niet bijgewerkt in het bronobject.

De oplossing? Simpel! Roep Validate() aan op je form zodra de save-knop wordt aangeklikt. De databinding zal worden bijgewerkt voor alle child-controls.

Bron