Dela via


Typprovidrar

En F#-typprovider är en komponent som tillhandahåller typer, egenskaper och metoder för användning i ditt program. Typprovidrar genererar det 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 endast utökas på begäran. De expanderas alltså om typerna faktiskt refereras 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 typproviders skapar 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 typerade representationen av datakällan i allmänhet måste vara en som är möjlig att representera med .NET-typer.

Raderingstypprovidrar skapar typer som bara kan användas i sammansättningen eller projektet som de genereras från. Typerna är tillfälliga. De skrivs alltså inte till en sammansättning och kan inte användas med 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.

Vanligt använda 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 typad å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 Type-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.

Om det behövs 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 scheman och presenterar de senaste tillgängliga datauppsättningarna för programmeraren på ett starkt skrivet sätt.

Se även