F# 型プロバイダーは、プログラムで使用する型、プロパティ、メソッドを提供するコンポーネントです。 型プロバイダーは、指定 された型と呼ばれるものを生成します。これは F# コンパイラによって生成され、外部データ ソースに基づいています。
たとえば、F# Type Provider for SQL では、リレーショナル データベース内のテーブルと列を表す型を生成できます。 実際、これは SQLProvider 型プロバイダーの機能です。
指定された型は、型プロバイダーへの入力パラメーターに依存します。 このような入力には、サンプル データ ソース (JSON スキーマ ファイルなど)、外部サービスを直接指す URL、またはデータ ソースへの接続文字列を指定できます。 型プロバイダーは、型のグループがオンデマンドでのみ展開されるようにすることもできます。つまり、型が実際にプログラムによって参照されている場合は展開されます。 これにより、オンライン データ市場などの大規模な情報空間を、厳密に型指定された方法で直接オンデマンドで統合できます。
生成型プロバイダーと消去型プロバイダー
型プロバイダーには、生成型と消去型の 2 つの形式があります。
生成型プロバイダーは、生成されるアセンブリに .NET 型として記述できる型を生成します。 これにより、他のアセンブリのコードから使用できます。 つまり、データ ソースの型指定された表現は、通常、.NET 型で表現できる表現である必要があります。
型プロバイダーを消去すると、生成元のアセンブリまたはプロジェクトでのみ使用できる型が生成されます。 型はエフェメラルです。つまり、アセンブリに書き込まれず、他のアセンブリのコードで使用することはできません。 遅延メンバーを含めることができるため、無限の情報空間から提供された型を使用できます。 これらは、大きく相互接続されたデータ ソースの小さなサブセットを使用する場合に便利です。
一般的に使用される型プロバイダー
次の広く使用されているライブラリには、さまざまな用途用の型プロバイダーが含まれています。
- FSharp.Data には、JSON、XML、CSV、および HTML ドキュメントの形式とリソースの型プロバイダーが含まれます。
- SQLProvider は、オブジェクト マッピングと、これらのデータ ソースに対する F# LINQ クエリを使用して、リレーションシップ データベースに厳密に型指定されたアクセスを提供します。
- FSharp.Data.SqlClient には、F# で T-SQL をコンパイル時にチェックして埋め込むための型プロバイダーのセットがあります。
- Azure Storage の種類プロバイダー には、Azure BLOB、テーブル、キューの種類が用意されているため、プログラム全体でリソース名を文字列として指定しなくても、これらのリソースにアクセスできます。
- FSharp.Data.GraphQL には GraphQLProvider が含まれています。GraphQLProvider は、URL で指定された GraphQL サーバーに基づいて型を提供します。
必要に応じて、 独自のカスタム型プロバイダー、または他のユーザーによって作成された参照型プロバイダーを作成できます。 たとえば、組織に大量の名前付きデータ セットを提供するデータ サービスがあり、それぞれに独自の安定したデータ スキーマがあるとします。 スキーマを読み取り、最新の使用可能なデータ セットを厳密に型指定された方法でプログラマに提示する型プロバイダーを作成することもできます。
こちらも参照ください
.NET