.NET
Microsoft har i tidens løb haft mange forskellige frameworks med forskellige formål: ASP.NET MVC, Web Api, Forms, Web Forms o.s.v. Nu har de samlet det hele i .NET (Core) og gjort det til Open Source. Jeg syntes det er ret genialt. Det betyde f.eks. at man kan køre alle sine .NET projekter på en Linux server.
Hvad er .NET
Microsoft .NET er en gratis, cross-platform, open-source platform, som kan bruges til at bygge mange typer af applikationer. Tilbage i 2002 frigav Microsoft .NET Framework og i 2014 samlede Microsoft en række forskellige frameworks i det de kaldte .NET Core. Samtidigt blev det også til et open-source projekt, som gjorde det muligt at flytte .NET til andre platforme end Microsoft Windows, f.eks. Linux. Siden har de så droppet "Core" fra navnet (år 2020), så produktet i dag bare hedder .NET og den seneste version (december 2023) er .NET 8.
C#
Under .NET kan man programmere i 3 forskellige programmeringssprog: C#, F# og Visual Basic. Jeg har programmeret i C# siden det først kom frem omkring år 2002, og syntes selv jeg har en rimelig god erfaring med det. Tidligere programmerde jeg i Borland Delphi / Turbo Pascal. Det var danskeren Anders Hejlsberg som var manden bag Turbo Pascal og senere Borland Delphi. Da Anders Hejlsberg flyttede til Microsoft var han hoved arkitekten bag programmeringssproget C# og .NET Framework. Man kunne tydeligt fornemme at bag C# var der de samme tankegange som i Delphi. Derfor faldt det mig meget narturligt at gå i gang med C# programmering.
Det jeg godt kan lide ved C# programmering er at det er typestærkt, så udviklingsmiljø'et vil med det samme fortælle dig, hvis det du skriver er "forkert". Og så kan jeg godt lide at C# lægger meget op til at man skriver objektorienteret kode. Det betyder at man nærmest helt naturligt kommer til at skrive kode som kan gebruges i det samme eller andre projekter. Jeg har et motto der siger: Hvis du skriver det samme kode 2 gange, så har du nok lavet en fejl. Det holder måske ikke altid, men det er en meget god tanke at have i baghovedet.
.NET på Linux
Hvis du vil køre med AspNet projekter på en Linux Server, skal man først og fremmest installere AspNet på serveren. Man kan vælge at installere SDK'en (System Developers Kit), hvis man også vil udvikle softwaren på Linux Serveren. Alternativt kan man installere AspNet Core Runtime, hvis man kun vil køre programmerne. Hent den ønskede version af AspNet på Microsoft's Download .NET side.
På en Linux Server kan man f.eks. køre med en Apache Webserver, men den kan ikke umiddelbart kører AspNet som f.eks. IIS under Windows kan det. Men så har AspNet til Linux en indbygget webserver der hedder Kestrel, og så kan man lave noget der hedder en Reverse Proxy. Den gør at Apache webserveren sender trafikken videre til Kestrel webserveren.
Læs evt. lidt om AspNet på Linux med Apache her:
https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-8.0
Og lidt om Kestrel web serveren her:
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-8.0
Clean Architecture
Traditionel software arkitektur som jeg har lært det for mange år siden, er noget med lag deling. Øverst har man noget brugerinterface, derefter noget forretningslogik, og så noget data access lag. Nederst har man databasen. Hvert af disse lag kan så kalde ting i de lavere lag. Den arkitektur har nogle ulemper, man kan komme til at lade nogle ting "sive" ind i de "forkerte" lag, eller man kan komme til at springe et lag over. Og fordi databasen er det nederste lag, så kan det være ret omstændigt/risikabelt at lave ændringer i databasen (og det kommer man altid til at gøre).
For ikke så længe siden faldt jeg over denne artikel, fra en gut der kalder sig Uncle Bob. Han beskriver en lidt anderledes mådes at se på software arkitekturen:
Den er helt tilbage fra 2012, men jeg er blevet rigtig glad for den måde at anskue software arkitektur på, og så passer det bare rigtig godt til at kode i objektorienteret C#. Projektet jeg lige har gennemført med Online Booking har lavet med Clean Architecture, og det er helt sikkert ikke sidste gang jeg går den vej.
En anden kilde til information om Clean Architecture har jeg fra et Udemy kursus:
Clean Architectures for Beginners: A Practical Guide.
Og et 3. sted til info om Clean Architecture er en lidt nyere youtube video fra Microsoft (November 2023).