• No results found

Visual Studio, de officiële ontwikkelomgeving van Microsoft, maakt gebruik van een pakketmanager om pakketten zoals packages, codebibliotheken en API’s te installeren in .Net projecten. Deze

pakketmanager heet NuGet6. Bij het opstarten van nieuwe projecten, download Microsoft automatisch

een aantal pakketten afhankelijke van welk sjabloon er gekozen wordt.

Bij het starten van een .Net MVC web-applicatie project worden de volgende packages gedownload: ● Die het schrijven van javascript ondersteunen: jQuery, Webgrease

● Die html5 en CSS3 features in oudere browers mogelijk maken: Modernizr, Respond JS ● Een standaard responsive css framework: Bootstrap

● De database abstractielaag: Entity framework. ● Voor beveiliging (autorisatie): OWIN

6 http://www.nuget.org/

Resultaten

In de interviews is gevraagd, de packages te benoemen die in het laatste project gebruikt zijn. Deze zijn geturfd en te zien in Figuur 28. Om te voorkomen dat packages vergeten werden is bij het interview gevalideerd of de meest bekende packages niet vergeten werden. Dit zijn alle packages die gedownload worden bij het starten van een MVC applicatie. Daarnaast is gevraagd naar Autofac, JQuery, Angular JS, Knockout JS, NHibernite, NUnit en Enterprise Library.

Uit de interviews kwam naar boven dat vooral deze packages veel gebruikt werden. Naast de genoemde packages werd ook Autofac, Moq, SharZipLib en Smart String Resources

aangedragen als gebruikte packages. Uit de gesprekken kwam naar voren dat Moq gebruikt werd om unittests te schrijven. Deze werd niet zoveel gebruikt, omdat het schrijven van

unittests niet meer zo gebruikelijk is. De SharpZipLib werd alleen gebruikt wanneer de applicatie bestanden moest kunnen zippen of unzippen.

Elke package voegt een ander onderdeel toe aan het project. Om duidelijk overzicht te kunnen creëren, is er voor elke package

uitgezocht wat deze package inhoudt. Dit is te zien aan het onderstaande overzicht:

Package Categorie Beschrijving

Angular JS Programmeerhulp Een javascript library voor een dynamische webapplicatie Autofac Programmeerhulp Een package die helpt bij inversie van controle

AutoMapper Programmeerhulp

Een package die het mogelijk maakt viewmodellen volgens conversie automatisch te koppelen aan modellen.

Bootstrap CSS Library Een responsive front-end (css) framework Enterprise

Library Programmeerhulp

Collectie van herbruikbare softwarwecomponenten voor o.a. logging, validatie, data-toegang

FIGUUR 28 GEBRUIKAANTALPACKAGEIN LAATSTEPROJECT

Entity

Framework Databaseabstractie Database abstractielaag van Microsoft

jQuery javascript Library

Een javascript library die het gebruik van javascript vereenvoudigt.

Knockout JS javascript Library

een javascript library voor een dynamische (MVVM) webapplicatie

Modernizr javascript Library

Een javascript library om te detecteren of HTML5 en CSS3 functionaliteiten werken in de browser

Moq Programmeerhulp

Wordt gebruikt om mock objecten te maken van .Net klassen

NHibernate Databaseabstractie

Alternatieve database abstractielaag. Kan ook gebruikt worden met niet Microsoft sql-databases.

NUnit Programmeerhulp Een alternatief unittest framework

OWIN Anders

Een standaard interface tussen Webservers en applicaties.

Respond JS javascript Library

Een javascript library die media css queries maakt in browers die dit niet ondersteunen.

SharpZipLib Anders Een zip library. Smart String

Resources Programmeerhulp

Extensies op de core .NET functionaliteit en mogelijkheid om tekst buiten de code te noteren.

WebGrease Optimalisatie

Kan gebruikt worden om javascript, css en image files te optimaliseren

Om de packages Autofac en Automapper te verduidelijken is hiervoor een korte beschrijving te vinden onder het volgende kopje.

Autofac

Autofac7 is een pakket dat de ontwikkelaars helpt om te programmeren met een losse koppeling

(inversie van controle). De package biedt de mogelijkheid specifieke klassen te koppelen aan een interface en de klassen op te halen via deze interface. Zo wordt er, los en eenmalig gedefinieerd welke implementatie van deze functionaliteit verwacht wordt. Het voordeel hiervan is dat, er hierdoor maar op één plaats de specifieke implementatie is gedefinieerd en deze dus snel is te wisselen.

Stel: Je hebt een interface ‘Output schrijver’. Hiervan kan de implementatie zijn dat de output weggeschreven wordt naar de console. Met Autofac kan een container gemaakt worden waarin de klasse die het wegschrijft naar console geregistreerd kan worden aan de interface ‘Output schrijver’. Hierna kan aan deze container een Output schrijver opgevraagd worden waarna deze container automatisch een Console schrijver terug geeft (omdat deze geregistreerd is als dé output schrijver). Dit zorgt ervoor dat er minder vaak specifieke implementaties gedefinieerd hoeven worden. Zo kan er dus sneller geswitcht worden van specifieke implementatie omdat deze maar op één plaats gedefinieerd is.

Automapper

Automapper8 is een pakket die helpt om modellen aan elkaar te koppelen aan de hand van een

naamgeving regeling. Omdat .Net voorschrijft dat er altijd maar één model of lijst van modellen doorgegeven kan worden naar de view, wordt er door de ontwikkelaar vaak gebruik gemaakt van ViewModels. Dit is een model met alle gegevens die nodig zijn voor het bepaalde view. Door de automapper package hoeft deze viewmodel niet meer handmatig gevuld te worden maar gebeurt dit automatisch volgens een standaard naamgeving (een conventie).

Stel: Er is een model Blog en Auteur. Elke blog heeft een auteur. Een webpagina bevat een lijst met alle blogtitels en de naam van de auteur. Dan kan er een ViewModel gemaakt worden met een titel en naam van de auteur genaamd ‘AuteurNaam’. Nu kan met de automapper dit ViewModel gekoppeld worden aan de het Blog model. Wanneer dit gedaan is, weet de automapper dat wanneer de AuteurNaam van het viewmodel opgevraagd wordt de Naam van de Auteur van het Blog object moet teruggeven. Zo hoeft deze koppeling niet handmatig geprogrammeerd te worden.