IMessageFilterTable<TFilterData> Interface

Définition

interface qui définit le contrat qu'une table de filtres doit implémenter pour inspecter les messages avec les critères de la requête dérivés d'un ou de plusieurs filtres.An interface that defines the contract that a filter table must implement to inspect messages with query criteria derived from one or more filters.

generic <typename TFilterData>
public interface class IMessageFilterTable : System::Collections::Generic::ICollection<System::Collections::Generic::KeyValuePair<System::ServiceModel::Dispatcher::MessageFilter ^, TFilterData>>, System::Collections::Generic::IDictionary<System::ServiceModel::Dispatcher::MessageFilter ^, TFilterData>, System::Collections::Generic::IEnumerable<System::Collections::Generic::KeyValuePair<System::ServiceModel::Dispatcher::MessageFilter ^, TFilterData>>
public interface IMessageFilterTable<TFilterData> : System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<System.ServiceModel.Dispatcher.MessageFilter,TFilterData>>, System.Collections.Generic.IDictionary<System.ServiceModel.Dispatcher.MessageFilter,TFilterData>, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.ServiceModel.Dispatcher.MessageFilter,TFilterData>>
type IMessageFilterTable<'FilterData> = interface
    interface IDictionary<MessageFilter, 'FilterData>
    interface ICollection<KeyValuePair<MessageFilter, 'FilterData>>
    interface seq<KeyValuePair<MessageFilter, 'FilterData>>
    interface IEnumerable
Public Interface IMessageFilterTable(Of TFilterData)
Implements ICollection(Of KeyValuePair(Of MessageFilter, TFilterData)), IDictionary(Of MessageFilter, TFilterData), IEnumerable(Of KeyValuePair(Of MessageFilter, TFilterData))

Paramètres de type

TFilterData

Type de données associé à chaque filtre dans la table.The type of data associated with each filter in the table.

Dérivé
Implémente

Remarques

La table de filtres est un composant principal du moteur de filtrage.The filter table is a core component of the filter engine. L’utilisation principale du moteur de filtre dans Windows Communication Foundation (WCF) consiste à faire correspondre la logique d’application aux messages en recherchant tous les filtres qui correspondent à un message.The primary use of the filter engine in Windows Communication Foundation (WCF) is to match application logic to messages by finding all the filters that match a message.

Une table de filtres permet à plusieurs filtres d'être mis en correspondance avec un seul message plus efficacement que s'ils avaient été mis en équivalence séparément.A filter table allows multiple filters to be matched against a single message more efficiently than they can be matched separately. Une table de filtres associe des données aux filtres.A filter table associates filter data with filters. La table représente une collection de paires clé-valeur, où la clé correspond à MessageFilter, et la valeur constitue les données de filtre associées.The table is a collection of key-value pairs, where the key is the MessageFilter, and the value is the associated filter data. Les données de filtre peuvent correspondre à n'importe quelles données du type précisé dans le paramètre générique, et peuvent permettre de déterminer les actions à entreprendre si un message satisfait à un filtre dans la table.Filter data can be any data of the type specified in the generic parameter and can be used to specify what actions to take if a message is matched by a filter in the table.

Les entrées de la table de filtres sont accessibles à l'aide des fonctionnalités d'IDictionary<TKey,TValue> dont IMessageFilterTable<TFilterData> hérite.Filter table entries can be accessed using the IDictionary<TKey,TValue> functionality that IMessageFilterTable<TFilterData> inherits.

Notez qu'il n'est possible d'ajouter une instance d'un filtre à un objet IMessageFilterTable<TFilterData>.Note that a filter instance can only be added to a given IMessageFilterTable<TFilterData> once. Pour ajouter plusieurs instances d'un filtre à une même table de filtres, utilisez un constructeur pour en créer d'autres instances.To add multiple instances of this filter to the same filter table, use a filter constructor to create additional instances.

Un filtre correspond à un message lorsque le message satisfait le critères de requête du filtre.A filter matches a message when the message satisfies the query criteria of the filter. Il existe quatre méthodes surchargées correspondantes.There are four overloaded matching methods. Les données retournées correspondent aux données de filtre ou aux objets MessageFilter à proprement dits.The data returned is either the filter data or the MessageFilter objects themselves. Ces données sont retournées si plusieurs correspondances sont possibles, ou seulement une seule correspondance.This data is returned whether multiple matches are allowed or only a single match. Le tableau suivant reprend ces renseignements classés par surcharge.The following table shows this information for each overload.

Nom de la méthodeMethod Name CorrespondancesMatches Données retournéesData Returned
GetMatchingValue SingleSingle FilterData
GetMatchingFilter SingleSingle MessageFilter
GetMatchingValues MultipleMultiple FilterData
GetMatchingFilters MultipleMultiple Objets MessageFilter.MessageFilter objects

Chaque méthode prévoit deux surcharges.Each method contains two overloads. L'une des deux surcharges reçoit un paramètre Message et n'est pas en mesure d'analyser le corps du message, alors que l'autre surcharge reçoit un paramètre MessageBuffer et peut analyser n'importe quelle partie du message.The difference between the two overloads is that one takes a Message parameter and is not permitted to examine the contents of the body; the other takes a MessageBuffer parameter and can examine any part of the message. Si vous lancez un appel à une méthode avec le paramètre de message et que la table de filtres contient un filtre qui analyse le contenu du corps du message, une exception est levée.If you call a method with the message parameter, and the filter table contains a filter that examines the content of the message body, an exception is thrown. Si vous n'êtes pas sûr des filtres intégrant une table, appelez la surcharge qui accepte une mémoire tampon de messages.If you are unsure about the filters in a table, call the overload that takes a message buffer.

Les en-tête de messages sont automatiquement mis en mémoire tampon et peuvent être inspectés par un filtre sans être consommés.Message headers are automatically buffered and can be inspected by a filter without being consumed. Toutefois, si le corps doit être inspecté par un filtre, la totalité du message doit alors être mise en mémoire tampon sinon le message est alors consommé par une requête et son contenu détruit.But if the body is to be inspected by a filter, then the entire message must be buffered because an unbuffered message body is consumed by a query and its contents destroyed.

Les classes suivantes implémentent IMessageFilterTable<TFilterData> :The following classes implement IMessageFilterTable<TFilterData>:

Propriétés

Count

Obtient le nombre d’éléments contenus dans le ICollection<T>.Gets the number of elements contained in the ICollection<T>.

(Hérité de ICollection<T>)
IsReadOnly

Obtient une valeur indiquant si ICollection<T> est en lecture seule.Gets a value indicating whether the ICollection<T> is read-only.

(Hérité de ICollection<T>)
Item[TKey]

Obtient ou définit l'élément à l'aide de la clé spécifiée.Gets or sets the element with the specified key.

(Hérité de IDictionary<TKey,TValue>)
Keys

Obtient un ICollection<T> contenant les clés de IDictionary<TKey,TValue>.Gets an ICollection<T> containing the keys of the IDictionary<TKey,TValue>.

(Hérité de IDictionary<TKey,TValue>)
Values

Obtient ICollection<T> contenant les valeurs de IDictionary<TKey,TValue>.Gets an ICollection<T> containing the values in the IDictionary<TKey,TValue>.

(Hérité de IDictionary<TKey,TValue>)

Méthodes

Add(T)

Ajoute un élément à ICollection<T>.Adds an item to the ICollection<T>.

(Hérité de ICollection<T>)
Add(TKey, TValue)

Ajoute un élément avec la clé et la valeur fournies à IDictionary<TKey,TValue>.Adds an element with the provided key and value to the IDictionary<TKey,TValue>.

(Hérité de IDictionary<TKey,TValue>)
Clear()

Supprime tous les éléments de ICollection<T>.Removes all items from the ICollection<T>.

(Hérité de ICollection<T>)
Contains(T)

Détermine si ICollection<T> contient une valeur spécifique.Determines whether the ICollection<T> contains a specific value.

(Hérité de ICollection<T>)
ContainsKey(TKey)

Détermine si IDictionary<TKey,TValue> contient un élément avec la clé spécifiée.Determines whether the IDictionary<TKey,TValue> contains an element with the specified key.

(Hérité de IDictionary<TKey,TValue>)
CopyTo(T[], Int32)

Copie les éléments de ICollection<T> dans Array, à partir d'un index particulier de Array.Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

(Hérité de ICollection<T>)
GetEnumerator()

Retourne un énumérateur qui itère au sein d’une collection.Returns an enumerator that iterates through a collection.

(Hérité de IEnumerable)
GetMatchingFilter(Message, MessageFilter)

Retourne une valeur qui indique si le critère de correspondance d'un et un seul filtre dans la table est respecté par le message spécifié, et retourne ce filtre dans un paramètre out.Returns a value that indicates whether the match criterion of exactly one filter in the table is satisfied by the specified message, and returns that filter in an out parameter.

GetMatchingFilter(MessageBuffer, MessageFilter)

Retourne une valeur qui indique si le critère de correspondance d'un et un seul filtre dans la table est respecté par le message ou le message mis en mémoire tampon spécifié, et retourne ce filtre dans un paramètre out.Returns a value that indicates whether the match criterion of exactly one filter in the table is satisfied by the specified message or buffered message, and returns that filter in an out parameter.

GetMatchingFilters(Message, ICollection<MessageFilter>)

Retourne une valeur qui indique si le message indiqué respecte le critère de correspondance d'un filtre de la table, et ajoute les filtres correspondants à une collection.Returns a value that indicates whether the match criterion of a filter in the table is satisfied by the specified message, and adds the matching filters to a collection.

GetMatchingFilters(MessageBuffer, ICollection<MessageFilter>)

Retourne une valeur qui indique si le message mis en mémoire tampon indiqué respecte le critère de correspondance d'un filtre de la table, et ajoute les filtres correspondants à une collection.Returns a value that indicates whether the match criterion of a filter in the table is satisfied by the specified buffered message, and adds the matching filters to a collection.

GetMatchingValue(Message, TFilterData)

Retourne une valeur qui indique si le message mis en mémoire tampon indiqué respecte le critère de correspondance d'un filtre dans la table, et ajoute les données de filtre correspondantes à une collection.Returns a value that indicates whether the match criterion of exactly one filter in the table is satisfied by the specified message, and adds the matching filter data to a collection.

GetMatchingValue(MessageBuffer, TFilterData)

Retourne une valeur qui indique si le critère de correspondance d'exactement un filtre dans la table est respecté par le message mis en mémoire tampon spécifié, et ajoute les données de filtre correspondantes à une collection.Returns a value that indicates whether the match criterion of exactly one filter in the table is satisfied by the specified buffered message, and adds the matching filter data to a collection.

GetMatchingValues(Message, ICollection<TFilterData>)

Retourne une valeur qui indique si le message indiqué respecte le critère de correspondance d'au moins un filtre de la table, et ajoute FilterData des filtres correspondants à une collection.Returns a value that indicates whether the match criterion of at least one filter in the table is satisfied by the specified message, and adds the FilterData of the matching filters to a collection.

GetMatchingValues(MessageBuffer, ICollection<TFilterData>)

Retourne une valeur qui indique si le message mis en mémoire tampon indiqué respecte le critère de correspondance d'au moins un filtre de la table, et ajoute FilterData des filtres correspondants à une collection.Returns a value that indicates whether the match criterion of at least one filter in the table is satisfied by the specified buffered message, and adds the FilterData of the matching filters to a collection.

Remove(TKey)

Supprime l'élément avec la clé spécifiée d'IDictionary<TKey,TValue>.Removes the element with the specified key from the IDictionary<TKey,TValue>.

(Hérité de IDictionary<TKey,TValue>)
TryGetValue(TKey, TValue)

Obtient la valeur associée à la clé spécifiée.Gets the value associated with the specified key.

(Hérité de IDictionary<TKey,TValue>)

Méthodes d’extension

CopyToDataTable<T>(IEnumerable<T>)

Retourne un DataTable qui contient des copies des objets DataRow, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est DataRow.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Copie les objets DataRow vers le DataTable spécifié, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Copie les objets DataRow vers le DataTable spécifié, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.Enables parallelization of a query.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

Retourne une collection d'éléments qui contient les ancêtres de chaque nœud de la collection source.Returns a collection of elements that contains the ancestors of every node in the source collection.

Ancestors<T>(IEnumerable<T>, XName)

Retourne une collection d'éléments filtrée qui contient les ancêtres de chaque nœud de la collection source.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

Retourne une collection des nœuds descendants de chaque document et élément de la collection source.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

Retourne une collection d'éléments qui contient les éléments descendants de tous les éléments et tous les documents de la collection source.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Descendants<T>(IEnumerable<T>, XName)

Retourne une collection d'éléments filtrée qui contient les éléments descendants de tous les éléments et tous les documents de la collection source.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

Retourne une collection des éléments enfants de chaque élément et document de la collection source.Returns a collection of the child elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName)

Retourne une collection filtrée des éléments enfants de chaque élément et document de la collection source.Returns a filtered collection of the child elements of every element and document in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

Retourne une collection de nœuds qui contient tous les nœuds de la collection source, triés selon l'ordre des documents.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

Retourne une collection des nœuds enfants de chaque document et élément de la collection source.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

Supprime chaque nœud de la collection source de son nœud parent.Removes every node in the source collection from its parent node.

S’applique à

Cohérence de thread

Les tables de filtres sont thread-safe en ce qui concerne les opérations correspondantes, mais ne sont pas thread-safe en ce qui concerne la modification.Filter tables are thread-safe with respect to matching operations, but are not thread-safe with respect to modification. Les threads qui accèdent à une table de filtres doivent être synchronisés par le ReaderWriterLock ou une sémantique de verrouillage semblable.Threads that access a filter table should be synchronized by the ReaderWriterLock or similar locking semantic. Ce verrou permet l'exécution simultanée de plusieurs lectures d'une table de filtres (par exemple, une opération de correspondance), mais pour écrire dans une table de filtres (par exemple, en ajoutant un filtre), un thread doit attendre un verrou exclusif.This lock allows multiple reads of a filter table (for example, a match operation) to run simultaneously, but in order to write to a filter table (for example, adding a filter), a thread must wait for an exclusive lock.

Toute la compilation est réalisée lorsque les filtres sont ajoutés à la table.All compilation is done when filters are added to the table. Si vous créez une table de filtres à l'avance et que vous ne la modifiez jamais, le verrouillage n'est pas nécessaire au cours d'une correspondance.If you create a filter table in advance, and never edit it, locking is not necessary during a match.