Projecten
Vorig project Volgend projectReferentie architectuur
Opdrachtgever: Eigen beheerBranche: Periode: augustus/september 2012
Vrielink software heeft altijd productief .net windows-applicaties (winforms) kunnen ontwikkelen. Nu winforms minder gevraagd wordt, is een onderzoek gestart hoe software net zo productief in WPF en HTML (asp.net) gebouwd kan worden. Daarbij wordt aangesloten op de manier waarop in winforms is ontwikkeld. Bestaande winforms code wordt verder gemigreerd richting een nieuwe architectuur die dichter aansluit bij wpf- en web-ontwikkeling. Daarvoor is onderzoek gedaan naar toepassingen van het model-view-controller of model-view-viewmodel patroon. In de bestaande applicaties is er al een duidelijke 'model'/business-laag. Deze bestaan uit relatief eenvoudige POCO-classes die gebruik maken van een onderliggende databaselaag, maar niet gebaseerd zijn op Entity Framework, Nhibernate, Linq of andere koppelingen naar de database. In de nieuwe architectuur voor winforms zal nog meer code uit de schermen gehaald worden door toepassing van afgeleide of 'standaard'-controllers. Verder zal de business-laag verder worden uitgebreid met concepten als 'dataannotations' en 'validators". Een vergelijkbare 'standaard'-controller wordt gebruikt in WPF en Webontwikkeling. Daarbij wordt vooralsnog geen zuivere MVC maar een 'page'-georienteerde aanpak gehanteerd gebaseerd op Webpages en de Razor-view engine. Verder wordt jQuery gebruikt voor validatie (unobtrusive). Er zal in WPF (net zoals in winforms) op een niet-declaratieve wijze gebruik worden gemaakt van databinding. Zowel voor Wpf en web is er een voorbeeld programma gebouwd die bestaat uit een hoofdscherm met 1 'plugin' module. Deze 'plugin module bestaat uit een 'zoek'-scherm (paging, zoeken op elk veld) met vanuit dit zoekscherm een toevoeg/wijzig-scherm met diverse controls. Daarnaast nog een onderhoudsscherm voor een bepaalde tabel die dynamisch op basis van metadata wordt opgebouwd.
Hulpmiddelen: JavaScript, WPF, ASP (Razor + Webpages + MVC), HTML, DOM, CSS, jQuery