Visie

Het is telkens weer een uitdaging om snelheid van ontwikkelen te combineren met een degelijke architectuur dat jaren meekan.
Ik heb belangrijke lessen geleerd uit een aantal desastreuze RAD projecten die ik van dichtbij meemaakte. Bijzonder leerzaam om te weten hoe het in elk geval niet moet.

Als ingenieur (Ir., electro-techniek) vind ik een degelijke architectuur erg belangrijk. Ik heb me dan ook vanaf het begin verdiept in de mogelijkheden van .NET om de volgende zaken toe te passen in de applicatie architectuur:

  • Toepassen van moderne model-driven OO principes, zowel in ontwerp (UML) als bij de implementatie door bijvoorbeeld een ORM (Object Relational Mapper) te gebruiken.
  • Echte meer-lagen architectuur, liefst op zo'n manier dat de GUI laag uitwisselbaar is.
  • Een degelijke architectuur gecombineerd met efficiente RAD ontwikkeling (deze twee hoeven niet tegenstrijdig te zijn!).

Ik ben aldoende tot een een eigen aanpak gekomen die ik FAD noem: Flexible Application Development.
Een belangrijke pijler van FAD is de initiële investering in een geschikt applicatie framework bovenop .NET. Zo'n framework geeft dan handen en voeten aan de hoger genoemde architectuur principes. In het verleden heb ik zeer goede resultaten behaald met de model driven ORM van Nolics. Inmiddels kent .NET haar eigen ORM (Object Relational Mapper), of eigenlijk zelfs twee: LINQ for Sql en Entity Framework (met LINQ for Entities).

Ik heb de afgelopen twee jaar een uitgebreid application framework voor asp.net gebouwd met Entity Framework als fundament. Ik gebruik inmiddels .NET 4.0 en Entity Framework 2 waarmee het mogelijk is om met de interne codegenerator bij Visual Studio (T4) relatief gemakkelijk de kale klassen definities in C# van de business objecten uit te breiden. Zo ondersteunen de business objecten in mijn framework op een handzame manier de belangrijkste life-cycle events, het rapporteren van business rule overtredingen en het interne security mechanisme, Verder heb ik de mogelijkheid om met een aparte tool de metadata van het business model uit te breiden. Alle lagen van de applicatie kunnen nuttige informatie uit de metadata halen. Het gecentraliseerd beschikbaar stellen van de metadata voorkomt veel redundante details in de applicatie code met alle fouten van dien. Denk bijvoorbeeld aan de tekst voor labels en tooltips bij de properties van de business objecten, de maximale lengte van text properties, de datatypes van de business properties enz. Dit soort informatie wordt op meerdere plekken in de applicatie gebruikt en hoeft nu dus niet telkens met de hand te worden ingeprogrammeert maar wordt automatisch opgezocht in de metadata. Dit framework is geoptimaliseerd voor data intensieve toepassingen. CRUD bewerkingen via edit panelen met samenhangende properties van één of meerder business object in combinatie met de bedienings knoppen, filterpanelen en selectielijsten ontstaan gemakkelijk met een relatief zeer klein aantal regels code. De schermen kunnen helemaal automatisch ontstaan op basis van de code in de buisiness laag. Het geheel volgt het MVC design pattern (niet te verwarren met het asp.net MVC framework).

Er zijn natuurlijk wel meer applicatie frameworks voor asp.net. Het unieke van mijn framework is dat het standaard componenten bevat voor alle lagen van de applicatie, van database tot UI. Uiteraard kan er in speciale gevallen afgeweken worden van de standaard oplossingen. Het eindresultaat is telkens weer een applicatie met een degelijke multi-tier architectuur waar alles een voorspelbare plaats heeft. Dit garandeert een goede onderhoudbaarheid mede ook door de grote flexibiliteit van het geheel.

Ik heb inmiddels een complete webshop gebouwd met dit framework en een online enquête platform: Online Survey. Momenteel werk ik aan een mini-CRM speciaal bedoeld voor B2B markonderzoek op basis van adressenlijsten van de Kamer van Koophandel. De kracht van deze mini-CRM is het geintegreerde gebruik van het eerder genoemde digitale enquête platform. Alle soorten contacten met de bedrijven uit de doelgroep kunnen worden geregistreerd (email, enquete uitslag, telefoon) zodat men achteraf gemakkelijk kan inzoemen op de bedrijven met de hoogste kans van slagen om zaken mee te doen. Deze nieuwe webapplicatie heet B2B Martonderzoek.

Zie voor meer technische details dit engelstalige overzicht.