IMessageFilterTable<TFilterData> IMessageFilterTable<TFilterData> IMessageFilterTable<TFilterData> IMessageFilterTable<TFilterData> Interface

Definizione

Un elemento interface che definisce il contratto che deve essere implementato da una tabella dei filtri per controllare i messaggi con i criteri della query che derivano da uno o più filtri.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))

Parametri di tipo

TFilterData

Il tipo di dati associati a tutti i filtri della tabella.The type of data associated with each filter in the table.

Derivato
Implementazioni

Commenti

La tabella dei filtri è un componente principale del motore filtro.The filter table is a core component of the filter engine. L'uso principale del motore filtro in Windows Communication Foundation (WCF) è la corrispondenza per la logica dell'applicazione per i messaggi mediante la ricerca di tutti i filtri che corrispondono a un messaggio.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.

Una tabella dei filtri consente di eseguire la corrispondenza di più filtri con un solo messaggio in modo più efficiente che eseguendola singolarmente.A filter table allows multiple filters to be matched against a single message more efficiently than they can be matched separately. Una tabella dei filtri associa i dati filtro ai filtri.A filter table associates filter data with filters. La tabella è una raccolta di coppie di valori di chiave, dove la chiave è MessageFilter e il valore corrisponde ai dati filtro associati.The table is a collection of key-value pairs, where the key is the MessageFilter, and the value is the associated filter data. I dati filtro possono essere dati del tipo specificato nel parametro generico e possono essere utilizzati per specificare quali azioni intraprendere se un messaggio corrisponde a un filtro nella tabella.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.

È possibile accedere alle voci della tabella dei filtri utilizzando la funzionalità IDictionary<TKey,TValue> che viene ereditata da IMessageFilterTable<TFilterData>.Filter table entries can be accessed using the IDictionary<TKey,TValue> functionality that IMessageFilterTable<TFilterData> inherits.

Si noti che un'istanza del filtro può essere aggiunta solo una volta a un'interfaccia IMessageFilterTable<TFilterData> specificata.Note that a filter instance can only be added to a given IMessageFilterTable<TFilterData> once. Per aggiungere più istanze di questo filtro alla stessa tabella dei filtri, utilizzare un costruttore di filtri per creare istanze aggiuntive.To add multiple instances of this filter to the same filter table, use a filter constructor to create additional instances.

Un filtro corrisponde a un messaggio quando il messaggio soddisfa i criteri della query del filtro.A filter matches a message when the message satisfies the query criteria of the filter. Ci sono quattro metodi di overload di corrispondenza.There are four overloaded matching methods. I dati restituiti sono i dati filtro o gli oggetti MessageFilter stessi.The data returned is either the filter data or the MessageFilter objects themselves. Questi dati vengono restituiti sia se sono consentite più corrispondenze che se ne è consentita solo una.This data is returned whether multiple matches are allowed or only a single match. Nella tabella seguente vengono illustrate queste informazioni per ogni overload.The following table shows this information for each overload.

Nome metodoMethod Name CorrispondenzeMatches Dati restituitiData Returned
GetMatchingValue SingleSingle FilterData
GetMatchingFilter SingleSingle MessageFilter
GetMatchingValues MultipleMultiple FilterData
GetMatchingFilters MultipleMultiple Oggetti MessageFilter.MessageFilter objects

Ogni metodo contiene due overload.Each method contains two overloads. La differenza tra i due overload è che uno accetta un parametro Message e non ha la possibilità di esaminare il contenuto del corpo del messaggio. L'altro accetta un parametro MessageBuffer e ha la possibilità di esaminare qualsiasi parte del messaggio.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. Se si chiama un metodo con il parametro del messaggio e la tabella dei filtri contiene un filtro che esamina il contenuto del corpo del messaggio, viene generata un'eccezione.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. In caso di dubbi sui filtri di una tabella, chiamare l'overload che accetta un buffer dei messaggi.If you are unsure about the filters in a table, call the overload that takes a message buffer.

Le intestazioni del messaggio vengono automaticamente memorizzate nel buffer e possono essere controllate da un filtro senza essere utilizzate.Message headers are automatically buffered and can be inspected by a filter without being consumed. Se il corpo deve essere controllato da un filtro, allora l'intero messaggio deve essere memorizzato nel buffer perché un corpo del messaggio non memorizzato nel buffer può essere utilizzato da una query e il contenuto può essere eliminato definitivamente.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.

Le seguenti classi implementano l'interfaccia IMessageFilterTable<TFilterData>:The following classes implement IMessageFilterTable<TFilterData>:

Metodi

Add(T) Add(T) Add(T) Add(T)

Aggiunge un elemento a ICollection<T>.Adds an item to the ICollection<T>.

(Inherited from ICollection<T>)
Add(TKey, TValue) Add(TKey, TValue) Add(TKey, TValue) Add(TKey, TValue)

Aggiunge un elemento con la chiave e il valore forniti all'interfaccia IDictionary<TKey,TValue>.Adds an element with the provided key and value to the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)
Clear() Clear() Clear() Clear()

Rimuove tutti gli elementi da ICollection<T>.Removes all items from the ICollection<T>.

(Inherited from ICollection<T>)
Contains(T) Contains(T) Contains(T) Contains(T)

Stabilisce se ICollection<T> contiene un valore specifico.Determines whether the ICollection<T> contains a specific value.

(Inherited from ICollection<T>)
ContainsKey(TKey) ContainsKey(TKey) ContainsKey(TKey) ContainsKey(TKey)

Determina se IDictionary<TKey,TValue> contiene un elemento con la chiave specificata.Determines whether the IDictionary<TKey,TValue> contains an element with the specified key.

(Inherited from IDictionary<TKey,TValue>)
CopyTo(T[], Int32) CopyTo(T[], Int32) CopyTo(T[], Int32) CopyTo(T[], Int32)

Copia gli elementi di ICollection<T> in Array a partire da un particolare indice Array.Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

(Inherited from ICollection<T>)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Restituisce un enumeratore che consente di eseguire l'iterazione di una raccolta.Returns an enumerator that iterates through a collection.

(Inherited from IEnumerable)
GetMatchingFilter(Message, MessageFilter) GetMatchingFilter(Message, MessageFilter) GetMatchingFilter(Message, MessageFilter) GetMatchingFilter(Message, MessageFilter)

Restituisce un valore che indica se il criterio di corrispondenza di un filtro della tabella viene soddisfatto dal messaggio specificato e restituisce quel filtro in un parametro 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) GetMatchingFilter(MessageBuffer, MessageFilter) GetMatchingFilter(MessageBuffer, MessageFilter) GetMatchingFilter(MessageBuffer, MessageFilter)

Restituisce un valore che indica se il criterio di corrispondenza di un filtro della tabella viene soddisfatto dal messaggio specificato o dal messaggio memorizzato nel buffer e restituisce quel filtro in un parametro 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>) GetMatchingFilters(Message, ICollection<MessageFilter>) GetMatchingFilters(Message, ICollection<MessageFilter>) GetMatchingFilters(Message, ICollection<MessageFilter>)

Restituisce un valore che indica se il criterio di corrispondenza di un filtro della tabella viene soddisfatto dal messaggio specificato e aggiunge i filtri corrispondenti alla raccolta.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>) GetMatchingFilters(MessageBuffer, ICollection<MessageFilter>) GetMatchingFilters(MessageBuffer, ICollection<MessageFilter>) GetMatchingFilters(MessageBuffer, ICollection<MessageFilter>)

Restituisce un valore che indica se il criterio di corrispondenza di un filtro della tabella viene soddisfatto dal messaggio memorizzato nel buffer e aggiunge i filtri corrispondenti alla raccolta.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) GetMatchingValue(Message, TFilterData) GetMatchingValue(Message, TFilterData) GetMatchingValue(Message, TFilterData)

Restituisce un valore che indica se il criterio di corrispondenza di un filtro della tabella viene soddisfatto dal messaggio specifico e aggiunge i dati filtro corrispondenti alla raccolta.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) GetMatchingValue(MessageBuffer, TFilterData) GetMatchingValue(MessageBuffer, TFilterData) GetMatchingValue(MessageBuffer, TFilterData)

Restituisce un valore che indica se il criterio di corrispondenza di un filtro della tabella viene soddisfatto dal messaggio memorizzato nel buffer specificato e aggiunge i dati filtro corrispondenti a una raccolta.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>) GetMatchingValues(Message, ICollection<TFilterData>) GetMatchingValues(Message, ICollection<TFilterData>) GetMatchingValues(Message, ICollection<TFilterData>)

Restituisce un valore che indica se il criterio di corrispondenza di almeno un filtro della tabella viene soddisfatto dal messaggio specificato e aggiunge i FilterData dei filtri corrispondenti a una raccolta.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>) GetMatchingValues(MessageBuffer, ICollection<TFilterData>) GetMatchingValues(MessageBuffer, ICollection<TFilterData>) GetMatchingValues(MessageBuffer, ICollection<TFilterData>)

Restituisce un valore che indica se il criterio di corrispondenza di almeno un filtro della tabella viene soddisfatto dal messaggio memorizzato nel buffer specificato e aggiunge i FilterData dei filtri corrispondenti a una raccolta.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) Remove(TKey) Remove(TKey) Remove(TKey)

Rimuove l'elemento con la chiave specificata da IDictionary<TKey,TValue>.Removes the element with the specified key from the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)
TryGetValue(TKey, TValue) TryGetValue(TKey, TValue) TryGetValue(TKey, TValue) TryGetValue(TKey, TValue)

Ottiene il valore associato alla chiave specificata.Gets the value associated with the specified key.

(Inherited from IDictionary<TKey,TValue>)

Proprietà

Count Count Count Count

Ottiene il numero di elementi contenuti in ICollection<T>.Gets the number of elements contained in the ICollection<T>.

(Inherited from ICollection<T>)
IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Ottiene un valore che indica se ICollection<T> è di sola lettura.Gets a value indicating whether the ICollection<T> is read-only.

(Inherited from ICollection<T>)
Item[TKey] Item[TKey] Item[TKey] Item[TKey]

Ottiene o imposta l'elemento con la chiave specificata.Gets or sets the element with the specified key.

(Inherited from IDictionary<TKey,TValue>)
Keys Keys Keys Keys

Ottiene ICollection<T> contenente le chiavi di IDictionary<TKey,TValue>.Gets an ICollection<T> containing the keys of the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)
Values Values Values Values

Ottiene ICollection<T> contenente i valori in IDictionary<TKey,TValue>.Gets an ICollection<T> containing the values in the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)

Extension Methods

CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>)

Restituisce un DataTable che contiene copie del DataRow oggetti, dato un input IEnumerable<T> oggetto in cui il parametro generico T è 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) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Le copie DataRow oggetti specificata DataTable, un giudizio IEnumerable<T> oggetto in cui il parametro generico T è 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) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Le copie DataRow oggetti specificata DataTable, un giudizio IEnumerable<T> oggetto in cui il parametro generico T è DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Consente la parallelizzazione di una query.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Converte un' IEnumerable a un IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene i predecessori di ciascun nodo nella raccolta di origine.Returns a collection of elements that contains the ancestors of every node in the source collection.

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

Restituisce una raccolta di elementi filtrati che contiene i predecessori di ciascun nodo nella raccolta di origine.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>)

Restituisce una raccolta di nodi discendenti di ciascun documento ed elemento nella raccolta di origine.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

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

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>)

Restituisce una raccolta di elementi figlio di ciascun elemento e documento nella raccolta di origine.Returns a collection of the child elements of every element and document in the source collection.

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

Restituisce una raccolta filtrata degli elementi figlio di ciascun elemento e documento nella raccolta di origine.Returns a filtered collection of the child elements of every element and document in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>)

Restituisce una raccolta di nodi che contiene tutti i nodi nella raccolta di origine ordinati in base all'ordine con cui sono riportati nel documento.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>)

Restituisce una raccolta di nodi figlio di ciascun documento ed elemento nella raccolta di origine.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>)

Rimuove ciascun nodo nella raccolta di origine dal nodo padre.Removes every node in the source collection from its parent node.

Si applica a

Thread safety

Le tabelle dei filtri sono thread-safe in relazione alle operazioni di corrispondenza, ma non lo sono rispetto alle modifiche.Filter tables are thread-safe with respect to matching operations, but are not thread-safe with respect to modification. I thread che accedono a una tabella dei filtri devono essere sincronizzati da ReaderWriterLock o da una semantica di blocco simile.Threads that access a filter table should be synchronized by the ReaderWriterLock or similar locking semantic. Questo blocco consente più letture in contemporanea di una tabella dei filtri (ad esempio, un'operazione di corrispondenza), ma perché un thread possa scrivere su una tabella dei filtri (ad esempio, aggiungendo un filtro) è necessario che sia presente un blocco esclusivo.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.

Tutta la compilazione viene eseguita quando i filtri vengono aggiunti alla tabella.All compilation is done when filters are added to the table. Se si crea una tabella dei filtri in anticipo e non la si modifica mai, non è necessario bloccarla durante una corrispondenza.If you create a filter table in advance, and never edit it, locking is not necessary during a match.