Поставщики типовType Providers

Поставщик типов F# — это компонент, предоставляющий типы, свойства и методы для использования в программе.An F# type provider is a component that provides types, properties, and methods for use in your program. Поставщики типов создавать так называемые типы, предоставляемые, которой создаются F# компилятора того на них в зависимости от внешнего источника данных.Type Providers generate what are known as Provided Types, which are generated by the F# compiler and are based on an external data source.

Например F# тип поставщика для SQL можно создать типы, представляющие таблицы и столбцы в реляционной базе данных.For example, an F# Type Provider for SQL can generate types representing tables and columns in a relational database. На самом деле, что это SQLProvider и поставщик типа.In fact, this is what the SQLProvider Type Provider does.

При условии, что типы зависят от входных параметров для поставщика типов.Provided Types depend on input parameters to a Type Provider. Такие входные данные могут быть образец источника данных (например, JSON файл схемы), URL-адрес, указывающий непосредственно на внешней службы или строку подключения к источнику данных.Such input can be a sample data source (such as a JSON schema file), a URL pointing directly to an external service, or a connection string to a data source. Поставщик типов также можно обеспечить, что групп типов только расширяются по запросу; то есть они имеют расширенные типы фактически ссылки в программе.A Type Provider can also ensure that groups of types are only expanded on demand; that is, they are expanded if the types are actually referenced by your program. Это позволяет применять прямую интеграцию по запросу широкомасштабных информационных пространств (например, рынков оперативных данных) в строго типизированном виде.This allows for the direct, on-demand integration of large-scale information spaces such as online data markets in a strongly typed way.

Поставщики генерирующих и удаленных типовGenerative and Erased Type Providers

Поставщики типов имеют две формы: Генерирующих и удаленных.Type Providers come in two forms: Generative and Erased.

Генерирующих поставщиков типов создавать типы, которые могут быть написаны как типы .NET в сборку, в котором они созданы.Generative Type Providers produce types that can be written as .NET types into the assembly in which they are produced. Это позволяет им для использования из кода в других сборках.This allows them to be consumed from code in other assemblies. Это означает, что типизированное представление источника данных, обычно необходимо, возможно, для представления с типами .NET.This means that the typed representation of the data source must generally be one that is feasible to represent with .NET types.

Стирания поставщиков типов создавать типы, которые могут использоваться только в сборке, или они формируются из проекта.Erasing Type Providers produce types that can only be consumed in the assembly or project they are generated from. Типы являются временными; то есть они не записываются в сборку и не может использоваться в коде в других сборках.The types are ephemeral; that is, they are not written into an assembly and cannot be consumed by code in other assemblies. Они могут содержать отложенный члены, позволяя использовать типы из пространства потенциально бесконечный сведения.They can contain delayed members, allowing you to use provided types from a potentially infinite information space. Они полезны для использования небольшое подмножество источником большой и взаимосвязанных данных.They are useful for using a small subset of a large and interconnected data source.

Часто используемые поставщиков типовCommonly used Type Providers

Следующие библиотеки широко используется содержат поставщиков типов для различных целей:The following widely-used libraries contain Type Providers for different uses:

  • FSharp.Data включает поставщиков типов для форматов и ресурсов документов JSON, XML, CSV и HTML.FSharp.Data includes Type Providers for JSON, XML, CSV, and HTML document formats and resources.
  • SQLProvider предоставляет строго типизированный доступ к базам данных связи через сопоставление объектов и F# запросы LINQ к источникам данных.SQLProvider provides strongly-typed access to relation databases through object mapping and F# LINQ queries against these data sources.
  • FSharp.Data.SqlClient набор поставщиков типов для компиляции проверен внедрение T-SQL в F#.FSharp.Data.SqlClient has a set of type providers for compile-time checked embedding of T-SQL in F#.
  • Поставщик Azure тип хранилища предоставляет типы для больших двоичных объектов Azure, таблицы и очереди, позволяет получить доступ к этим ресурсам без необходимости указания имен ресурсов в виде строк во всей программе.Azure Storage Type provider provides types for Azure Blobs, Tables, and Queues, allowing you to access these resources without needing to specify resource names as strings throughout your program.
  • FSharp.Data.GraphQL содержит GraphQLProvider, который предоставляет типы, основанные на сервере GraphQL по указанному URL-адрес.FSharp.Data.GraphQL contains the GraphQLProvider, which provides types based on a GraphQL server specified by URL.

При необходимости вы можете создать собственные пользовательские поставщики типов, или ссылаться на поставщиков типов, которые были созданы другими пользователями.Where necessary, you can create your own custom type providers, or reference type providers that have been created by others. Например, предположим, что ваша организация имеет службы данных, предоставляющие большое и возрастающее число именованных наборов данных, у каждого из которых имеется собственная стабильная схема данных.For example, assume your organization has a data service providing a large and growing number of named data sets, each with its own stable data schema. Можно создать поставщик типов, который считывает схемы и представляет программисту последние доступные наборы данных строго типизированным образом.You may choose to create a type provider that reads the schemas and presents the latest available data sets to the programmer in a strongly typed way.

См. такжеSee also