Migratie van .NET Framework naar .NET 10: hoeveel werk het is en hoe u begint
Uw .NET Framework 4.x-app werkt, maar niemand durft eraan? Is .NET 10 dringend, wat gaat makkelijk over, wat niet, en hoe begint u zonder stilstand?
Vlado Pandžić · Oprichter · Senior .NET-architect
Gepubliceerd · 4 min lezen
De applicatie op .NET Framework 4.x draait al tien jaar. Het bedrijf draait erop, klanten gebruiken hem en niemand wil eraan komen. Dan komen er een paar dingen tegelijk samen: een nieuwe bibliotheek die u nodig hebt, ondersteunt het Framework niet meer, een goede kandidaat zegt nee als hij hoort waaraan hij zou werken, en de hosting kan niet naar containers of naar Linux.
Op dat moment is de overstap naar modern .NET geen vraag meer van of, maar van hoe en in welke volgorde.
Is het dringend?
Eerlijk gezegd: het is geen brand. .NET Framework 4.8.1 is de laatste versie, en Microsoft ondersteunt het zolang het draait op een ondersteunde versie van Windows, zonder aangekondigde einddatum. Beveiligingsupdates blijven komen.
Maar het is een doodlopende weg. Nieuwe functies, performance en bibliotheken komen alleen nog naar modern .NET, en .NET 10 is een versie met langetermijnondersteuning tot november 2028. Elk jaar op het Framework betekent meer code die later over moet, en minder mensen die hem willen onderhouden. Het goedkoopste moment om over te stappen is voordat iets u ertoe dwingt.
Wat makkelijk overgaat, en wat niet
| Deel van de applicatie | Hoe moeilijk | Hoe |
|---|---|---|
| Bibliotheken met bedrijfslogica | Makkelijk | De meeste code werkt ongewijzigd, met het nieuwe projectformaat |
| Entity Framework 6 | Makkelijk | Draait ook op modern .NET, de overstap naar EF Core kan later |
| Windows Forms en WPF | Gemiddeld | Ze gaan over, maar blijven applicaties voor alleen Windows |
| ASP.NET MVC en Web API | Gemiddeld | Controllers lijken op elkaar, opstarten, filters en inloggen veranderen |
| WCF-clients | Gemiddeld | Er zijn clientpakketten voor modern .NET |
| WCF-services | Moeilijker | CoreWCF, of overstappen op REST of gRPC |
| Web Forms | Het moeilijkst | Bestaat niet in modern .NET, dus schermen worden opnieuw gebouwd, bijvoorbeeld in Blazor |
| AppDomains, Remoting, Code Access Security | Het moeilijkst | Bestaan niet, dus dat deel moet anders worden ontworpen |
De meeste bedrijfsapplicaties hebben iets uit elke regel, dus een echte schatting is altijd de som van de delen. De tabel laat ook zien waar het meeste werk zit: in de weblaag en de oude technologieën, niet in de bedrijfslogica.
Hoe u begint
- InventarisatieProjecten, pakketten, afhankelijkheden
- BibliothekenVan onder naar boven, voor beide werelden
- WeblaagEen nieuwe app voor de oude
- UitzettenHet oude deel verdwijnt
-
Inventarisatie. Alle projecten, NuGet-pakketten en afhankelijkheden, met de onderdelen uit de onderste regels van de tabel gemarkeerd. De moderniseringstool van Microsoft in GitHub Copilot helpt vinden wat niet compileert, maar de beslissingen over de volgorde neemt nog steeds een mens.
-
Bibliotheken, van onder naar boven. Eerst de projecten waarvan niets afhangt, dan de projecten daarboven. Elke bibliotheek gaat eerst naar het nieuwe projectformaat en wordt dan voor beide werelden tegelijk gebouwd. Zo blijft de oude applicatie werken, terwijl nieuwe code al dezelfde bibliotheken gebruikt:
<PropertyGroup> <TargetFrameworks>net48;net10.0</TargetFrameworks> <!-- dezelfde bibliotheek voor de oude en de nieuwe app --> </PropertyGroup>Wat in modern .NET ontbreekt en alleen op Windows wordt gebruikt, wordt vaak gedekt door het Windows Compatibility Pack van Microsoft, met zo’n twintigduizend API’s.
-
De weblaag, stukje bij beetje. Een nieuwe ASP.NET Core-applicatie staat voor de oude en neemt één route tegelijk over, en stuurt al het andere door naar de oude app. Gebruikers merken de overstap niet, inloggen en sessie worden gedeeld, en er is geen grote dag waarop alles tegelijk verandert. Voor Web Forms is het dezelfde aanpak die we beschrijven op de pagina over de overstap van Web Forms naar Blazor.
-
Uitzetten. Als de laatste route over is, gaat de oude applicatie uit, en kunnen de bibliotheken het oude doel
net48laten vallen.
Hoeveel werk het is
Het hangt bijna volledig af van de weblaag en de onderste regels van de tabel. Bibliotheken met bedrijfslogica zijn vaak een kwestie van dagen of weken. Een kleinere ASP.NET MVC-applicatie is meestal een kwestie van weken, en een grote Web Forms-applicatie of een systeem op WCF-services een kwestie van maanden, maar ook dan stukje bij beetje, terwijl de applicatie de hele tijd draait.
De duurste aanpak is alles opnieuw schrijven vanaf nul en het oude systeem ernaast onderhouden. Waarom opnieuw beginnen vanaf nul zelden lukt, staat in het artikel over technische schuld.
Hoe wij werken
ProCoding is een .NET-studio uit Split, Kroatië, en het moderniseren van oude .NET-systemen is een van de dingen die we het vaakst doen. We beginnen met een inschatting: een inventarisatie van projecten en afhankelijkheden, wat makkelijk overgaat, wat herwerkt moet worden en in welke volgorde, met een globale inspanning per onderdeel. De eerste stap is een gratis gesprek van 30 minuten.
Bronnen
- Ondersteuningsbeleid voor .NET Framework, Microsoft
- Overzicht van het porten van .NET Framework naar .NET, Microsoft Learn
- .NET Framework-technologieën die niet beschikbaar zijn in .NET, Microsoft Learn
- Het Windows Compatibility Pack gebruiken, Microsoft Learn
- GitHub Copilot-app-modernisering voor .NET, Microsoft Learn
- CoreWCF, .NET Foundation
Dit artikel is alleen algemene informatie en geen juridisch, fiscaal, financieel of ander professioneel advies. Scenario’s, voorbeelden en berekeningen zijn ter illustratie. Gebruiksvoorwaarden en disclaimer.