.NET (udtales "dot net") er etsoftware-framework som primært kører påMicrosoft Windows, men også findes i version til Linux og Mac, og som giver mulighed for at afvikle programmer skrevet i et .NET-programmeringssprog såsomC# ellerVisual Basic .NET..NET Frameworket kan betragtes som et abstraktionslag mellem applikationen og styresystemet.
Der findes en række .NET-programmeringssprog. En række af de oprindelige programmeringsprog fra Microsoft er kommet i en .NET-version, men der er foretaget grundlæggende ændringer i sprogene for at de kan bruges i .NET. Det er Microsofts mål, at man skal kunne udvikle i alle programmeringssprog til .NET. Dette foregår konkret ved, at der findes encompiler for hvert sprog. Alle kompilere genererer den samme form for bytecode, som så kaneksekveres/oversættes af en interpreter (fortolker) (CLR: Common Language Runtime). Frameworket indeholderAPIer til næsten alt, hvad en applikation kan have brug for, da det er tanken at alle programmer på Windows i fremtiden (bortset fra drivere og andre low-level teknologier) skal kunne gøre brug af .NET frameworket.
.NET FrameworksCLR fritager udvikleren for at håndtere hukommelsen (allokering og frigivelse af hukommelse); i stedet varetager det selv hukommelseshåndteringen selvom der ikke er nogen garanti for hvornårgarbage collectoren (proces til automatisk frigivelse af hukommelse) vil udføre sin arbejdsopgave, medmindre et eksplicit kald udstedes. Så længe der findes referencer til etobjekt i det instantierede .NET program, vil hukommelseshåndteringen betragte det som værende i brug af CLR. Når der ikke længere findes nogen referencer til et objekt, og det dermed ikke kan tilgås eller anvendes længere, bliver det markeret til indsamling. Objektet optager dog stadig den del af hukommelsen, som er blevet allokeret til det. Selve frigivelsen af hukommelsen sker ikke før hukommelseshåndteringen har været forbi..NET's hukommelseshåndtering kører periodisk i en separat tråd fra den som programmet afvikles i, hvor det håndterer alle de ubrugte objekter og genindsamler hukommelsen allokeret til dem.
Før Microsoft skrinlagde det oprindeligeVisual Basic og flyttede resourcerne til .NET-udgavenVB.NET, varVisual Basic et af de mest anvendte programmeringssprog. I forbindelse med frigivelsen af .NET-versionen, diskuterede flere medier, hvor alle de nuværende VB-programmører ville søge hen. De kunne opkvalificere sig til VB.NET, hvilket ville være som at starte forfra og skulle lære et nyt programmeringssprog. Det blev diskuteret om de ville skifte tilJava eller tage springet til det mere moderne C#. Microsoft har dog gjort meget for at lette overgangen forVisual Basic-programmørenes, ved efterfølgende at tilføje mange af de oprindelige funktionaliteter i sproget tilVisual Studio .NET 2005-udgaven, hvilket har fastholdt en stor del af udviklerne.
Microsoft's C# og CLI (Common Language Infrastructure) har mange ligheder med Sun'sJava og JVM (Java Virtual Machine). De er konkurrenter og bruger begge envirtuel maskine, der gør det muligt at lave programmer uden at skulle tage højde for med hvilken hardware de skal udføres. Begge bruger deres egenmellemkode, Microsoft kalder deres for Common Intermediate Language (CIL) mens Sun kalder deres Java bytecode. I .NET bliver mellemkoden altidkompileret enten lige før den skal udføres (JIT – just-in-time) eller lang tid før ved brug af ngen.exe værktøjet. Med Java er det enten fortolket, JIT eller prekompileret. De har begge nogle omfattende klassebiblioteker og der er stor lighed mellem strukturen af klasserne i .NET ogJ2EE.
Da .NET kun findes i en fuldstændig version til Windows, gik folk fraOpen Source-bevægelsen i samarbejde medNovell i gang med at implementere en Open Source udgave afCLR, kaldet Mono. Målet er at kunne køre programmer compileret til CLR på en række platforme, såsomWindows,Linux,Mac OS X,iOS ogSolaris.Udover implementeringen af CLR-kernen bliver der også udviklet en lang række værktøjer i forbindelse med Monoprojektet, og hvor Microsoft kun fokuserer på sprogeneC#,Visual Basic og C++, er der i Open Source-verdenen udviklet CLR-kompilere til en lang række andre sprog, såsom Ada, Cobol, Python, Java, Perl m.fl.