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

Definição

Um interface que define o contrato que uma tabela de filtros deve implementar para inspecionar mensagens com critérios de consulta derivados de um ou mais filtros.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))

Parâmetros de tipo

TFilterData

O tipo de dados associado a cada filtro na tabela.The type of data associated with each filter in the table.

Derivado
Implementações

Comentários

A tabela de filtros é um componente principal do mecanismo de filtro.The filter table is a core component of the filter engine. O uso principal do mecanismo de filtro no Windows Communication Foundation (WCF) é corresponder a lógica do aplicativo às mensagens localizando todos os filtros que correspondam a uma mensagem.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.

Uma tabela de filtro permite que vários filtros sejam correspondidos em uma única mensagem com mais eficiência do que podem ser correspondidos separadamente.A filter table allows multiple filters to be matched against a single message more efficiently than they can be matched separately. Uma tabela de filtro associa dados de filtro a filtros.A filter table associates filter data with filters. A tabela é uma coleção de pares chave-valor, onde a chave é o MessageFiltere o valor são os dados de filtro associados.The table is a collection of key-value pairs, where the key is the MessageFilter, and the value is the associated filter data. Os dados de filtro podem ser qualquer dado do tipo especificado no parâmetro genérico e podem ser usados para especificar quais ações executar se uma mensagem for correspondida por um filtro na tabela.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.

As entradas de tabela de filtro podem ser IDictionary<TKey,TValue> acessadas usando a funcionalidade que IMessageFilterTable<TFilterData> o herda.Filter table entries can be accessed using the IDictionary<TKey,TValue> functionality that IMessageFilterTable<TFilterData> inherits.

Observe que uma instância de filtro só pode ser adicionada a uma IMessageFilterTable<TFilterData> determinada vez.Note that a filter instance can only be added to a given IMessageFilterTable<TFilterData> once. Para adicionar várias instâncias desse filtro à mesma tabela de filtros, use um construtor de filtro para criar instâncias adicionais.To add multiple instances of this filter to the same filter table, use a filter constructor to create additional instances.

Um filtro corresponde a uma mensagem quando a mensagem atende aos critérios de consulta do filtro.A filter matches a message when the message satisfies the query criteria of the filter. Há quatro métodos de correspondência sobrecarregados.There are four overloaded matching methods. Os dados retornados são os dados de filtro ou os MessageFilter próprios objetos.The data returned is either the filter data or the MessageFilter objects themselves. Esses dados são retornados se várias correspondências forem permitidas ou apenas uma única correspondência.This data is returned whether multiple matches are allowed or only a single match. A tabela a seguir mostra essas informações para cada sobrecarga.The following table shows this information for each overload.

Nome do métodoMethod Name CorrespondênciasMatches Dados retornadosData Returned
GetMatchingValue SimplesSingle FilterData
GetMatchingFilter SimplesSingle MessageFilter
GetMatchingValues MúltiploMultiple FilterData
GetMatchingFilters MúltiploMultiple Objetos MessageFilterMessageFilter objects

Cada método contém duas sobrecargas.Each method contains two overloads. A diferença entre as duas sobrecargas é que uma usa um Message parâmetro e não tem permissão para examinar o conteúdo do corpo; o outro usa um MessageBuffer parâmetro e pode examinar qualquer parte da mensagem.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 você chamar um método com o parâmetro Message e a tabela Filter contiver um filtro que examina o conteúdo do corpo da mensagem, uma exceção será lançada.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. Se você não tiver certeza sobre os filtros em uma tabela, chame a sobrecarga que usa um buffer de mensagens.If you are unsure about the filters in a table, call the overload that takes a message buffer.

Os cabeçalhos de mensagem são armazenados em buffer automaticamente e podem ser inspecionados por um filtro sem serem consumidos.Message headers are automatically buffered and can be inspected by a filter without being consumed. Mas se o corpo for inspecionado por um filtro, a mensagem inteira deverá ser armazenada em buffer porque um corpo de mensagem sem buffer é consumido por uma consulta e seu conteúdo destruído.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.

As seguintes classes implementam IMessageFilterTable<TFilterData>:The following classes implement IMessageFilterTable<TFilterData>:

Métodos

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

Adiciona um item ao 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)

Adiciona um elemento com a chave fornecida e o valor para o 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()

Remove todos os itens do ICollection<T>.Removes all items from the ICollection<T>.

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

Determinará se o ICollection<T> contiver um valor específico.Determines whether the ICollection<T> contains a specific value.

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

Determina se o IDictionary<TKey,TValue> contém um elemento com a chave especificada.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 os elementos do ICollection<T> para um Array, começando em um determinado índice 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()

Retorna um enumerador que itera em uma coleção.Returns an enumerator that iterates through a collection.

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

Retorna um valor que indica se o critério de correspondência de exatamente um filtro na tabela é atendido pela mensagem especificada e retorna esse filtro em um parâmetro 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)

Retorna um valor que indica se o critério de correspondência de exatamente um filtro na tabela é atendido pela mensagem especificada ou pela mensagem armazenada em buffer e retorna esse filtro em um parâmetro 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>)

Retorna um valor que indica se o critério de correspondência de um filtro na tabela é atendido pela mensagem especificada e adiciona os filtros correspondentes a uma coleção.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>)

Retorna um valor que indica se o critério de correspondência de um filtro na tabela é atendido pela mensagem armazenada em buffer especificada e adiciona os filtros correspondentes a uma coleção.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)

Retorna um valor que indica se o critério de correspondência de exatamente um filtro na tabela é atendido pela mensagem especificada e adiciona os dados do filtro correspondente a uma coleção.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)

Retorna um valor que indica se o critério de correspondência de exatamente um filtro na tabela é atendido pela mensagem em buffer especificada e adiciona os dados do filtro correspondente a uma coleção.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>)

Retorna um valor que indica se o critério de correspondência de pelo menos um filtro na tabela é atendido pela mensagem especificada e adiciona o FilterData dos filtros correspondentes a uma coleção.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>)

Retorna um valor que indica se o critério de correspondência de pelo menos um filtro na tabela é atendido pela mensagem armazenada em buffer especificada e adiciona o FilterData dos filtros correspondentes a uma coleção.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)

Remove o elemento com a chave especificada do 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)

Obtém o valor associado à chave especificada.Gets the value associated with the specified key.

(Inherited from IDictionary<TKey,TValue>)

Propriedades

Count Count Count Count

Obtém o número de elementos contidos no ICollection<T>.Gets the number of elements contained in the ICollection<T>.

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

Obtém um valor que indica se o ICollection<T> é somente leitura.Gets a value indicating whether the ICollection<T> is read-only.

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

Obtém ou define o elemento com a chave especificada.Gets or sets the element with the specified key.

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

Obtém um ICollection<T> que contém as chaves do IDictionary<TKey,TValue>.Gets an ICollection<T> containing the keys of the IDictionary<TKey,TValue>.

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

Obtém um ICollection<T> que contém os valores no IDictionary<TKey,TValue>.Gets an ICollection<T> containing the values in the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)

Métodos de Extensão

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

Retorna um DataTable que contém cópias dos objetos DataRow, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico 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)

Copia objetos DataRow no DataTable especificado, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico 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)

Copia objetos DataRow no DataTable especificado, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico 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)

Converte os elementos de um IEnumerable para o tipo especificado.Casts the elements of an IEnumerable to the specified type.

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

Filtra os elementos de um IEnumerable com base em um tipo especificado.Filters the elements of an IEnumerable based on a specified type.

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

Habilita a paralelização de uma consulta.Enables parallelization of a query.

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

Converte um IEnumerable em um IQueryable.Converts an IEnumerable to an IQueryable.

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

Retorna uma coleção de elementos que contém os ancestrais de cada nó na coleção de origem.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)

Retorna uma coleção filtrada de elementos que contém os ancestrais de cada nó na coleção de origem.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Somente os elementos que têm um XName correspondente são incluídos na coleção.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>)

Retorna uma coleção dos nós descendentes de todos os documentos e elementos na coleção de origem.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>)

Retorna uma coleção de elementos que contém os elementos descendentes de cada elemento e o documento na coleção de origem.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)

Retorna uma coleção filtrada de elementos que contém os elementos descendentes de cada elemento e o documento na coleção de origem.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Somente os elementos que têm um XName correspondente são incluídos na coleção.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>)

Retorna uma coleção dos filhos elementos de cada elemento e o documento na coleção de origem.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)

Retorna uma coleção filtrada dos elementos filho de cada elemento e documento na coleção de origem.Returns a filtered collection of the child elements of every element and document in the source collection. Somente os elementos que têm um XName correspondente são incluídos na coleção.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>)

Retorna uma coleção de nós que contém todos os nós na coleção de origem, classificados em ordem segundo o 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>)

Retorna uma coleção dos nós filhos de todos os documentos e elementos na coleção de origem.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>)

Remove todos os nós na coleção de origem do respectivo nó pai.Removes every node in the source collection from its parent node.

Aplica-se a

Acesso thread-safe

As tabelas de filtro são thread-safe em relação às operações de correspondência, mas não são thread-safe em relação à modificação.Filter tables are thread-safe with respect to matching operations, but are not thread-safe with respect to modification. Os threads que acessam uma tabela de filtro ReaderWriterLock devem ser sincronizados pelo ou por semântica de bloqueio semelhante.Threads that access a filter table should be synchronized by the ReaderWriterLock or similar locking semantic. Esse bloqueio permite que várias leituras de uma tabela de filtro (por exemplo, uma operação de correspondência) sejam executadas simultaneamente, mas para gravar em uma tabela de filtro (por exemplo, adicionar um filtro), um thread deve aguardar um bloqueio exclusivo.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.

Toda a compilação é feita quando os filtros são adicionados à tabela.All compilation is done when filters are added to the table. Se você criar uma tabela de filtro com antecedência e nunca editá-la, o bloqueio não será necessário durante uma correspondência.If you create a filter table in advance, and never edit it, locking is not necessary during a match.