ORDINA BLOGT

New Generation Web Development

Dat Microsoft met zijn nieuwe versie van ASP.NET (5), MVC (6) en Visual Studio 2015 een volledig nieuwe kijk heeft op gebied van ontwikkeling, zullen de meeste mensen ondertussen al wel weten. Maar wat zijn nu echt de grote verschillen die er toe doen in de praktijk? En voor de klanten? Dit zijn natuurlijk zaken die voor discussie vatbaar zijn.

  • Jens Helderweirdt
  • 19 juni 2015

Allereerst wil ik even duidelijk stellen dat ASP.NET 5 zonder enige twijfel de release is met de grootste impact, deze versie is herschreven vanaf nul, met een heel andere kijk op web development. Ik ga een overzicht maken van de veranderingen die in mijn ogen het meest opvallend zijn.

ASP.NET 5 & Visual Studio 2015

Open source & cross platform

Ondertussen is het al een tijdje mogelijk om .NET technologieën op niet-Windows platformen te gebruiken dankzij het Mono project, een open source implementatie van .NET waar Xamarin een grote contributor van is.  Hierdoor konden we misschien al vermoeden dat Microsoft ook ooit zelf deze stap zou zetten. Wel, de eerste stap werd gezet op Microsoft Build 2014, dé Developers Conference in San Francisco. Hierop kondigde Microsoft, .NET Foundation[1] aan, een verzameling van 14 .NET componenten, die vanaf dan open source projecten werden.

De volgende grote aankondiging gebeurde tijdens de Connect() conference in november 2014. Microsoft zette daar een grote stap naar het open source gebeuren. Ze vertelden dat ze de source code van de volledige .NET Stack zouden openstellen, beginnend bij de volgende versie van ASP.NET, helemaal tot aan de CLR en BCL[2]. Hierbij gepaard ging dat ze ook een versie zouden maken van het .NET Platform voor Linux en OS X. Dit was de eerste keer dat Microsoft, .NET tegenover Java zette, als cross-platform software development solution.

Met de beta releases had iedereen dus de mogelijkheid om .NET webapplicaties te bouwen met ASP.NET 5, zowel op Windows toestellen als op Linux en Mac OS X toestellen. Dit kon dan in editors als Sublime Text of Webstorm.

Microsoft heeft op Build 2015 verschillende nieuwigheden aangekondigd. Visual Studio Code was één van de nieuwigheden; een afgeslankte versie van Visual Studio die tegelijk ook draait op Linux en OS X toestellen. Hiermee wordt alles nog een stuk interessanter voor mensen die geen Windows toestel gebruiken... Dit inclusief IntelliSense, debugging en Git source control support.









GruntJS (vs. Gulp)

GruntJS en Gulp zijn task runners die front-end developers al een tijdje gebruiken. Nu heeft Microsoft hiervoor ook ondersteuning toegevoegd in Visual Studio. Enkele voorbeelden van taken die je snel kan uitvoeren met Grunt en Gulp zijn: verkleinen van CSS of Javascript files (minify), het automatisch kopiëren van files van en naar een bepaalde locatie, het updaten van een pagina zonder de browser te moeten refreshen, het compilen van LESS en SASS naar CSS en ga zo maar door.

Een groot verschil tussen Grunt en Gulp is dat Grunt tijdelijke files gebruikt (en dus disk I/O), wat natuurlijk een stuk trager is dan het in-memory verwerken van Gulp. Echter is dit wel enkel zichtbaar wanneer we over zeer grote projecten spreken. Een voordeel van Grunt is dan weer dat de community veel groter is, aangezien Grunt toch al een langere tijd ingeburgerd is. Zo zie je dat elk zijn voor -en nadelen heeft, dus aan jou de keuze… In Visual Studio 2015 RC is er gekozen om als default Gulp te gebruiken in de ASP.NET 5 templates.

Om deze task runners te kunnen ondersteunen was Microsoft verplicht om twee nieuwe package managers (naast NuGet) te ondersteunen.

NPM

De eerste package manager is NPM, deze zorgt ervoor dat GruntJS en Gulp plugins geïnstalleerd kunnen worden.

Bower

Als tweede is er Bower, een andere package manager waar zeer veel client-side framework mee gedistribueerd worden. Enkele bekende voorbeelden hiervan zijn: AngularJS, Twitter Bootstrap, jQuery...

Met andere woorden is het dus mogelijk om vanaf nu GruntJS te gebruiken met plugins van NPM en client packages te installeren via Bower in Visual Studio.

MVC en Web API controllers

In de afgelopen versies van ASP.NET MVC was er een verschil tussen MVC controller en Web API controllers. Een MVC controller had System.Web.MVC.Controller als base klasse en een Web API controller gebruikte onderliggend System.Web.Http.ApiController. Hierdoor moesten we op twee plaatsen controllers definiëren.

Vanaf MVC 6 hebben ze die twee soorten controller laten samenvloeien tot één controller die dezelfde base klasse gebruikt, nl. Microsoft.AspNet.Mvc.Controller.

MVC 6 controller methoden zullen altijd een IActionResult returnen, met het enige verschil dat het in het geval van een MVC methode een view zal zijn die teruggestuurd wordt en in het geval van een Web API methode zal het data zijn.

AngularJS

AngularJS is ondertussen in geen enkel web project meer weg te denken. Het is een van de meest populaire client-side frameworks voor het bouwen van Single Page Applications. Visual Studio 2015 voorziet verschillende templates voor het aanmaken van AngularJS modules, controllers, directives en factories.



Dependency Injection Framework

Bestaande ASP.NET frameworks zoals MVC en Web API ondersteunen al Dependency Injection. Vanaf ASP.NET 5 werd er Dependency Injection ingebouwd. Dit wil zeggen dat we nu op een consistende manier DI kunnen toepassen om services te gebruiken verspreid over heel de web stack. Services kunnen toegevoegd worden als singleton, scoped over de request of transient.

MVC6 laat ook toe om services te injecteren in Razor views. Dit kan je doen door gebruik te maken van het @inject keyword.

xUnit.net

Tot nu toe was het Visual Studio Unit Testing Framework het ingebouwde framework om unit testen mee te schrijven, maar dit is (tot nu toe, Visual Studio 2015 CTP 6) verleden tijd. Het lijkt alsof xUnit.net het nieuwe framework is dat Microsoft naar voor schuift als hét framework om unit en integration testen mee te gaan schrijven. De testen op ASP.NET 5 zelf zijn ook geschreven met xUnit.net, wat wil zeggen dat Microsoft zelf sterk geloofd in xUnit.net als testing framework.

 

Conclusie

ASP.NET 5 is de grootste verandering op architectureel vlak in de geschiedenis van ASP.NET. Met deze release is ervoor gezorgd dat ASP.NET modulairder opgebouwd is, klaar is voor cross-platform development en geoptimaliseerd is voor de cloud. Het is een grote stap in de goede richting naar modern web development!

 

 

 


 

Over de auteur:

Jens Helderweirdt

Jens Helderweirdt is .NET Software Engineer bij Ordina Belgium. Hij volgt alle technologische ontwikkelingen binnen de Microsoft stack op de voet. Hij heeft een eigen kijk op de impact van nieuwe releases en wat ze al dan niet kunnen betekenen in de wereld van softwareontwikkeling. Volg Jens op Twitter @JHelderweirdt