IMessageFilterTable<TFilterData> Interfejs

Definicja

interface Definiuje kontrakt, który musi być wdrożona przez tabelę filtru w celu sprawdzenia komunikatów z kryteriami kwerendy pochodzącymi z jednego lub wielu filtrów.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))

Parametry typu

TFilterData

Typ danych skojarzonych z każdym filtrem w tabeli.The type of data associated with each filter in the table.

Pochodne
Implementuje

Uwagi

Tabela filtrów jest głównym składnikiem aparatu filtrów.The filter table is a core component of the filter engine. Podstawowym użyciem aparatu filtrów w Windows Communication Foundation (WCF) jest dopasowanie logiki aplikacji do komunikatów przez znalezienie wszystkich filtrów zgodnych z komunikatem.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.

Tabela filtrów pozwala dopasować wiele filtrów do jednego komunikatu bardziej wydajnie, niż można je dopasować osobno.A filter table allows multiple filters to be matched against a single message more efficiently than they can be matched separately. Tabela filtrów kojarzy dane filtru z filtrami.A filter table associates filter data with filters. Tabela jest kolekcją par klucz-wartość, gdzie klucz jest MessageFilter, a wartość jest skojarzonymi danymi filtru.The table is a collection of key-value pairs, where the key is the MessageFilter, and the value is the associated filter data. Dane filtru mogą być dowolnymi danymi typu określonego w parametrze ogólnym i mogą służyć do określania, jakie akcje należy wykonać, jeśli komunikat jest dopasowywany przez filtr w tabeli.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.

Dostęp do IDictionary<TKey,TValue> wpisów tabeli filtrów można uzyskać przy użyciu funkcji IMessageFilterTable<TFilterData> , która dziedziczy.Filter table entries can be accessed using the IDictionary<TKey,TValue> functionality that IMessageFilterTable<TFilterData> inherits.

Należy zauważyć, że wystąpienie filtru może być dodane IMessageFilterTable<TFilterData> tylko raz.Note that a filter instance can only be added to a given IMessageFilterTable<TFilterData> once. Aby dodać wiele wystąpień tego filtru do tej samej tabeli filtrów, użyj konstruktora filtru, aby utworzyć dodatkowe wystąpienia.To add multiple instances of this filter to the same filter table, use a filter constructor to create additional instances.

Filtr dopasowuje komunikat, gdy komunikat spełnia kryteria zapytania filtru.A filter matches a message when the message satisfies the query criteria of the filter. Istnieją cztery przeciążone metody dopasowywania.There are four overloaded matching methods. Zwracane dane to dane filtru lub MessageFilter same obiekty.The data returned is either the filter data or the MessageFilter objects themselves. Te dane są zwracane niezależnie od tego, czy wiele dopasowań jest dozwolonych, czy tylko jednego dopasowania.This data is returned whether multiple matches are allowed or only a single match. W poniższej tabeli przedstawiono te informacje dotyczące każdego przeciążenia.The following table shows this information for each overload.

Nazwa metodyMethod Name DopasowaniaMatches Zwrócone daneData Returned
GetMatchingValue SingleSingle FilterData
GetMatchingFilter SingleSingle MessageFilter
GetMatchingValues WielokrotneMultiple FilterData
GetMatchingFilters WielokrotneMultiple MessageFilterelementyMessageFilter objects

Każda metoda zawiera dwa przeciążenia.Each method contains two overloads. Różnica między dwoma przeciążeniami polega na tym, że jeden Message pobiera parametr i nie może przeanalizować zawartości treści, a druga MessageBuffer przyjmuje parametr i może analizować każdą część komunikatu.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. W przypadku wywołania metody z parametrem Message, a tabela filtrów zawiera filtr, który analizuje zawartość treści wiadomości, zostanie zgłoszony wyjątek.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. Jeśli nie masz pewności co do filtrów w tabeli, wywołaj Przeciążenie, które pobiera bufor komunikatów.If you are unsure about the filters in a table, call the overload that takes a message buffer.

Nagłówki komunikatów są automatycznie buforowane i mogą być sprawdzane przez filtr bez użycia.Message headers are automatically buffered and can be inspected by a filter without being consumed. Jeśli jednak treść ma być sprawdzana przez filtr, cała wiadomość musi być buforowana, ponieważ niebuforowana treść komunikatu jest używana przez zapytanie i jego zawartość została zniszczona.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.

Następujące klasy implementują IMessageFilterTable<TFilterData>:The following classes implement IMessageFilterTable<TFilterData>:

Właściwości

Count

Pobiera liczbę elementów zawartych w słowniku ICollection<T>.Gets the number of elements contained in the ICollection<T>.

(Odziedziczone po ICollection<T>)
IsReadOnly

Pobiera wartość wskazującą, czy kolekcja ICollection<T> jest przeznaczona tylko do odczytu.Gets a value indicating whether the ICollection<T> is read-only.

(Odziedziczone po ICollection<T>)
Item[TKey]

Pobiera lub ustawia element z określonym kluczem.Gets or sets the element with the specified key.

(Odziedziczone po IDictionary<TKey,TValue>)
Keys

Pobiera ICollection<T> zawierający klucze IDictionary<TKey,TValue>.Gets an ICollection<T> containing the keys of the IDictionary<TKey,TValue>.

(Odziedziczone po IDictionary<TKey,TValue>)
Values

Pobiera ICollection<T> zawierający wartości z IDictionary<TKey,TValue>.Gets an ICollection<T> containing the values in the IDictionary<TKey,TValue>.

(Odziedziczone po IDictionary<TKey,TValue>)

Metody

Add(T)

Dodaje element do ICollection<T>.Adds an item to the ICollection<T>.

(Odziedziczone po ICollection<T>)
Add(TKey, TValue)

Dodaje element o podanym kluczu i wartości do IDictionary<TKey,TValue>.Adds an element with the provided key and value to the IDictionary<TKey,TValue>.

(Odziedziczone po IDictionary<TKey,TValue>)
Clear()

Usuwa wszystkie elementy z ICollection<T>.Removes all items from the ICollection<T>.

(Odziedziczone po ICollection<T>)
Contains(T)

Określa, czy ICollection<T> zawiera konkretną wartość.Determines whether the ICollection<T> contains a specific value.

(Odziedziczone po ICollection<T>)
ContainsKey(TKey)

Określa, czy IDictionary<TKey,TValue> zawiera element z określonym kluczem.Determines whether the IDictionary<TKey,TValue> contains an element with the specified key.

(Odziedziczone po IDictionary<TKey,TValue>)
CopyTo(T[], Int32)

Kopiuje elementy ICollection<T> do Array, rozpoczynając od określonego indeksu Array.Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

(Odziedziczone po ICollection<T>)
GetEnumerator()

Zwraca moduł wyliczający, który dokonuje iteracji w kolekcji.Returns an enumerator that iterates through a collection.

(Odziedziczone po IEnumerable)
GetMatchingFilter(Message, MessageFilter)

Zwraca wartość wskazującą, czy kryterium dopasowywania dokładnie jednego filtru w tabeli jest spełnione przez określony komunikat, i zwraca ten filtr do out parametru.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)

Zwraca wartość wskazującą, czy kryterium dopasowywania dokładnie jednego filtru w tabeli jest spełnione przez określony komunikat lub buforowany komunikat, i zwraca ten filtr do out parametru.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>)

Zwraca wartość wskazującą, czy kryterium dopasowania filtru w tabeli jest spełnione przez określony komunikat, i dodaje dopasowania filtrów do kolekcji.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>)

Zwraca wartość wskazującą, czy kryterium dopasowania filtru w tabeli jest spełnione przez określony buforowany komunikat i dodaje dopasowania filtrów do kolekcji.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)

Zwraca wartość wskazującą, czy kryterium dopasowywania dokładnie jednego filtru w tabeli jest spełnione przez określony komunikat i dodaje do kolekcji pasujące dane filtru.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)

Zwraca wartość wskazującą, czy kryterium dopasowywania dokładnie jednego filtru w tabeli jest spełnione przez określony buforowany komunikat i dodaje do kolekcji pasujące dane filtru.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>)

Zwraca wartość wskazującą, czy kryterium dopasowywania co najmniej jednego filtru w tabeli jest spełnione przez określony komunikat i dodaje FilterData do kolekcji pasujące filtry.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>)

Zwraca wartość wskazującą, czy kryterium dopasowywania co najmniej jednego filtru w tabeli jest spełnione przez określony buforowany komunikat i dodaje FilterData do kolekcji pasujące filtry.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)

Usuwa element z określonym kluczem z IDictionary<TKey,TValue>.Removes the element with the specified key from the IDictionary<TKey,TValue>.

(Odziedziczone po IDictionary<TKey,TValue>)
TryGetValue(TKey, TValue)

Pobiera wartość skojarzoną z określonym kluczem.Gets the value associated with the specified key.

(Odziedziczone po IDictionary<TKey,TValue>)

Metody rozszerzania

CopyToDataTable<T>(IEnumerable<T>)

Zwraca DataTable, który zawiera kopie obiektów DataRow, przy użyciu obiektu wejściowego IEnumerable<T>, gdzie T parametru generycznego jest 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)

Kopiuje DataRow obiektów do określonego DataTable, używając obiektu wejściowego IEnumerable<T>, gdzie T parametru generycznego jest 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)

Kopiuje DataRow obiektów do określonego DataTable, używając obiektu wejściowego IEnumerable<T>, gdzie T parametru generycznego jest DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable)

Rzutuje elementy IEnumerable określonego typu.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable w oparciu o określony typ.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Włącza przetwarzanie równoległe zapytania.Enables parallelization of a query.

AsQueryable(IEnumerable)

Konwertuje IEnumerable na IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

Zwraca kolekcję elementów, które zawierają elementy nadrzędne każdego węzła w kolekcji źródłowej.Returns a collection of elements that contains the ancestors of every node in the source collection.

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

Zwraca przefiltrowany kolekcji elementów, które zawierają elementy nadrzędne każdego węzła w kolekcji źródłowej.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Kolekcja zawiera tylko elementy, które mają pasujące XName.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

Zwraca kolekcję węzłów podrzędnych każdego dokumentu i elementu w kolekcji źródłowej.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

Zwraca kolekcję elementów, które zawierają elementy podrzędne każdego elementu i dokumentu w kolekcji źródłowej.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

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

Zwraca przefiltrowany kolekcji elementów, które zawierają elementy podrzędne każdego elementu i dokumentu w kolekcji źródłowej.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Kolekcja zawiera tylko elementy, które mają pasujące XName.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

Zwraca kolekcję elementów podrzędnych każdego elementu i dokumentu w kolekcji źródłowej.Returns a collection of the child elements of every element and document in the source collection.

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

Zwraca filtrowaną kolekcję elementów podrzędnych każdego elementu i dokumentu w kolekcji źródłowej.Returns a filtered collection of the child elements of every element and document in the source collection. Kolekcja zawiera tylko elementy, które mają pasujące XName.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

Zwraca kolekcję węzłów, która zawiera wszystkie węzły w kolekcji źródłowej, posortowane w kolejności dokumentu.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

Zwraca kolekcję węzłów podrzędnych każdego dokumentu i elementu w kolekcji źródłowej.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

Usuwa każdy węzeł w kolekcji źródłowej z węzła nadrzędnego.Removes every node in the source collection from its parent node.

Dotyczy

Bezpieczeństwo wątkowe

Tabele filtrów są bezpieczne dla wątków w odniesieniu do pasujących operacji, ale nie są bezpieczne wątkowo w związku z modyfikacją.Filter tables are thread-safe with respect to matching operations, but are not thread-safe with respect to modification. Wątki, które uzyskują dostęp do tabeli filtrów, powinny ReaderWriterLock być synchronizowane przez lub podobną semantyką blokującą.Threads that access a filter table should be synchronized by the ReaderWriterLock or similar locking semantic. Ta blokada umożliwia jednoczesne uruchamianie wielu odczytów tabeli filtrów (na przykład operacji dopasowania), ale w celu zapisu w tabeli filtrów (na przykład dodawania filtru) wątek musi oczekiwać na wyłączną blokadę.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.

Cała kompilacja jest wykonywana po dodaniu filtrów do tabeli.All compilation is done when filters are added to the table. Jeśli utworzysz tabelę filtru z góry, a nigdy nie edytujesz jej, blokowanie nie jest konieczne podczas dopasowywania.If you create a filter table in advance, and never edit it, locking is not necessary during a match.