Típusszolgáltatók
Az F#-típusszolgáltató olyan összetevő, amely típusokat, tulajdonságokat és metódusokat biztosít a programban való használathoz. A típusszolgáltatók létrehoznak egy úgynevezett megadott típust, amelyet az F#-fordító hoz létre, és egy külső adatforráson alapulnak.
Egy SQL F#-típusszolgáltatója például olyan típusokat hozhat létre, amelyek táblákat és oszlopokat jelölnek egy relációs adatbázisban. Valójában ez az SQLProvider típusszolgáltató feladata.
A megadott típusok a típusszolgáltató bemeneti paramétereitől függnek. Ilyen bemenet lehet egy mintaadatforrás (például egy JSON-sémafájl), egy közvetlenül egy külső szolgáltatásra mutató URL-cím, vagy egy adatforráshoz kapcsolati sztring. A típusszolgáltató azt is biztosíthatja, hogy a típuscsoportok csak igény szerint legyenek kibontva; vagyis ki lesznek bontva, ha a program ténylegesen hivatkozik rájuk. Ez lehetővé teszi a nagy léptékű információs terek, például az online adatpiacok közvetlen, igény szerinti integrációját erősen gépelt módon.
Generatív és törölt típusú szolgáltatók
A típusszolgáltatók két formában jönnek létre: Generative és Erased.
A Generative Type Providers olyan típusokat állít elő, amelyek .NET-típusokként írhatók abba a szerelvénybe, amelyben azokat gyártják. Ez lehetővé teszi, hogy más szerelvények kódjából legyenek felhasználva. Ez azt jelenti, hogy az adatforrás típusos ábrázolásának általában olyannak kell lennie, amely megvalósítható a .NET-típusok esetében.
A típusszolgáltatók törlésével olyan típusok hozhatók létre, amelyek csak abban a szerelvényben vagy projektben használhatók fel, amelyből létrejönnek. A típusok rövid élettartamúak; azaz nem szerelvénybe vannak írva, és más szerelvényekben nem használhatók fel kóddal. Késleltetett tagokat tartalmazhatnak, így a megadott típusokat egy potenciálisan végtelen információs területről használhatja. Ezek nagy és összekapcsolt adatforrások kis részhalmazának használatához hasznosak.
Gyakran használt típusszolgáltatók
A következő széles körben használt kódtárak típusszolgáltatókat tartalmaznak különböző célokra:
- Az FSharp.Data JSON-, XML-, CSV- és HTML-dokumentumformátumokhoz és -erőforrásokhoz tartalmaz típusszolgáltatókat.
- Az SQLProvider erősen gépelt hozzáférést biztosít a relációs adatbázisokhoz objektumleképezéssel és F# LINQ-lekérdezésekkel ezeken az adatforrásokon.
- Az FSharp.Data.SqlClient típusszolgáltatók készletével rendelkezik a T-SQL F#-ba való lefordítási idejének ellenőrzött beágyazásához.
- Az Azure Storage Típusszolgáltató típusokat biztosít az Azure Blobokhoz, táblákhoz és üzenetsorokhoz, így anélkül érheti el ezeket az erőforrásokat, hogy sztringekként kellene megadnia az erőforrásneveket a teljes programban.
- Az FSharp.Data.GraphQL tartalmazza a GraphQLProvidert, amely az URL-cím által megadott GraphQL-kiszolgáló alapján biztosít típusokat.
Szükség esetén létrehozhat saját egyéni típusszolgáltatókat, vagy referenciatípus-szolgáltatókat, amelyeket mások hoztak létre. Tegyük fel például, hogy a szervezet rendelkezik egy olyan adatszolgáltatással, amely nagy és növekvő számú elnevezett adathalmazt biztosít, amelyek mindegyike saját stabil adatsémával rendelkezik. Dönthet úgy, hogy létrehoz egy típusszolgáltatót, amely beolvassa a sémákat, és a legfrissebb elérhető adathalmazokat szigorúan begépeli a programozónak.