TypanbieterType Providers

Ein F#-Typanbieter ist eine Komponente, die Typen, Eigenschaften und Methoden zur Verwendung im Programm bereitstellt.An F# type provider is a component that provides types, properties, and methods for use in your program. Typanbieter erstellen, so genannten bereitgestellten Typen, dem werden vom f#-Compiler generiert und basieren auf einer externen Datenquelle.Type Providers generate what are known as Provided Types, which are generated by the F# compiler and are based on an external data source.

Beispielsweise können ein f#-Typanbieter für SQL Typen, die Tabellen und Spalten in einer relationalen Datenbank generieren.For example, an F# Type Provider for SQL can generate types representing tables and columns in a relational database. In der Tat dies Was ist die SQLProvider Typanbieter unterstützt.In fact, this is what the SQLProvider Type Provider does.

Vorausgesetzt, dass die Typen von Eingabeparametern für ein Typanbieter abhängig sind.Provided Types depend on input parameters to a Type Provider. Derartige Eingabe kann einer Beispieldatenquelle (z. B. eine JSON-Schemadatei), eine URL, die direkt an einen externen Dienst oder eine Verbindungszeichenfolge für eine Datenquelle verweist.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. Ein Typanbieter kann außerdem sicherstellen, dass Gruppen von Typen nur bei Bedarf erweitert werden; Das heißt, werden sie erweitert, wenn die Typen tatsächlich von Ihrer Anwendung verwiesen werden.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. Dies ermöglicht die direkte, bedarfsabhängige und stark typisierte Integration von umfangreichen Informationsquellen, z. B. Onlinedatenanbietern.This allows for the direct, on-demand integration of large-scale information spaces such as online data markets in a strongly typed way.

Generierende und gelöschte TypanbieternGenerative and Erased Type Providers

Gibt zwei Arten von Typanbietern: generierende und gelöscht.Type Providers come in two forms: Generative and Erased.

Generierende Typanbieter erzeugen, Typen, die als .NET-oder Schematypen in der Assembly geschrieben werden können in denen sie erstellt wurden.Generative Type Providers produce types that can be written as .NET types into the assembly in which they are produced. Dadurch können sie aus Code in anderen Assemblys genutzt werden.This allows them to be consumed from code in other assemblies. Dies bedeutet, dass die typisierte Darstellung der Datenquelle in der Regel eine sein muss, die mit .NET-Typen darstellen möglich ist.This means that the typed representation of the data source must generally be one that is feasible to represent with .NET types.

Löschen Typanbieter erzeugen, Typen, die nur genutzt werden können, in der Assembly oder das Projekt, das sie aus generiert werden.Erasing Type Providers produce types that can only be consumed in the assembly or project they are generated from. Die Typen sind kurzlebige; d. h. werden nicht in eine Assembly geschrieben und können nicht von Code in anderen Assemblys genutzt werden.The types are ephemeral; that is, they are not written into an assembly and cannot be consumed by code in other assemblies. Sie können enthalten verzögert Member, da Sie die bereitgestellten Typen aus einem potenziell unbegrenzte Informationen.They can contain delayed members, allowing you to use provided types from a potentially infinite information space. Sie eignen sich für eine kleine Teilmenge der eine große und miteinander verbundene Datenquelle verwenden.They are useful for using a small subset of a large and interconnected data source.

Häufig verwendete TypanbieternCommonly used Type Providers

Die folgenden häufig verwendete Bibliotheken enthalten Typanbieter für unterschiedliche Verwendungszwecke:The following widely-used libraries contain Type Providers for different uses:

  • FSharp.Data enthält Typanbieter für JSON, XML, CSV und HTML-Formaten und Ressourcen dokumentieren.FSharp.Data includes Type Providers for JSON, XML, CSV, and HTML document formats and resources.
  • SQLProvider stark typisierten Zugriff auf die Relation-Datenbanken über objektzuordnung und f# LINQ-Abfragen für diese Datenquellen bietet.SQLProvider provides strongly-typed access to relation databases through object mapping and F# LINQ queries against these data sources.
  • FSharp.Data.SqlClient hat ein Satz von Typanbieter für den Zeitpunkt der Kompilierung überprüft Einbetten von T-SQL in F# erläutert werden.FSharp.Data.SqlClient has a set of type providers for compile-time checked embedding of T-SQL in F#.
  • Azure Storage-Typanbieter stellt Typen bereit, für die Azure-Blobs, Tabellen und Warteschlangen, sodass Sie auf diese Ressourcen zuzugreifen, ohne Ressourcennamen als Zeichenfolgen im gesamten Programm angeben.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 enthält die GraphQLProvider, stellt Typen, die basierend auf einem GraphQL Server durch URL angegeben.FSharp.Data.GraphQL contains the GraphQLProvider, which provides types based on a GraphQL server specified by URL.

Bei Bedarf können Sie eine eigene benutzerdefinierte Typanbieter erstellen, oder verweisen Sie Typanbieter, die von anderen Benutzern erstellt wurden.Where necessary, you can create your own custom type providers, or reference type providers that have been created by others. Angenommen, in einer Organisation wird ein Datendienst verwendet, der eine große und wachsende Anzahl von benannten Datasets bereitstellt, die alle ein eigenes, stabiles Datenschema verwenden.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. Sie möchten einen Typanbieter erstellen, der die Schemas liest und die neuesten verfügbaren Datasets auf eine stark typisierte Weise für den Programmierer darstellt.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.

Siehe auchSee Also

Lernprogramm: Erstellen eines TypanbietersTutorial: Create a Type Provider

F#-SprachreferenzF# Language Reference

Visual F#Visual F#