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.