Recentelijk wordt er binnen het .NET framework regelmatig gesproken over een .NET renaissance. Wat is nu eigenlijk een renaissance? In de letterlijk zin staat het voor een wedergeboorte, dus de terugkeer van iets bestaands. Maar wanneer is iets een renaissance en wanneer is iets het gewoon oude wijn in nieuwe zakken?
Ik heb persoonlijk altijd een sterke hang naar het verleden, vaak denk ik dat vroeger alles beter was. Mijn vrouw noemt mij een oude zak. Ik ben tot de conclusie gekomen dat ik hier zeker niet de enige in ben, dit is echt iets mens eigen. Kijk bijvoorbeeld naar de nieuwe succesformule van RTL “Oh wat een jaar”, de Netflix hit “Stranger Things” of denk bijvoorbeeld aan het grote succes van de nintendo’s NES en SNES mini.
Bij al deze gevallen wordt het origineel in meer of mindere mate aanpast en met een nieuwe saus overgoten om hierna opnieuw geboren te worden. Dus in wezen een renaissance.
Maar waarom een .NET Renaissance en hebben wij dit nodig?
Het .NET Framework is in de loop der jaren enorm gegroeid tot een zeer feature rich platform. Denk maar eens terug aan alle toevoegingen na de introductie 2001 als o.a. generics, async await, linq of WCF. Allemaal grote substantiële toevoegingen aan het .NET Framework.
Het framework bevat inmiddels zoveel zaken dat het bij veel ontwikkelaars niet bekend staat om de snelheid. Daarnaast is o.a. door de opkomst van de Microservices de eis van Cross Platform framework veel belangrijker geworden.
Ondanks dat het lastig exact te meten is, merken wij dat de interesse sinds 2014 voor .NET en dan specifiek C# als ontwikkeltaal langzaam aan het afnemen is. De statistieken op stackoverflow zijn hier een aardige graadmeter.
Een gelijksoortige situatie heeft Java zo rond 2011 mee gemaakt is toen door Bob Lee benoemd als benodigde Java Renaissance. Destijds zijn er veel java proffesionals overgestapt naar o.a. Ruby en Javascript. Als we nu kijken naar het .NET framework kunnen we concluderen dat “nieuwe” spelers Node.JS en GO-lang de new kids one the block (over revivals gesproken) zijn. Jonge hippe start-up geven vaak de voorkeur aan een dergelijk platform. Dit zijn cross platform oplossingen met een kleine footprint, wat ook goed past in de trend naar microservices.
We zien hier dat in absolute aantallen zijn is het .NET nog beduidend groter is dan deze twee spelers, maar wat we ook kunnen zien is de trend duidelijk verschilt.
Dus om de vraag te beantwoorden is er een .NET renaissance nodig, kunnen we met een volmondig “JA” beantwoorden.
.NET Core
Gelukkig heeft Microsoft zelf al een aantal jaar geleden wellicht deze trends vroegtijdig gespot en geen halve maatregelen getroffen.
De introductie van het .NET Core framework heeft Microsoft er voor gekozen om een het framework van de grond af opnieuw op te bouwen. Maar tevens wel alle lessons learned van de afgelopen 15 jaar hierin mee te nemen. Daardoor is het .NET Core een zeer feature rich framework geworden en daarnaast de grootste obstakels van het huidige .NET Framework wegneemt.
Volgens Microsoft is .NET Core nu een cross-platform, high-performance en open-source framework geworden om moderne , cloud georienteerde oplossingen mee te ontwikkelen. Maar met welke features wordt dit gerealiseerd?
- Ondanks dat .NET Core nog nog vrij recent is gelanceerd is het zeker na komst van .NET Core 2.0 al een volwassen platform.
- .NET Core wordt ondersteund door Microsoft voor Windows, macOS en Linux. Op Linux heeft Microsoft er voor gekozen om primair de Red Hat Enterprise Linux en Debian distributies te supporten.
- Direct vanaf de bouw van het .NET Core framework is performance een hot topic geweest, dit ook aangezien het een belangrijk struikelblok is in het .NET 4.6 framework. Het aantal requests per seconde dat het .NET Core framework bij de eerste release t.o.v. het 4.6 framework kon verwerken was 2800% verbeterd. Dit zijn weliswaar cijfers ten opzichte van het .NET 4.6 en niet ten opzichte van b.v. node.js of go, maar alsnog een enorme verbetering.
- Zoals te verwachten is .NET Core beschikbaar voor X64 processoren en op Windows wordt ook nog x86 ondersteund. Maar daarnaast is er ook ondersteuning voor ARM64 en ARM32. Het .NET Core is nu mede door de support voor ARM architectuur uitermate geschikt voor IoT oplossingen.
- De trend om monolithische applicaties op te knippen naar kleine Microservices is iets wat al lang gaande is. Het feit dat deze kleine services nu met behulp van .NET Core ook geheel afzonderlijk kunnen functioneren zonder externe afhankelijkheden is een groot voordeel. Tevens is de keuze hoe en waar deze services dan draaien ook geheel vrij, dit kan bij in Azure app services of op een Linux host.
- Naast de trend richting microservices is er de verwante trend om deze services in een container te kunnen hosten. Dit is met het huidige .NET 4.6 Framework wel mogelijk op een Windows omgeving met Windows Containers. Maar .NET Core is met zijn modulaire en lichtgewicht karakter hier de betere keuze. Een b.v. Docker container met .NET Core zal sneller opstarten van een Windows variant en wat ook hier een belangrijk bijkomend voordeel is, is de mogelijkheid om cross-platform te kunnen uitrollen.
- Het .NET Core framework is direct vanaf de introductie open source (MIT Licence) en valt onder de .NET Foundation.
Het is een platform met veel potentie en wat voldoet om de huidige complexe vraagstukken op te kunnen lossen. We kunnen zeker concluderen dat .NET Core geen oude wijn in nieuwe zakken is, het een complete nieuwe oplossing voor waarmee de toekomst er al met al een stuk rooskleuriger uit ziet.
Auteur: Patrick Bes, Bergler Competence Center 2017