型別提供者

F# 型別提供者是一個元件,該元件會提供類型、屬性和方法讓您在程式中使用。 型別提供者會產生所謂的提供的型別,這些型別是由 F# 編譯器所產生,並以外部資料來源為基礎。

例如,適用於 SQL 的 F# 型別提供者可以產生型別,代表關係資料庫中的資料表和資料行。 事實上,這是 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 伺服器提供型別。

在需要時,您可以建立自己的自訂型別提供者,或是其他人所建立的參考型別提供者。 例如,假設您的組織的資料服務提供大量且不斷增加的具名資料集,各資料集都有自己的穩定資料結構描述。 您可能選擇建立一個類型提供者,以強類型方式讀取結構描述並對程式設計人員呈現最新的可用資料集。

另請參閱