.NET jämfört med .NET Framework för serverappar

Det finns två .NET-implementeringar som stöds för att skapa appar på serversidan.

Implementering Inkluderade versioner
.NET .NET Core 1.0 – 3.1, .NET 5 och senare versioner av .NET.
.NET Framework .NET Framework 1.0 – 4.8

Båda delar många av samma komponenter och du kan dela kod mellan de två. Det finns dock grundläggande skillnader mellan de två, och ditt val beror på vad du vill åstadkomma. Den här artikeln innehåller vägledning om när var och en ska användas.

Använd .NET för serverprogrammet när:

  • Du har plattformsoberoende behov.
  • Du riktar in dig på mikrotjänster.
  • Du använder Docker-containrar.
  • Du behöver högpresterande och skalbara system.
  • Du behöver .NET-versioner sida vid sida per program.

Använd .NET Framework för serverprogrammet när:

  • Appen använder för närvarande .NET Framework (rekommendationen är att utöka i stället för att migrera).
  • Appen använder bibliotek från tredje part eller NuGet-paket som inte är tillgängliga för .NET.
  • Din app använder .NET Framework-tekniker som inte är tillgängliga för .NET.
  • Din app använder en plattform som inte stöder .NET.

När du ska välja .NET

Följande avsnitt ger en mer detaljerad förklaring av de tidigare angivna orsakerna till att välja .NET via .NET Framework.

Plattformsoberoende behov

Om ditt webb- eller tjänstprogram behöver köras på flera plattformar, till exempel Windows, Linux och macOS, använder du .NET.

.NET stöder tidigare nämnda operativsystem som din utvecklingsarbetsstation. Visual Studio tillhandahåller en integrerad utvecklingsmiljö (IDE) för Windows och macOS. Du kan också använda Visual Studio Code, som körs på macOS, Linux och Windows. Visual Studio Code stöder .NET, inklusive IntelliSense och felsökning. De flesta tredjepartsredigerare, till exempel Sublime, Emacs och VI, arbetar med .NET. Dessa redigerare från tredje part får intelliSense-redigeraren med omnisharp. Du kan också undvika alla kodredigerare och direkt använda .NET CLI, som är tillgängligt för alla plattformar som stöds.

Arkitektur med mikrotjänster

En mikrotjänstarkitektur möjliggör en blandning av tekniker över en tjänstgräns. Den här teknikmixen möjliggör en gradvis omfamning av .NET för nya mikrotjänster som fungerar med andra mikrotjänster eller tjänster. Du kan till exempel blanda mikrotjänster eller tjänster som utvecklats med .NET Framework, Java, Ruby eller andra monolitiska tekniker.

Det finns många tillgängliga infrastrukturplattformar. Azure Service Fabric är utformat för stora och komplexa mikrotjänstsystem. Azure App Service är ett bra val för tillståndslösa mikrotjänster. Mikrotjänstalternativ baserade på Docker passar alla mikrotjänster, enligt beskrivningen i avsnittet Containrar . Alla dessa plattformar stöder .NET och gör dem idealiska för att hantera dina mikrotjänster.

Mer information om mikrotjänstarkitektur finns i .NET Microservices. Arkitektur för containerbaserade .NET-program.

Containers

Containrar används ofta med en arkitektur för mikrotjänster. Containrar kan också användas för att containerisera webbappar eller tjänster som följer valfritt arkitekturmönster. .NET Framework kan användas i Windows-containrar. Men den modulära och lätta karaktären hos .NET gör det till ett bättre val för containrar. När du skapar och distribuerar en container är storleken på dess avbildning mycket mindre med .NET än med .NET Framework. Eftersom det är plattformsoberoende kan du distribuera serverappar till Linux Docker-containrar.

Docker-containrar kan finnas i din egen Linux- eller Windows-infrastruktur eller i en molntjänst som Azure Kubernetes Service. Azure Kubernetes Service kan hantera, samordna och skala containerbaserade program i molnet.

Högpresterande och skalbara system

När systemet behöver bästa möjliga prestanda och skalbarhet är .NET och ASP.NET Core dina bästa alternativ. Serverkörningen med höga prestanda för Windows Server och Linux gör ASP.NET Core till ett högpresterande webbramverk på TechEmpower-riktmärken.

Prestanda och skalbarhet är särskilt relevanta för mikrotjänstarkitekturer, där hundratals mikrotjänster kan köras. Med ASP.NET Core körs system med ett mycket lägre antal servrar/virtuella datorer (VM). De minskade servrarna/de virtuella datorerna sparar kostnader för infrastruktur och värdtjänster.

.NET-versioner sida vid sida per programnivå

Om du vill installera program med beroenden i olika versioner av .NET rekommenderar vi .NET. Den här implementeringen stöder separat installation av olika versioner av .NET-körningen på samma dator. Installationen sida vid sida tillåter flera tjänster på samma server, var och en på sin egen version av .NET. Det minskar också riskerna och sparar pengar i programuppgraderingar och IT-åtgärder.

Det går inte att installera sida vid sida med .NET Framework. Det är en Windows-komponent och endast en version kan finnas på en dator i taget. Varje version av .NET Framework ersätter den tidigare versionen. Om du installerar en ny app som riktar sig mot en senare version av .NET Framework kan du bryta befintliga appar som körs på datorn eftersom den tidigare versionen ersattes.

När du ska välja .NET Framework

.NET erbjuder betydande fördelar för nya program och programmönster. .NET Framework fortsätter dock att vara det naturliga valet för många befintliga scenarier, och därför ersätts inte .NET Framework av .NET för alla serverprogram.

Aktuella .NET Framework-program

I de flesta fall behöver du inte migrera dina befintliga program till .NET. I stället rekommenderar vi att du använder .NET när du utökar ett befintligt program, till exempel att skriva en ny webbtjänst i ASP.NET Core.

Bibliotek från tredje part eller NuGet-paket är inte tillgängliga för .NET

.NET Standard möjliggör delningskod för alla .NET-implementeringar, inklusive .NET Core/5+. Med .NET Standard 2.0 gör ett kompatibilitetsläge att .NET Standard- och .NET-projekt kan referera till .NET Framework-bibliotek. Mer information finns i Support för .NET Framework-bibliotek.

Du behöver bara använda .NET Framework i fall där biblioteken eller NuGet-paketen använder tekniker som inte är tillgängliga i .NET Standard eller .NET.

.NET Framework-tekniker är inte tillgängliga för .NET

Vissa .NET Framework-tekniker är inte tillgängliga i .NET. I följande lista visas de vanligaste teknikerna som inte finns i .NET:

  • ASP.NET Web Forms-program: ASP.NET webbformulär är endast tillgängliga i .NET Framework. ASP.NET Core kan inte användas för ASP.NET webbformulär.

  • ASP.NET webbsidor: ASP.NET webbsidor ingår inte i ASP.NET Core.

  • Arbetsflödesrelaterade tjänster: Windows Workflow Foundation (WF), Workflow Services (WCF + WF i en enda tjänst) och WCF Data Services (kallades tidigare "ADO.NET Data Services") är endast tillgängliga i .NET Framework.

  • Språkstöd: Visual Basic och F# stöds för närvarande i .NET men inte för alla projekttyper. En lista över projektmallar som stöds finns i Mallalternativ för dotnet new(Mallalternativ för dotnet new).

Mer information finns i .NET Framework-tekniker som inte är tillgängliga i .NET.

Plattformen stöder inte .NET

Vissa Microsoft- eller tredjepartsplattformar stöder inte .NET. Vissa Azure-tjänster tillhandahåller ett SDK som ännu inte är tillgängligt för förbrukning på .NET. I sådana fall kan du använda motsvarande REST API i stället för klient-SDK.

Se även