.NET-standarden är en formell mängd.NET API-specifikationen, förväntas finnas tillgänglig i alla .NET-implementationer. Motivationen bakom införandet av .NET-standarden var att förbättra konsistensen i .NET-ekosystemet. ECMA 335 fortsätter att etablera enhetlighet för .NET-implementeringsbeteende, men det finns ingen liknande specifikation för .NET Base Class Libraries (BCL) för .NET-biblioteksimplementationer.
.NET Standard möjliggör följande nyckelscenarier:
- Definiera en enhetlig, arbetsbelastningsoberoende uppsättning BCL-API:er för alla .NET-implementationer som du vill implementera.
- Gör det möjligt för utvecklare att bygga portabla bibliotek som kan användas i olika .NET-implementationer via samma uppsättning API:er.
- Minskar eller eliminerar till och med villkorlig kompilering av delad källkod för .NET API-aspekter (endast OS-API:er).
Olika .NET-implementationer riktar sig mot en specifik version av .NET-standarden. Varje .NET-implementation tillkännager den högsta .NET Standard-versionen den stödjer, ett uttalande som innebär att den även stödjer tidigare versioner. Till exempel implementerar .NET Framework 4.6 .NET Standard 1.3. Det vill säga, den exponerar alla API:er definierade i .NET Standard-versionerna 1.0 till 1.3. På liknande sätt implementerar .NET Framework 4.6.1 .NET Standard 1.4, medan .NET Core 1.0 implementerar .NET Standard 1.6.
Relationen mellan .NET Standard- och .NET-implementationer är densamma som relationen mellan HTML-specifikationer och webbläsare. Det senare är förverkligandet av det förra.
Därför implementerar .NET Framework, Xamarin och .NET Core, var och en av de hanterade ramverken . NET Standard. I takt med att datorindustrin fortsätter att introducera ny hårdvara och operativsystem kommer nya att dyka upp i framtiden. .NET Hosting Framework. Standarden låter applikationsutvecklare veta att de kan lita på en konsekvent uppsättning API:er.
Var och en. .NET-versioner motsvarar en .NET Standard-version.
API:et är konsekvent, och portering av applikationer till olika hanterade implementationer och tillhandahållande av verktyg blir enklare.
.NET Standard definieras som ett separat NuGet-paket, eftersom alla . .NET-implementationer måste stödjas
.NET-standard vs portabla bibliotek
Gör inte det portabla biblioteket samma sak?
Portabla klasser använder gemensamma API:er som stöds av flera plattformar. Som ett resultat gäller att ju fler plattformar som stöds, desto färre API:er finns tillgängliga, och för en viss kombination av plattformar kan det vara svårt att veta exakt vilka API:er som stöds. För en ny plattform måste den befintliga PCL:n kompileras om. PCL kräver också att Microsoft skapar en ny ramverksimplementeringsfork för varje plattform. På grund av. NET Standard identifierar ett API, inte en implementation, så det finns inget behov av att kompilera om applikationen. Alla nyligen släppta . .NET-implementationer implementerar de nödvändiga biblioteken. Applikationer behöver inte kompileras om för att köras på nya hårdvaruplattformar eller operativsystem. Teoretiskt sett kan ett NotSupportedException-undantag fångas när API:et anropas, men det borde vara ovanligt.
.NET-implementeringsstöd
Följande tabell listar de minsta plattformsversionerna som stöder varje .NET Standard-version. Detta innebär att senare versioner av de listade plattformarna också stöder motsvarande .NET Standard-versioner. Till exempel stöder .NET Core 2.2 .NET Standard 2.0 och tidigare.
|