Lezen in het Engels

Delen via


.NET-klassebibliotheken

Klassebibliotheken zijn het gedeelde bibliotheekconcept voor .NET. Met deze functies kunt u nuttige functionaliteit in modules integreren die door meerdere toepassingen kunnen worden gebruikt. Ze kunnen ook worden gebruikt als een middel om functionaliteit te laden die niet nodig is of niet bekend is bij het opstarten van de toepassing. Klassebibliotheken worden beschreven met behulp van de .NET Assembly-bestandsindeling.

Er zijn drie typen klassebibliotheken die u kunt gebruiken:

  • Platformspecifieke klassebibliotheken hebben toegang tot alle API's in een bepaald platform (bijvoorbeeld .NET Framework op Windows, Xamarin iOS), maar kunnen alleen worden gebruikt door apps en bibliotheken die op dat platform zijn gericht.
  • Draagbare klassebibliotheken hebben toegang tot een subset API's en kunnen worden gebruikt door apps en bibliotheken die gericht zijn op meerdere platforms.
  • .NET Standard-klassebibliotheken zijn een fusie van het platformspecifieke en draagbare bibliotheekconcept in één model dat het beste van beide biedt.

Platformspecifieke klassebibliotheken

Platformspecifieke bibliotheken zijn gebonden aan één .NET-platform (bijvoorbeeld .NET Framework in Windows) en kunnen daarom aanzienlijke afhankelijkheden aannemen van een bekende uitvoeringsomgeving. Een dergelijke omgeving maakt een bekende set API's (.NET- en OS-API's) beschikbaar en onderhoudt de verwachte status (bijvoorbeeld windows-register).

Ontwikkelaars die platformspecifieke bibliotheken maken, kunnen het onderliggende platform volledig benutten. De bibliotheken worden alleen op dat platform uitgevoerd, waardoor platformcontroles of andere vormen van voorwaardelijke code onnodig zijn (modulo single sourcing code voor meerdere platforms).

Platformspecifieke bibliotheken zijn het primaire klassebibliotheektype voor .NET Framework. Zelfs als er andere .NET-implementaties zijn ontstaan, bleef platformspecifieke bibliotheken het dominante bibliotheektype.

Draagbare klassebibliotheken

Draagbare bibliotheken worden ondersteund voor meerdere .NET-implementaties. Ze kunnen nog steeds afhankelijk zijn van een bekende uitvoeringsomgeving, maar de omgeving is een synthetische omgeving die wordt gegenereerd door het snijpunt van een set concrete .NET-implementaties. Blootgestelde API's en platformveronderstellingen vormen een subset van wat beschikbaar zou zijn voor een platformspecifieke bibliotheek.

U kiest een platformconfiguratie wanneer u een draagbare bibliotheek maakt. De platformconfiguratie is de set platforms die u moet ondersteunen (bijvoorbeeld .NET Framework 4.5+, Windows Telefoon 8.0+). Hoe meer platforms u wilt ondersteunen, hoe minder API's en minder platformveronderstellingen u kunt maken, de laagste gemeenschappelijke noemer. Dit kenmerk kan in het begin verwarrend zijn, omdat mensen vaak denken dat 'meer is beter' maar dat meer ondersteunde platforms leiden tot minder beschikbare API's.

Veel bibliotheekontwikkelaars zijn overgestapt van het produceren van meerdere platformspecifieke bibliotheken van één bron (met behulp van richtlijnen voor voorwaardelijke compilatie) naar draagbare bibliotheken. Er zijn verschillende benaderingen voor toegang tot platformspecifieke functionaliteit in draagbare bibliotheken, waarbij aas en switch op dit moment de meest geaccepteerde techniek zijn.

.NET Standard-klassebibliotheken

.NET Standard-bibliotheken zijn een vervanging van de platformspecifieke en draagbare bibliothekenconcepten. Ze zijn platformspecifiek in de zin dat ze alle functionaliteit van het onderliggende platform beschikbaar maken (geen synthetische platforms of platformknooppunten). Ze zijn draagbaar in de zin dat ze op alle ondersteunende platforms werken.

.NET Standard maakt een set bibliotheekcontracten beschikbaar. .NET-implementaties moeten elk contract volledig of helemaal niet ondersteunen. Elke implementatie ondersteunt daarom een set .NET Standard-contracten. De inschrijving is dat elke .NET Standard-klassebibliotheek wordt ondersteund op de platforms die ondersteuning bieden voor contractafhankelijkheden.

.NET Standard maakt niet de volledige functionaliteit van .NET Framework beschikbaar (evenmin is dat een doel), maar de bibliotheken maken veel meer API's beschikbaar dan Portable Class Libraries.

De volgende implementaties ondersteunen .NET Standard-bibliotheken:

  • .NET Core
  • .NET Framework
  • Mono
  • Universal Windows Platform (UWP)

Zie .NET Standard voor meer informatie.

Monoklassebibliotheken

Klassebibliotheken worden ondersteund in Mono, inclusief de drie typen bibliotheken die eerder zijn beschreven. Mono wordt vaak gezien als een platformoverschrijdende implementatie van .NET Framework. Dit komt deels doordat platformspecifieke .NET Framework-bibliotheken kunnen worden uitgevoerd op de Mono-runtime zonder aanpassingen of hercompilatie. Dit kenmerk was aanwezig vóór het maken van draagbare klassebibliotheken, dus was een duidelijke keuze om binaire overdraagbaarheid tussen .NET Framework en Mono mogelijk te maken (hoewel het slechts in één richting werkte).