Prelazak s .NET Frameworka na .NET 10: koliko je to posla i kako krenuti
Aplikacija na .NET Frameworku 4.x radi, ali je nitko ne želi dirati? Je li .NET 10 hitan, što prelazi lako, što ne i kako krenuti bez zaustavljanja rada.
Vlado Pandžić · Osnivač · Senior .NET arhitekt
Objavljeno · 4 min čitanja
Aplikacija na .NET Frameworku 4.x radi već deset godina. Posao se na njoj vrti, kupci je koriste i nitko je ne želi dirati. A onda se skupi nekoliko stvari odjednom: nova biblioteka koju trebate više ne podržava Framework, dobar kandidat za posao odbije ponudu kad čuje na čemu bi radio, a hosting se ne može prebaciti u kontejnere ni na Linux.
Prelazak na moderni .NET tada više nije pitanje hoće li, nego kako i kojim redom.
Je li hitno?
Iskreno: nije kao požar. .NET Framework 4.8.1 je zadnja verzija i Microsoft ga podržava sve dok radi na podržanoj verziji Windowsa, a datum kraja nije najavljen. Sigurnosne zakrpe stižu.
Ali to je slijepa ulica. Nove mogućnosti, performanse i biblioteke stižu samo u moderni .NET, a .NET 10 je izdanje s dugoročnom podrškom do studenog 2028. Svaka godina na Frameworku znači više koda za prebaciti kasnije i manje ljudi koji ga žele održavati. Najjeftiniji trenutak za prelazak je onaj prije nego vas nešto natjera.
Što prelazi lako, a što ne
| Dio aplikacije | Koliko je teško | Kako |
|---|---|---|
| Biblioteke s poslovnom logikom | Lako | Većina koda radi bez promjena, uz novi format projekta |
| Entity Framework 6 | Lako | Radi i na modernom .NET-u, a prelazak na EF Core može kasnije |
| Windows Forms i WPF | Srednje | Prelaze, ali ostaju aplikacije samo za Windows |
| ASP.NET MVC i Web API | Srednje | Kontroleri su slični, a pokretanje, filteri i prijava se mijenjaju |
| WCF klijenti | Srednje | Klijentski paketi postoje za moderni .NET |
| WCF servisi | Teže | CoreWCF, ili prelazak na REST ili gRPC |
| Web Forms | Najteže | Ne postoji u modernom .NET-u, pa se ekrani grade iznova, npr. u Blazoru |
| AppDomains, Remoting, Code Access Security | Najteže | Ne postoje, pa taj dio treba osmisliti drukčije |
Većina poslovnih aplikacija ima nešto iz svakog retka, pa je prava procjena uvijek zbroj dijelova. Iz tablice se vidi i gdje je glavnina posla: u web sloju i u starim tehnologijama, a ne u poslovnoj logici.
Kako krenuti
- PopisProjekti, paketi, ovisnosti
- BibliotekeOdozdo prema gore, za oba svijeta
- Web slojNova aplikacija ispred stare
- GašenjeStari dio se isključuje
-
Popis. Svi projekti, NuGet paketi i ovisnosti, s označenim dijelovima iz donjih redaka tablice. Microsoftov alat za modernizaciju u GitHub Copilotu pomaže pronaći što se neće prevesti, ali odluke o redoslijedu i dalje donosi čovjek.
-
Biblioteke, odozdo prema gore. Prvo projekti o kojima nitko ne ovisi, pa oni iznad njih. Svaka biblioteka prvo prelazi na novi format projekta, a zatim se gradi za oba svijeta odjednom. Tako stara aplikacija i dalje radi, a novi kod već koristi iste biblioteke:
<PropertyGroup> <TargetFrameworks>net48;net10.0</TargetFrameworks> <!-- ista biblioteka za staru i novu aplikaciju --> </PropertyGroup>Ono što nedostaje u modernom .NET-u, a koristi se samo na Windowsu, često pokrije Microsoftov Windows Compatibility Pack s dvadesetak tisuća API-ja.
-
Web sloj, dio po dio. Nova ASP.NET Core aplikacija stane ispred stare i preuzima jednu po jednu rutu, a sve ostalo prosljeđuje staroj. Korisnici ne primjećuju prelazak, prijava i sesija su zajedničke, i nema velikog dana kad se sve mijenja odjednom. Za Web Forms to je isti postupak koji opisujemo na stranici o prelasku s Web Formsa na Blazor.
-
Gašenje. Kad zadnja ruta prijeđe, stara aplikacija se isključuje, a biblioteke se mogu riješiti starog cilja
net48.
Koliko je to posla
Ovisi gotovo isključivo o web sloju i o donjim redcima tablice. Biblioteke s poslovnom logikom često su pitanje dana ili tjedana. Manja ASP.NET MVC aplikacija obično je pitanje tjedana, a velika Web Forms aplikacija ili sustav na WCF servisima pitanje mjeseci, ali i tada dio po dio, uz aplikaciju koja cijelo vrijeme radi.
Najskuplji pristup je prepisati sve od nule i paralelno održavati staro. O tome zašto prepisivanje od nule rijetko uspijeva pisali smo u članku o tehničkom dugu.
Kako mi radimo
ProCoding je .NET studio iz Splita, a modernizacija starih .NET sustava jedno je od onoga što radimo najčešće. Počinjemo procjenom: popis projekata i ovisnosti, što prelazi lako, što treba preraditi i kojim redom, s okvirnim trudom za svaki dio. Prvi korak je besplatni razgovor od 30 minuta.
Izvori
- .NET Framework support policy, Microsoft
- Overview of porting from .NET Framework to .NET, Microsoft Learn
- .NET Framework technologies unavailable on .NET, Microsoft Learn
- Use the Windows Compatibility Pack to port code to .NET, Microsoft Learn
- GitHub Copilot app modernization for .NET, Microsoft Learn
- CoreWCF, .NET Foundation
Ovaj članak služi općem informiranju i nije pravni, porezni, financijski ni drugi stručni savjet. Scenariji, primjeri i izračuni su ilustrativni. Uvjeti korištenja i odricanje od odgovornosti.