Provider di tipi

Un provider di tipi F# è un componente che fornisce tipi, proprietà e metodi da utilizzare in un programma. I provider di tipi generano i tipi noti come tipi forniti, generati dal compilatore F# e basati su un'origine dati esterna.

Ad esempio, un provider di tipi F# per SQL può generare tipi che rappresentano tabelle e colonne in un database relazionale. In realtà, questo è ciò che fa il provider di tipi SQLProvider .

I tipi forniti dipendono dai parametri di input per un provider di tipi. Tale input può essere un'origine dati di esempio, ad esempio un file di schema JSON, un URL che punta direttamente a un servizio esterno o una stringa di connessione a un'origine dati. Un provider di tipi può anche garantire che i gruppi di tipi siano espansi solo su richiesta. in altri, vengono espansi se il programma fa effettivamente riferimento ai tipi. Questo consente di utilizzare l'integrazione diretta su richiesta di spazi di informazioni su larga scala fortemente tipizzati, come i mercati di dati online.

Provider di tipi generativi e cancellati

I provider di tipi sono disponibili in due formati: Generative e Erased.

I provider di tipi generativi producono tipi che possono essere scritti come tipi .NET nell'assembly in cui vengono prodotti. In questo modo possono essere utilizzate dal codice in altri assembly. Ciò significa che la rappresentazione tipizzata dell'origine dati deve essere in genere una rappresentazione che è possibile rappresentare con i tipi .NET.

La cancellazione dei provider di tipi produce tipi che possono essere utilizzati solo nell'assembly o nel progetto da cui vengono generati. I tipi sono effimeri; in altre parole, non vengono scritti in un assembly e non possono essere utilizzati dal codice in altri assembly. Possono contenere membri ritardati , consentendo di usare i tipi forniti da uno spazio di informazioni potenzialmente infinito. Sono utili per l'uso di un piccolo subset di un'origine dati di grandi dimensioni e interconnessa.

Provider di tipi di uso comune

Le librerie ampiamente usate seguenti contengono provider di tipi per usi diversi:

  • FSharp.Data include provider di tipi per i formati e le risorse di documenti JSON, XML, CSV e HTML.
  • SQLProvider fornisce l'accesso fortemente tipizzato ai database di relazione tramite mapping degli oggetti e query LINQ F# su queste origini dati.
  • FSharp.Data.SqlClient include un set di provider di tipi per l'incorporamento controllato in fase di compilazione di T-SQL in F#.
  • Archiviazione di Azure provider di tipi fornisce tipi per BLOB, tabelle e code di Azure, consentendo di accedere a queste risorse senza dover specificare nomi di risorse come stringhe in tutto il programma.
  • FSharp.Data.GraphQL contiene GraphQLProvider, che fornisce tipi basati su un server GraphQL specificato dall'URL.

Se necessario, è possibile creare provider di tipi personalizzati o provider di tipi di riferimento creati da altri utenti. Ad esempio, si supponga che l'organizzazione abbia un servizio dati che fornisce un numero elevato e crescente di set di dati denominati, ciascuno con il proprio schema dati stabile. È possibile scegliere di creare un provider di tipi che legge gli schemi ed elenca gli ultimi set di dati disponibili per il programmatore, in una modalità fortemente tipizzata.

Vedi anche