Typprovidrar
En F#-typprovider är en komponent som tillhandahåller typer, egenskaper och metoder för användning i ditt program. Typprovidrar genererar vad som kallas Tillhandahållna typer, som genereras av F#-kompilatorn och baseras på en extern datakälla.
En F#-typprovider för SQL kan till exempel generera typer som representerar tabeller och kolumner i en relationsdatabas. Det här är faktiskt vad SQLProvider-typprovidern gör.
Angivna typer beror på indataparametrar för en typprovider. Sådana indata kan vara en exempeldatakälla (till exempel en JSON-schemafil), en URL som pekar direkt på en extern tjänst eller en anslutningssträng till en datakälla. En typprovider kan också se till att grupper av typer bara utökas på begäran. De utökas alltså om typerna faktiskt refereras till av ditt program. Detta möjliggör direkt integrering på begäran av storskaliga informationsutrymmen, till exempel onlinedatamarknader på ett starkt skrivet sätt.
Generativa och raderade typprovidrar
Typprovidrar finns i två former: Generativ och Raderad.
Generativa typprovidrar producerar typer som kan skrivas som .NET-typer till sammansättningen där de produceras. Detta gör att de kan användas från kod i andra sammansättningar. Det innebär att den typade representationen av datakällan i allmänhet måste vara en som är möjlig att representera med .NET-typer.
Raderingstypprovidrar producerar typer som bara kan användas i sammansättningen eller projektet som de genereras från. Typerna är tillfälliga. De skrivs alltså inte in i en sammansättning och kan inte användas av kod i andra sammansättningar. De kan innehålla fördröjda medlemmar, så att du kan använda angivna typer från ett potentiellt oändligt informationsutrymme. De är användbara för att använda en liten delmängd av en stor och sammankopplad datakälla.
Vanliga typprovidrar
Följande bibliotek som används ofta innehåller typprovidrar för olika användningsområden:
- FSharp.Data innehåller typprovidrar för JSON, XML, CSV och HTML-dokumentformat och resurser.
- SQLProvider ger starkt skrivskyddad åtkomst till relationsdatabaser via objektmappning och F#LINQ-frågor mot dessa datakällor.
- FSharp.Data.SqlClient har en uppsättning typprovidrar för kompileringstidskontrollerad inbäddning av T-SQL i F#.
- Azure Storage Typ-providern tillhandahåller typer för Azure-blobbar, tabeller och köer, så att du kan komma åt dessa resurser utan att behöva ange resursnamn som strängar i hela programmet.
- FSharp.Data.GraphQL innehåller GraphQLProvider, som tillhandahåller typer baserade på en GraphQL-server som anges av URL.
Vid behov kan du skapa egna leverantörer av anpassade typer eller referenstypprovidrar som har skapats av andra. Anta till exempel att din organisation har en datatjänst som tillhandahåller ett stort och växande antal namngivna datauppsättningar, var och en med ett eget stabilt dataschema. Du kan välja att skapa en typprovider som läser schemana och presenterar de senaste tillgängliga datauppsättningarna för programmeraren på ett starkt skrivet sätt.