Поставщики типов
Поставщик типов F# — это компонент, предоставляющий типы, свойства и методы для использования в программе. Поставщики типов создают объекты, известные как предоставленные типы, создаваемые компилятором F# и основанные на внешнем источнике данных.
Например, поставщик типов F# для SQL может формировать типы, представляющие таблицы и столбцы в реляционной базе данных. Именно такие задачи выполняет поставщик типов SQLProvider.
Предоставленные типы зависят от входных параметров для поставщика типов. Такие входные данные могут представлять собой образец источника данных (например, файл схемы JSON), URL-адрес, указывающий непосредственно на внешнюю службу, или строку подключения к источнику данных. Поставщик типов также может гарантировать развертывание групп типов только по запросу, то есть только при наличии ссылок на типы в программе. Это позволяет применять прямую интеграцию по запросу широкомасштабных информационных пространств (например, рынков оперативных данных) в строго типизированном виде.
Создающие и стираемые поставщики типов
Поставщики типов бывают двух видов: создающие и стираемые.
Создающие поставщики типов создают типы, которые могут быть записаны как типы .NET в сборку, в которой они формируются. Это позволяет использовать их из кода в других сборках. Это означает, что типизированное представление источника данных обычно должно быть таким, чтобы его можно было представить с помощью типов .NET.
Стираемые поставщики типов создают типы, которые можно использовать только в сборке или проекте, в которых они созданы. Эти типы являются временными, то есть не записываются в сборку и не могут использоваться кодом в других сборках. Они могут содержать отложенные элементы, что позволяет использовать предоставленные типы из потенциально бесконечного пространства информации. Они полезны при использовании небольшого подмножества большого и взаимосвязанного источника данных.
Часто используемые поставщики типов
Следующие широко используемые библиотеки содержат поставщики типов для различных целей:
- FSharp.Data включает поставщики типов для форматов и ресурсов JSON, XML, CSV и HTML-документов.
- SQLProvider предоставляет строго типизированный доступ к реляционным базам данных посредством сопоставления объектов и запросов F# LINQ к этим источникам данных.
- FSharp.Data.SqlClient имеет набор поставщиков типов для проверки внедрения T-SQL во время компиляции в F#.
- Поставщик типов службы хранилища Azure предоставляет типы для больших двоичных объектов, таблиц и очередей Azure, что позволяет получать доступ к этим ресурсам без необходимости указывать имена ресурсов в качестве строк во всей программе.
- FSharp.Data.GraphQL содержит GraphQLProvider, который предоставляет типы на основе сервера GraphQL, заданного URL-адресом.
При необходимости можно создать собственные пользовательские поставщики типов или использовать уже созданные поставщики типов. Например, предположим, что ваша организация имеет службы данных, предоставляющие большое и возрастающее число именованных наборов данных, у каждого из которых имеется собственная стабильная схема данных. Можно создать поставщик типов, который считывает схемы и представляет программисту последние доступные наборы данных строго типизированным образом.