SPIKE: Analyse af modernisering af LSS til .NET 6
Overordnet beskrivelse:
Det skal undersøges, hvad der skal til for at få LSS til at køre på .Net 6. De åbenlyse konsekvenser er følgende:
Alle referencer til Dfdg.Foundation skal fjernes og eventuelt udskiftes med Star.Foundation
Dfdg.ServiceGateway skal køre .Net Standard 2.0
Webprojektet skal konsekvensrettes til at køre .Net 6 med dertilhørende rettelser til Startup mv.
Denne spike indeholder en liste over de findings, som der er sket under analysen, samt bud på hvor omfattende de givede løsningsforslag er.
Målgruppe: FA og DFDG arkitekt
Reference: https://starwiki.atlassian.net/browse/DS-12364
Forfatter: Mads Kongsbak & Thomas Søby Ingwersen
Teknisk analyse:
Den tekniske analyse er foretaget ved at eksportere projektet over til .NET 6, og så gå igennem alle fejl man får, og hvad det kræver at løse dem. Efter egen erfaring med at sidde og rette disse fejl, er det muligt at fejlrettelser foretager uforventede fejl i andre steder i projektet, hvis det kan forudsiges er der også taget højde for det i løsningsforslagene. Der er også fejl, som ikke indgår i denne tekniske analyse, fordi de allerede er blevet løst i løbet af udførelsen af analysen. Branchen hvorpå den tekniske analyse er udført kan ses her: 2023-1/feature/lss-net6 og har et tilsvarende PR: PR 3402
Fejl | Beskrivelse | Løsningsforslag | Overslag |
---|---|---|---|
@helper functions | @helper functions er brugt ofte i LSS, men er ikke understøttede i ASP.NET Core. | Disse @helper functions kan omskrives til @functions, hvorpå functionerne virker som før. En lignende omskrivelse kan ses i funktionen | 1 SP |
AsyncManager | Filen | Siden | 1-2 SP |
System.Web.HttpContext og System.Web.HttpApplication |
| I ASP.NET Core er der blevet tilføjet en | 2-3 SP |
IClientValidatable + ModelClientValidationRule |
| Under undersøgelsen var det ikke åbenlyst, hvad disse valideringsregler bliver brugt til - og om de faktisk validerede noget. Der skal nok en dybere undersøgelse til, at finde ud af præcis hvad de gør, og om de faktisk skal bruges. Hvis det viser sig, at disse valideringsregler ikke bruges, er rettelsen meget enkel. | 3 SP |
Manglende Attributter | Attributter såsom | Disse attributter bliver brugt rimelig ofte, men default behavior i ASP.NET Core er at tillade html og ikke at validere input. Efter min overbevisning kan alle attributterne fjernes, og det vil fungere på samme måde, som det gjorde før. Der skal dog analyse til, så de steder, hvor vi ikke vil tillade HTML/vi vil validere input, at det faktisk bliver valideret. | 1-2 SP |
Diverse Interfaces er ændret | Interfaces såsom | Siden der er blevet ændret i en del metodesignaturer på tværs af interfaces, som går igen i ASP.NET Core, så skal disse metoder også genimplementeres med den signatur. I største dele er der ikke tale om store ændringer de fleste steder, dog kan det komme med uforudsigelige konsekvensrettelser andre steder i projektet. | 1-2 SP |
CaseWorkerHelper referencer | Der er mange referencer til forskellige CaseWorkerHelper typer, som er blevet defineret i DFDG.Foundation, som er blevet fjernet grundet flytningen til .NET 6 | Under analysen, blev der også fundet et par Enums, som var en del af DFDG.Foundation, som skulle genimplementeres. Dette kan ses i fx.
| 1 SP |
Diverse | Der findes en række fejl, som ikke optræder ofte bl.a. ift generering af zip-file og ift HtmlHelpers | Omfanget af denne type fejl er ikke særligt stort og løsningen forventes ikke at volde de store problemer | 3 SP |
Der skal også bemærkes, at udover disse fejl, så er DFDG.ServiceGateway også blevet lavet om til et .NET Standard 2.0 projekt. Grunden til dette er, at det er lavest fællesnævner mellem .NET Framework og .NET Core, og DFDG.ServiceGateway bliver brugt både i DFDG og i LSS. Migrationen til .NET Standard 2.0 fungerede fint, der skulle bare tilføjes en pakke i ServiceGatewayImpl i DFDG, før at det kunne builde. Denne ændring fremgår også af branchen og PR som er linket ovenfor
Anbefaling:
Anbefalingen er, at moderniseringen af LSS til .NET 6 skal gennemføres. At konvertere LSS fra .Net Framework til .Net 6, og derved fra ASP.NET.MVC til ASP.NET Core, kan LSS køres i Statens IT. Forhåbentlig giver denne tekniske analyse et godt grundlag for, at estimere hvor mange Story Points der skal til, for at færdiggøre overførslen til .NET 6.
En grovestimering indikerer, at der er for 13-17 SP i at omskrive LSS til .net 6. Dertil skal lægges tid til test.