IMessageFilterTable<TFilterData> 인터페이스

정의

하나 이상의 필터에서 파생된 쿼리 기준에 따라 메시지를 검사하기 위해 필터 테이블에서 구현해야 하는 계약을 정의하는 interface입니다.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))

형식 매개 변수

TFilterData

테이블에서 각 필터에 연결된 데이터 형식입니다.The type of data associated with each filter in the table.

파생
구현

설명

필터 테이블은 필터 엔진의 핵심 구성 요소입니다.The filter table is a core component of the filter engine. 메시지와 일치 하는 모든 필터를 검색 하 여 애플리케이션 논리를 메시지와 일치 하는 데 Windows Communication Foundation (WCF)에서 필터 엔진의 기본 사용이 됩니다.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.

필터 테이블을 사용하면 여러 필터를 개별적으로 일치시킬 때보다 더 효율적으로 단일 메시지에 일치시킬 수 있습니다.A filter table allows multiple filters to be matched against a single message more efficiently than they can be matched separately. 필터 테이블은 필터 데이터를 필터에 연결합니다.A filter table associates filter data with filters. 이 테이블은 키/값 쌍의 컬렉션이며, 여기서 키는 MessageFilter이고 값은 연관된 필터 데이터입니다.The table is a collection of key-value pairs, where the key is the MessageFilter, and the value is the associated filter data. 필터 데이터는 일반 매개 변수에 지정된 모든 유형의 데이터가 될 수 있으며, 메시지가 테이블의 필터와 일치할 경우 수행할 작업을 지정하는 데 사용할 수 있습니다.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.

IDictionary<TKey,TValue>에서 상속되는 IMessageFilterTable<TFilterData> 기능을 사용하여 필터 테이블 항목을 액세스할 수 있습니다.Filter table entries can be accessed using the IDictionary<TKey,TValue> functionality that IMessageFilterTable<TFilterData> inherits.

필터 인스턴스는 지정된 IMessageFilterTable<TFilterData>에 한 번만 추가될 수 있습니다.Note that a filter instance can only be added to a given IMessageFilterTable<TFilterData> once. 이 필터의 여러 인스턴스를 동일한 필터 테이블에 추가하려면 필터 생성자를 사용하여 추가 인스턴스를 만듭니다.To add multiple instances of this filter to the same filter table, use a filter constructor to create additional instances.

필터는 메시지가 필터의 쿼리 조건을 충족하면 메시지를 일치시킵니다.A filter matches a message when the message satisfies the query criteria of the filter. 오버로드된 일치 메서드에는 네 가지가 있습니다.There are four overloaded matching methods. 반환되는 데이터는 필터 데이터이거나 MessageFilter 개체 자체입니다.The data returned is either the filter data or the MessageFilter objects themselves. 이 데이터는 다중 일치가 허용되는지 아니면 단일 일치만 허용되는지에 상관없이 반환됩니다.This data is returned whether multiple matches are allowed or only a single match. 다음 표에서는 각 오버로드에 대한 정보를 보여 줍니다.The following table shows this information for each overload.

메서드 이름Method Name 일치 항목Matches 반환되는 데이터Data Returned
GetMatchingValue SingleSingle FilterData
GetMatchingFilter SingleSingle MessageFilter
GetMatchingValues 여러Multiple FilterData
GetMatchingFilters 여러 페이지Multiple MessageFilter 개체MessageFilter objects

각 메서드는 두 개의 오버로드를 포함합니다.Each method contains two overloads. 두 오버로드 간의 차이점은 하나는 Message 매개 변수를 사용하고 본문 내용을 검사할 수 없으며, 다른 하나는 MessageBuffer 매개 변수를 사용하고 메시지의 모든 부분을 검사할 수 있다는 점입니다.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. Message 매개 변수를 사용하여 메서드를 호출했는데 필터 테이블에 메시지 본문의 내용을 검사하는 필터가 포함되어 있으면 예외가 throw됩니다.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. 테이블의 필터에 대해 잘 모를 경우 메시지 버퍼를 사용하는 오버로드를 호출하십시오.If you are unsure about the filters in a table, call the overload that takes a message buffer.

메시지 헤더는 자동으로 버퍼링되므로 별도의 사용 없이도 필터를 통해 검사할 수 있습니다.Message headers are automatically buffered and can be inspected by a filter without being consumed. 그러나 버퍼링되지 않은 메시지 본문이 쿼리에 사용되면 그 내용이 제거되므로 필터를 사용하여 본문을 검사하려면 전체 메시지를 버퍼링해야 합니다.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.

다음 클래스에서는 IMessageFilterTable<TFilterData>을 구현합니다.The following classes implement IMessageFilterTable<TFilterData>:

속성

Count

ICollection<T>에 포함된 요소 수를 가져옵니다.Gets the number of elements contained in the ICollection<T>.

(다음에서 상속됨 ICollection<T>)
IsReadOnly

ICollection<T>가 읽기 전용인지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the ICollection<T> is read-only.

(다음에서 상속됨 ICollection<T>)
Item[TKey]

지정한 키를 가진 요소를 가져오거나 설정합니다.Gets or sets the element with the specified key.

(다음에서 상속됨 IDictionary<TKey,TValue>)
Keys

ICollection<T>의 키를 포함하는 IDictionary<TKey,TValue>을 가져옵니다.Gets an ICollection<T> containing the keys of the IDictionary<TKey,TValue>.

(다음에서 상속됨 IDictionary<TKey,TValue>)
Values

ICollection<T>의 값이 들어 있는 IDictionary<TKey,TValue>을 가져옵니다.Gets an ICollection<T> containing the values in the IDictionary<TKey,TValue>.

(다음에서 상속됨 IDictionary<TKey,TValue>)

메서드

Add(T)

ICollection<T>에 항목을 추가합니다.Adds an item to the ICollection<T>.

(다음에서 상속됨 ICollection<T>)
Add(TKey, TValue)

제공된 키와 값을 가진 요소를 IDictionary<TKey,TValue>에 추가합니다.Adds an element with the provided key and value to the IDictionary<TKey,TValue>.

(다음에서 상속됨 IDictionary<TKey,TValue>)
Clear()

ICollection<T>에서 항목을 모두 제거합니다.Removes all items from the ICollection<T>.

(다음에서 상속됨 ICollection<T>)
Contains(T)

ICollection<T>에 특정 값이 들어 있는지 여부를 확인합니다.Determines whether the ICollection<T> contains a specific value.

(다음에서 상속됨 ICollection<T>)
ContainsKey(TKey)

지정된 키를 갖는 요소가 IDictionary<TKey,TValue>에 들어 있는지 여부를 결정합니다.Determines whether the IDictionary<TKey,TValue> contains an element with the specified key.

(다음에서 상속됨 IDictionary<TKey,TValue>)
CopyTo(T[], Int32)

특정 ICollection<T> 인덱스부터 시작하여 Array의 요소를 Array에 복사합니다.Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

(다음에서 상속됨 ICollection<T>)
GetEnumerator()

컬렉션을 반복하는 열거자를 반환합니다.Returns an enumerator that iterates through a collection.

(다음에서 상속됨 IEnumerable)
GetMatchingFilter(Message, MessageFilter)

지정된 메시지가 테이블에서 정확히 한 필터의 일치 조건을 충족하는지 여부를 나타내는 값을 반환하고 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)

지정된 메시지 또는 버퍼링된 메시지가 테이블에서 정확히 한 필터의 일치 조건을 충족하는지 여부를 나타내는 값을 반환하고 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>)

지정된 메시지가 테이블에서 한 필터의 일치 조건을 충족하는지 여부를 나타내는 값을 반환하고 일치하는 필터를 컬렉션에 추가합니다.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>)

지정한 버퍼링된 메시지가 테이블에서 한 필터의 일치 조건을 충족하는지 여부를 나타내는 값을 반환하고 일치하는 필터를 컬렉션에 추가합니다.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)

지정한 버퍼링된 메시지가 테이블에서 한 필터의 일치 조건을 충족하는지 여부를 나타내는 값을 반환하고, 일치하는 일치하는 필터 데이터를 컬렉션에 추가합니다.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)

지정된 버퍼링 메시지가 테이블에서 정확히 한 필터의 일치 조건을 충족하는지 여부를 나타내는 값을 반환하고, 일치하는 필터 데이터를 컬렉션에 추가합니다.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>)

지정된 메시지가 테이블에서 한 개 이상의 필터의 일치 조건을 충족하는지 여부를 나타내는 값을 반환하고, 일치하는 필터의 FilterData를 컬렉션에 추가합니다.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>)

지정한 버퍼링된 메시지가 테이블에서 한 개 이상의 필터의 일치 조건을 충족하는지 여부를 나타내는 값을 반환하고, 일치하는 필터의 FilterData를 컬렉션에 추가합니다.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)

IDictionary<TKey,TValue>에서 지정한 키를 가지는 요소를 제거합니다.Removes the element with the specified key from the IDictionary<TKey,TValue>.

(다음에서 상속됨 IDictionary<TKey,TValue>)
TryGetValue(TKey, TValue)

지정한 키와 연결된 값을 가져옵니다.Gets the value associated with the specified key.

(다음에서 상속됨 IDictionary<TKey,TValue>)

확장 메서드

CopyToDataTable<T>(IEnumerable<T>)

제네릭 매개 변수 TDataTable인 지정된 입력 DataRow 개체를 사용하여 IEnumerable<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)

제네릭 매개 변수 TDataRow인 지정된 입력 DataTable 개체를 사용하여 IEnumerable<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)

제네릭 매개 변수 TDataRow인 지정된 입력 DataTable 개체를 사용하여 IEnumerable<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)

IEnumerable의 요소를 지정된 형식으로 캐스팅합니다.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable의 요소를 필터링합니다.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

쿼리를 병렬화할 수 있도록 합니다.Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable로 변환합니다.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 노드의 상위 항목이 들어 있는 요소 컬렉션을 반환합니다.Returns a collection of elements that contains the ancestors of every node in the source collection.

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

소스 컬렉션에 있는 모든 노드의 상위 항목이 들어 있는 필터링된 요소 컬렉션을 반환합니다.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 문서 및 요소의 하위 노드 컬렉션을 반환합니다.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 요소 및 문서의 하위 요소가 들어 있는 요소 컬렉션을 반환합니다.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

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

소스 컬렉션에 있는 모든 요소 및 문서의 하위 요소가 들어 있는 필터링된 요소 컬렉션을 반환합니다.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 요소 및 문서의 자식 요소 컬렉션을 반환합니다.Returns a collection of the child elements of every element and document in the source collection.

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

소스 컬렉션에 있는 모든 요소 및 문서의 필터링된 자식 요소 컬렉션을 반환합니다.Returns a filtered collection of the child elements of every element and document in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

소스 컬렉션의 모든 노드가 문서 순으로 정렬되어 들어 있는 노드 컬렉션을 반환합니다.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 문서 및 요소의 자식 노드 컬렉션을 반환합니다.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

부모 노드에서 소스 컬렉션의 모든 노드를 제거합니다.Removes every node in the source collection from its parent node.

적용 대상

스레드 보안

필터 테이블은 일치 작업에 대해서는 스레드로부터 안전하지만 수정 작업에 대해서는 스레드로부터 안전하지 않습니다.Filter tables are thread-safe with respect to matching operations, but are not thread-safe with respect to modification. 필터 테이블에 액세스하는 스레드는 ReaderWriterLock 또는 비슷한 잠금 의미 체계를 사용하여 동기화되어야 합니다.Threads that access a filter table should be synchronized by the ReaderWriterLock or similar locking semantic. 이 잠금을 사용하면 필터 테이블에 대해 여러 읽기 작업(예: 일치 작업)을 동시에 실행할 수 있지만, 필터 테이블에 쓰려면(예: 필터 추가) 스레드가 단독 잠금을 대기해야 합니다.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.

모든 컴파일 작업은 필터가 테이블에 추가될 때 수행됩니다.All compilation is done when filters are added to the table. 필터 테이블을 이전에 만들었지만 편집한 적이 없는 경우에는 일치 작업 중에 잠금을 수행할 필요가 없습니다.If you create a filter table in advance, and never edit it, locking is not necessary during a match.