F# 類型提供者是一個元件,提供用於程式的類型、屬性和方法。 類型提供者會產生所謂的 「提供型別」,這些類型是由 F# 編譯程式所產生,並且以外部數據源為基礎。
例如,F# SQL 類型提供者可以產生代表關係資料庫中資料表和資料欄的類型。 事實上,這是 SQLProvider 類型提供者的功能。
提供的型別取決於類型提供者的輸入參數。 這類輸入可以是範例數據源(例如 JSON 架構檔案)、指向外部服務的 URL,或數據源的連接字串。 類型提供者也可以確保類型群組只會按需擴充,即當您的程式確實參考到這些類型時,它們才會展開。 這允許大規模資訊空間(如在線資料市場)的即時、直接整合,並以強型別的方式進行。
生成和清除的類型提供者
類型提供者有兩種形式:生成的和擦除的。
生成型別提供者會產生型別,這些型別可以寫入其生成的元件中,作為 .NET 型別。 這可讓它們能從其他組件中的程式碼中被使用。 這表示資料來源的類型表示通常必須是可以用 .NET 類型來表示的。
消除類型提供者會產生的類型只能在它們所產生的元件或專案中使用。 這些類型是暫時的;也就是說,它們不會寫入組件,且無法被其他組件的代碼取用。 它們可以包含 延遲 的成員,讓您能夠使用可能無限信息空間中提供的型別。 它們適用於使用大型和互連數據源的小型子集。
常用的類型提供者
下列廣泛使用的程式庫包含不同用途的類型提供者:
- FSharp.Data 包含 JSON、XML、CSV 和 HTML 檔案格式和資源的類型提供者。
- SQLProvider 透過物件對應和 F# LINQ 查詢,針對這些數據源提供關聯資料庫的強型別存取。
- FSharp.Data.SqlClient 提供一組類型提供者,用於在 F# 中編譯時檢查和嵌入 T-SQL。
- Azure 記憶體類型提供者 提供 Azure Blob、數據表和佇列的類型,可讓您存取這些資源,而不需要在整個程式中將資源名稱指定為字串。
- FSharp.Data.GraphQL 包含 GraphQLProvider,其會根據 URL 指定的 GraphQL 伺服器提供類型。
如有必要,您可以 建立自己的自定義類型提供者,或參考其他人所建立的類型提供者。 例如,假設您的組織有一個數據服務,提供大量且不斷增加的具名數據集,每個數據集都有自己的穩定數據架構。 您可以選擇建立類型提供者,以強類型的方式讀取架構,並將最新可用的資料集呈現給程式設計人員。