IMessageFilterTable<TFilterData> Interfaz

Definición

interface que define el contrato que una tabla de filtros debe implementar para inspeccionar mensajes con criterios de consulta derivados de uno o varios 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

Tipo de datos asociado a cada filtro de la tabla.The type of data associated with each filter in the table.

Derivado
Implementaciones

Comentarios

La tabla de filtros es un componente esencial del motor del filtros.The filter table is a core component of the filter engine. El uso principal del motor de filtro en Windows Communication Foundation (WCF) es hacer coincidir la lógica de la aplicación con los mensajes buscando todos los filtros que coinciden con un mensaje.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 tabla de filtros permite comparar varios filtros con un único mensaje con más eficacia que si se comparan por separado.A filter table allows multiple filters to be matched against a single message more efficiently than they can be matched separately. Una tabla de filtros asocia datos de filtro a los filtros.A filter table associates filter data with filters. La tabla es una colección de pares clave-valor, donde la clave es MessageFilter y el valor son los datos asociados al filtro.The table is a collection of key-value pairs, where the key is the MessageFilter, and the value is the associated filter data. Los datos de filtro pueden ser cualquier dato del tipo especificado en el parámetro genérico y se pueden utilizar para especificar qué acciones emprender si un mensaje coincide con un filtro de la tabla.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.

Se puede tener acceso a las entradas de tabla de filtros utilizando la funcionalidad IDictionary<TKey,TValue> que IMessageFilterTable<TFilterData> hereda.Filter table entries can be accessed using the IDictionary<TKey,TValue> functionality that IMessageFilterTable<TFilterData> inherits.

Tenga en cuenta que una instancia de filtro sólo se puede agregar una vez a un objeto IMessageFilterTable<TFilterData> determinado.Note that a filter instance can only be added to a given IMessageFilterTable<TFilterData> once. Para agregar varias instancias de este filtro a la misma tabla de filtros, utilice un constructor de filtros para crear instancias adicionales.To add multiple instances of this filter to the same filter table, use a filter constructor to create additional instances.

Un filtro coincide con un mensaje cuando el mensaje cumple los criterios de búsqueda del filtro.A filter matches a message when the message satisfies the query criteria of the filter. Hay cuatro métodos de coincidencia sobrecargados.There are four overloaded matching methods. Los datos devueltos son los datos del filtro o los propios objetos MessageFilter.The data returned is either the filter data or the MessageFilter objects themselves. Se devuelven estos datos tanto si se permiten varias coincidencias como si sólo se permite una.This data is returned whether multiple matches are allowed or only a single match. En la tabla siguiente, se muestra esta información para cada sobrecarga.The following table shows this information for each overload.

Nombre del métodoMethod Name CoincidenciasMatches Datos devueltosData Returned
GetMatchingValue SingleSingle FilterData
GetMatchingFilter SingleSingle MessageFilter
GetMatchingValues MúltipleMultiple FilterData
GetMatchingFilters MúltipleMultiple Objetos MessageFilter.MessageFilter objects

Cada método contiene dos sobrecargas.Each method contains two overloads. La diferencia entre las dos sobrecargas es que una toma un parámetro Message y no puede examinar el cuerpo del mensaje, mientras que la otra toma un parámetro MessageBuffer y puede examinar cualquier parte del mensaje.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 llama a un método con el parámetro de mensaje, y la tabla de filtros contiene un filtro que examina el contenido del cuerpo del mensaje, se inicia una excepción.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 no está seguro sobre los filtros de una tabla, llame a la sobrecarga que toma un búfer de mensajes.If you are unsure about the filters in a table, call the overload that takes a message buffer.

Los encabezados de mensaje se almacenan en búfer automáticamente y un filtro puede inspeccionarlos sin utilizarse.Message headers are automatically buffered and can be inspected by a filter without being consumed. Pero si un filtro debe inspeccionar el cuerpo del mensaje, el mensaje completo debe estar almacenado en búfer porque el cuerpo de mensaje sin almacenar en búfer es utilizado por una consulta, y su contenido se destruye.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.

Las clases siguientes implementan IMessageFilterTable<TFilterData>:The following classes implement IMessageFilterTable<TFilterData>:

Propiedades

Count

Obtiene el número de elementos incluidos en ICollection<T>.Gets the number of elements contained in the ICollection<T>.

(Heredado de ICollection<T>)
IsReadOnly

Obtiene un valor que indica si ICollection<T> es de solo lectura.Gets a value indicating whether the ICollection<T> is read-only.

(Heredado de ICollection<T>)
Item[TKey]

Obtiene o establece el elemento con la clave especificada.Gets or sets the element with the specified key.

(Heredado de IDictionary<TKey,TValue>)
Keys

Obtiene una interfaz ICollection<T> que contiene las claves de la interfaz IDictionary<TKey,TValue>.Gets an ICollection<T> containing the keys of the IDictionary<TKey,TValue>.

(Heredado de IDictionary<TKey,TValue>)
Values

Obtiene una interfaz ICollection<T> que contiene los valores de la interfaz IDictionary<TKey,TValue>.Gets an ICollection<T> containing the values in the IDictionary<TKey,TValue>.

(Heredado de IDictionary<TKey,TValue>)

Métodos

Add(T)

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

(Heredado de ICollection<T>)
Add(TKey, TValue)

Agrega un elemento con la clave y el valor proporcionados a IDictionary<TKey,TValue>.Adds an element with the provided key and value to the IDictionary<TKey,TValue>.

(Heredado de IDictionary<TKey,TValue>)
Clear()

Quita todos los elementos de ICollection<T>.Removes all items from the ICollection<T>.

(Heredado de ICollection<T>)
Contains(T)

Determina si ICollection<T> contiene un valor específico.Determines whether the ICollection<T> contains a specific value.

(Heredado de ICollection<T>)
ContainsKey(TKey)

Determina si IDictionary<TKey,TValue> contiene un elemento con la clave especificada.Determines whether the IDictionary<TKey,TValue> contains an element with the specified key.

(Heredado de IDictionary<TKey,TValue>)
CopyTo(T[], Int32)

Copia los elementos de ICollection<T> en Array, empezando por un índice determinado de Array.Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

(Heredado de ICollection<T>)
GetEnumerator()

Devuelve un enumerador que itera una colección.Returns an enumerator that iterates through a collection.

(Heredado de IEnumerable)
GetMatchingFilter(Message, MessageFilter)

Devuelve un valor que indica si el mensaje especificado satisface los criterios de coincidencia de exactamente un filtro de la tabla, y devuelve dicho filtro en un 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)

Devuelve un valor que indica si el mensaje o el mensaje almacenado en búfer especificado satisface los criterios de coincidencia de exactamente un filtro de la tabla, y devuelve dicho filtro en un 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>)

Devuelve un valor que indica si el mensaje especificado satisface los criterios de coincidencia de un filtro de la tabla, y agrega los filtros correspondientes a una colección.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>)

Devuelve un valor que indica si el mensaje almacenado en búfer especificado satisface los criterios de coincidencia de un filtro de la tabla, y agrega los filtros correspondientes a una colección.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)

Devuelve un valor que indica si el mensaje especificado satisface los criterios de coincidencia de exactamente un filtro de la tabla y agrega los datos del filtro coincidente a una colección.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)

Devuelve un valor que indica si el mensaje almacenado en búfer especificado satisface los criterios de coincidencia de exactamente un filtro de la tabla y agrega los datos del filtro coincidentes a una colección.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>)

Devuelve un valor que indica si el mensaje almacenado especificado satisface los criterios de coincidencia de al menos un filtro de la tabla, y agrega los FilterData de los filtros correspondientes a una colección.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>)

Devuelve un valor que indica si el mensaje almacenado en búfer especificado satisface los criterios de coincidencia de al menos un filtro de la tabla, y agrega los FilterData de los filtros correspondientes a una colección.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)

Quita el elemento con la clave especificada de IDictionary<TKey,TValue>.Removes the element with the specified key from the IDictionary<TKey,TValue>.

(Heredado de IDictionary<TKey,TValue>)
TryGetValue(TKey, TValue)

Obtiene el valor asociado a la clave especificada.Gets the value associated with the specified key.

(Heredado de IDictionary<TKey,TValue>)

Métodos de extensión

CopyToDataTable<T>(IEnumerable<T>)

Devuelve un objeto DataTable que contiene copias de los objetos DataRow, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es 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)

Copia objetos DataRow en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es 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)

Copia objetos DataRow en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.Enables parallelization of a query.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

Devuelve una colección de elementos que contiene los antecesores de todos los nodos de la colección de origen.Returns a collection of elements that contains the ancestors of every node in the source collection.

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

Devuelve una colección de elementos filtrada que contiene los antecesores de todos los nodos de la colección de origen.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

Devuelve una colección de los nodos descendientes de todos los documentos y elementos de la colección de origen.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

Devuelve una colección de elementos que contiene los elementos descendientes de todos los elementos y documentos de la colección de origen.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

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

Devuelve una colección filtrada de elementos que contiene los elementos descendientes de todos los elementos y documentos de la colección de origen.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

Devuelve una colección de los elementos secundarios de todos los elementos y documentos de la colección de origen.Returns a collection of the child elements of every element and document in the source collection.

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

Devuelve una colección filtrada de los elementos secundarios de todos los elementos y documentos de la colección de origen.Returns a filtered collection of the child elements of every element and document in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

Devuelve una colección de nodos que contiene todos los nodos de la colección de origen, clasificados por documento.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

Devuelve una colección de los nodos secundarios de todos los documentos y elementos de la colección de origen.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

Quita todos los nodos de la colección de origen de su nodo primario.Removes every node in the source collection from its parent node.

Se aplica a

Seguridad para subprocesos

Las tablas de filtros son seguras para la realización de subprocesos con respecto operaciones de coincidencias, pero no son seguras para la realización de subprocesos con respecto a la modificación.Filter tables are thread-safe with respect to matching operations, but are not thread-safe with respect to modification. Los subprocesos que pueden tener acceso a una tabla de filtros se deben sincronizar mediante ReaderWriterLock u otra semántica de bloqueo similar.Threads that access a filter table should be synchronized by the ReaderWriterLock or similar locking semantic. Este bloqueo permite que varias lecturas de una tabla de filtros (por ejemplo, una operación de coincidencia) se ejecuten simultáneamente, pero para escribir en una tabla de filtros (por ejemplo, agregando un filtro), un subproceso debe esperar a un bloqueo 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 la compilación se realiza cuando se agregan filtros a la tabla.All compilation is done when filters are added to the table. Si crea de antemano una tabla de filtros, y nunca la modifica, el bloqueo no es necesario durante una coincidencia.If you create a filter table in advance, and never edit it, locking is not necessary during a match.