Proveedores de tiposType Providers

Un proveedor de tipos de F# es un componente que proporciona tipos, propiedades y métodos para usar en el programa.An F# type provider is a component that provides types, properties, and methods for use in your program. Los proveedores de tipos ofrecen lo que se conoce como tipos proporcionados, que se generan mediante el compilador de F# y se basan en un origen de datos externo.Type Providers generate what are known as Provided Types, which are generated by the F# compiler and are based on an external data source.

Por ejemplo, un proveedor de tipos de F# para SQL puede generar tipos que representen tablas y columnas en una base de datos relacional.For example, an F# Type Provider for SQL can generate types representing tables and columns in a relational database. De hecho, esto es lo que hace el proveedor de tipos SQLProvider.In fact, this is what the SQLProvider Type Provider does.

Los tipos proporcionados dependen de los parámetros de entrada para un proveedor de tipos.Provided Types depend on input parameters to a Type Provider. Dicha entrada puede ser un origen de datos de muestra (por ejemplo, archivo de esquema JSON), una dirección URL que apunte directamente a un servicio externo o una cadena de conexión a un origen de datos.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. Un proveedor de tipos también permite garantizar que solo se expandan grupos de tipos a petición, es decir, que se expandan si el programa realmente hace referencia a los tipos.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. Esto permite la integración directa a petición de espacios de información a gran escala, tales como mercados de datos en línea de forma fuertemente tipada.This allows for the direct, on-demand integration of large-scale information spaces such as online data markets in a strongly typed way.

Proveedores de tipos generativos y de borradoGenerative and Erased Type Providers

Hay dos clases de proveedores de tipos: generativos y de borrado.Type Providers come in two forms: Generative and Erased.

Los proveedores de tipos generativos producen tipos que se pueden escribir como tipos de .NET en el ensamblado en el que se generan.Generative Type Providers produce types that can be written as .NET types into the assembly in which they are produced. Esto permite su consumo a partir de código en otros ensamblados.This allows them to be consumed from code in other assemblies. Esto significa que, en general, la representación tipada del origen de datos debe ser una factible para la representación con tipos de .NET.This means that the typed representation of the data source must generally be one that is feasible to represent with .NET types.

Los proveedores de tipos de borrado producen tipos que solo se pueden consumir en el ensamblado o proyecto en el que se generan.Erasing Type Providers produce types that can only be consumed in the assembly or project they are generated from. Los tipos son efímeros, es decir, no se escriben en un ensamblado y no se pueden consumir mediante código en otros ensamblados.The types are ephemeral; that is, they are not written into an assembly and cannot be consumed by code in other assemblies. Pueden contener miembros con retraso, lo cual permite usar tipos proporcionados a partir de un espacio de información que sea potencialmente infinito.They can contain delayed members, allowing you to use provided types from a potentially infinite information space. Son útiles para usar un subconjunto pequeño de un origen de datos grande e interconectado.They are useful for using a small subset of a large and interconnected data source.

Proveedores de tipos usados habitualmenteCommonly used Type Providers

Las siguientes bibliotecas de uso generalizado contienen proveedores de tipos para diferentes usos:The following widely-used libraries contain Type Providers for different uses:

  • FSharp.Data incluye proveedores de tipos para recursos y formatos de documento JSON, XML, CSV y HTML.FSharp.Data includes Type Providers for JSON, XML, CSV, and HTML document formats and resources.
  • SQLProvider proporciona acceso fuertemente tipado a bases de datos relacionales a través de la asignación de objetos y consultas LINQ de F# en dichos orígenes de datos.SQLProvider provides strongly typed access to relation databases through object mapping and F# LINQ queries against these data sources.
  • FSharp.Data.SqlClient tiene un conjunto de proveedores de tipos para la inserción comprobada en tiempo de compilación de T-SQL en F#.FSharp.Data.SqlClient has a set of type providers for compile-time checked embedding of T-SQL in F#.
  • El proveedor de tipos de Azure Storage ofrece tipos para Azure Blobs, Tables y Queues, lo cual permite acceder a dichos recursos sin necesidad de especificar los nombres de los recursos como cadenas en todo el programa.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 contiene GraphQLProvider, que proporciona tipos basados en un servidor GraphQL especificado mediante una dirección URL.FSharp.Data.GraphQL contains the GraphQLProvider, which provides types based on a GraphQL server specified by URL.

En los casos en los que sea necesario, se pueden crear proveedores de tipos personalizados propios, o bien hacer referencia a proveedores de tipos creados por otros.Where necessary, you can create your own custom type providers, or reference type providers that have been created by others. Por ejemplo, suponga que su organización tiene un servicio de datos que proporciona un número elevado y creciente de conjuntos de datos con nombre, cada uno con su propio esquema de datos estable.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. Se puede elegir crear un proveedor de tipo que lea los esquemas y presente los últimos conjuntos de datos disponibles al programador de forma fuertemente tipada.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.

Vea tambiénSee also