dotNed meetup: ASP.NET Core

Afgelopen week waren we met een aantal Infi-ers naar de dotNed bijeenkomst over de nieuwste versie van het .NET Framework, namelijk ASP.NET Core. 

In het splinternieuwe kantoor van TamTam in Amsterdam vertelde Roland Guijt in zijn praatje genaamd 'Like A Fish In The Water © With ASP.NET Core’ over zijn ervaringen met de Release Candidate versies van het nieuwe framework en over de ideeën achter de ingrijpende wijzigingen die Microsoft heeft bedacht.

ASP.NET 5?

Microsoft heeft over de loop der jaren al een aantal versies van het .NET Framework uitgebracht, beginnend bij versie 1.0 in februari 2002 tot aan versie 4.6.1 in november 2015. De voor de hand liggende opvolger van 4.6.1 zou dan ook versie 5.0 zijn. Dit keer heeft Microsoft er echter voor gekozen een nieuwe weg in te slaan en de traditionele versienummering van het .NET Framework los te laten. Ook is er weinig tot geen backwards compatibility met de oudere versie van het framework waardoor er nu een relatief hoge drempel is om bestaande projecten te migreren naar deze nieuwe versie. Een ingrijpende keuze van Microsoft die vooral genomen lijkt te zijn met het oog op de toekomst.

Cross-platform

Een belangrijke reden om met een schone lei te beginnen is dat Microsoft met ASP.NET Core heel erg in wil zetten op cross-platform support. Van oudsher was .NET Framework altijd gebonden aan het Windows platform, maar voor ASP.NET Core wordt er ook hard gewerkt aan support voor Linux en Mac OSX. Met deze strategie hoopt Microsoft een nog groter deel van de markt te kunnen bereiken waarbij de hoop is dat dit een positieve impact heeft op het gebruik van de Azure diensten die ze aanbieden.
De eerste werkende versies op de andere platformen zijn al uitgebracht, maar staan nog grotendeels in de kinderschoenen qua support en stabiliteit. Het framework is nu ook zodanig opgezet dat het voor web applicaties niet meer direct verbonden is aan IIS, maar ook veel makkelijker gekoppeld kan worden aan web servers zoals NGINX of Apache.

Model-View-Controller

Een belangrijk onderdeel van het .NET Framework is MVC. MVC is een Model-View-Controller framework (go figure) dat inmiddels in vele web applicaties gebruikt wordt. Een probleem met dit framework was echter dat het over de loop der jaren enorm gegroeid is waarbij er toch nog een hoge mate van backwards compatibiliteit gewaarborgd moest worden. Dit maakte de vooruitgang van dit framework qua features en performance steeds lastiger. Hierdoor heeft Microsoft er een aantal jaar geleden voor gekozen om ook een enigszins vergelijkbaar framework ernaast te plaatsen, namelijk Web API. Web API was meer gericht op (REST) API’s en was ook opgezet om minder gekoppeld te zijn aan IIS en de oude MVC libraries.

Een nadeel van het hebben van deze twee deels overlappende frameworks was dat veel van de functionaliteiten in beide frameworks geimplementeerd waren, maar in verschillende namespaces geplaatst waren. Dit kwam de overzichtelijkheid van de code niet ten goede en heeft daardoor vaak tot verwarring geleid. Met ASP.NET Core heeft microsoft deze twee frameworks weer zoveel mogelijk samengevoegd waardoor het (hopelijk) weer een overzichtelijk geheel wordt.

Release Candidates

De aankondiging dat Microsoft bezig was met een compleet nieuwe versie van het .NET Framework is al een tijd geleden naar buiten gebracht. Omdat het een compleet nieuwe opzet van het framework is, heeft Microsoft dus ook veel meer vrijheid dan voorheen met de keuzes die gemaakt konden (en moesten) worden. Het gevolg hiervan is dat de daadwerkelijke structuur en implementatiekeuzes van het framework steeds aangepast worden, waardoor ontwikkelaars die met vroege versies van het framework werken vaak hun code weer voor een groot deel moeten aanpassen als er een nieuwe (vroege) versie wordt uitgebracht. Roland Guijt vertelde bijvoorbeeld al dat ondanks dat Release Candidate 1 al in november 2015 is uitgebracht, er nu nog steeds breaking changes doorgevoerd worden in Release Candidate 2, en dat de verwachting is dat dit voor versie 1.0.0 ook nog zal gebeuren. Een goed voorbeeld hiervan is dat er oorspronkelijk was bedacht om het traditionele .csproj (Project definitie) bestand te vervangen door een nieuw bestand in JSON formaat (project.json). Echter, deze keuze is recentelijk weer teruggedraaid met name vanwege backwards compatibility redenen met MSBuild.

Productie

Voorlopig lijkt het er dus op dat ASP.NET Core nog niet productieklaar zal zijn en lijkt het ook nog te vroeg om te zeggen of deze versie van het framework daadwerkelijk een succes zal worden, of dat er nog een aantal versies en jaren overheen moeten gaan.

Voor ons was het in ieder geval erg leuk en interessant om te zien wat de nieuwe ontwikkelingen op dit gebied zijn. Het zal ook zeker iets zijn wat we nauwlettend in de gaten willen houden met name voor nieuwe projecten die we bij Infi gaan opzetten in de toekomst.

Jiri is ontwikkelaar bij Infi. 

Wil je iets waarmaken met Infi?

Wil jij een eigen webapplicatie of mobiele app waarmee jij het bij anderen maakt?

Waargemaakt door de nerds van Infi.
Nerds met liefde voor softwareontwikkeling en die kunnen communiceren. En heel belangrijk: wat we doen, doen we met veel lol!

Wij willen het fixen. Laat jij van je horen?

Voor wie heb je een vraag?