Type Providers
Een F#-typeprovider is een onderdeel dat typen, eigenschappen en methoden biedt voor gebruik in uw programma. Typeproviders genereren wat opgegeven typen worden genoemd, die worden gegenereerd door de F#-compiler en zijn gebaseerd op een externe gegevensbron.
Een F#-typeprovider voor SQL kan bijvoorbeeld typen genereren die tabellen en kolommen in een relationele database vertegenwoordigen. In feite is dit wat de SQLProvider Type Provider doet.
Opgegeven typen zijn afhankelijk van invoerparameters voor een typeprovider. Dergelijke invoer kan een voorbeeldgegevensbron zijn (zoals een JSON-schemabestand), een URL die rechtstreeks naar een externe service verwijst of een connection string naar een gegevensbron. Een typeprovider kan er ook voor zorgen dat groepen typen alleen op aanvraag worden uitgebreid; dat wil gezegd, ze worden uitgevouwen als de typen daadwerkelijk worden verwezen door uw programma. Hierdoor kan de directe, on-demand integratie van grootschalige informatieruimten, zoals online gegevensmarkten, op een sterk getypte manier worden geïntegreerd.
Generatieve en gewiste typeproviders
Type Providers zijn in twee vormen beschikbaar: Generatief en Gewist.
Generatieve typeproviders produceren typen die kunnen worden geschreven als .NET-typen in de assembly waarin ze worden geproduceerd. Hierdoor kunnen ze worden gebruikt vanuit code in andere assembly's. Dit betekent dat de getypte weergave van de gegevensbron over het algemeen een weergave moet zijn die haalbaar is om te vertegenwoordigen met .NET-typen.
Het wissen van typeproviders produceert typen die alleen kunnen worden gebruikt in de assembly of het project waaruit ze worden gegenereerd. De typen zijn kortstondig; dat wil gezegd, ze worden niet in een assembly geschreven en kunnen niet worden gebruikt door code in andere assembly's. Ze kunnen vertraagde leden bevatten, zodat u opgegeven typen kunt gebruiken uit een mogelijk oneindige informatieruimte. Ze zijn handig voor het gebruik van een kleine subset van een grote en onderling verbonden gegevensbron.
Veelgebruikte typeproviders
De volgende veelgebruikte bibliotheken bevatten typeproviders voor verschillende toepassingen:
- FSharp.Data bevat typeproviders voor JSON-, XML-, CSV- en HTML-documentindelingen en -resources.
- SQLProvider biedt sterk getypte toegang tot relationele databases via objecttoewijzing en F#LINQ-query's voor deze gegevensbronnen.
- FSharp.Data.SqlClient heeft een set typen providers voor het compileren van gecompileerde tijd gecontroleerd insluiten van T-SQL in F#.
- Azure Storage typeprovider biedt typen voor Azure Blobs, Tabellen en Wachtrijen, zodat u toegang hebt tot deze resources zonder dat u resourcenamen hoeft op te geven als tekenreeksen in uw programma.
- FSharp.Data.GraphQL bevat de GraphQLProvider, die typen biedt op basis van een GraphQL-server die is opgegeven door de URL.
Indien nodig kunt u uw eigen aangepaste typeproviders of verwijzingstypeproviders maken die door anderen zijn gemaakt. Stel dat uw organisatie een gegevensservice heeft die een groot en groeiend aantal benoemde gegevenssets biedt, elk met een eigen stabiel gegevensschema. U kunt ervoor kiezen om een typeprovider te maken die de schema's leest en de meest recente beschikbare gegevenssets op een sterk getypte manier aan de programmeur presenteert.