DuplexChannelFactory<TChannel> 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다.
generic <typename TChannel>
public ref class DuplexChannelFactory : System::ServiceModel::ChannelFactory<TChannel>
public class DuplexChannelFactory<TChannel> : System.ServiceModel.ChannelFactory<TChannel>
type DuplexChannelFactory<'Channel> = class
inherit ChannelFactory<'Channel>
Public Class DuplexChannelFactory(Of TChannel)
Inherits ChannelFactory(Of TChannel)
형식 매개 변수
- TChannel
채널 팩터리에서 생성하는 채널 형식입니다.
- 상속
- 파생
예제
다음 예제에서는 채널 팩터리를 만드는 방법과 이 채널 팩터리를 사용하여 채널을 만들고 관리하는 방법을 보여 줍니다.
// Construct InstanceContext to handle messages on the callback interface.
// An instance of ChatApp is created and passed to the InstanceContext.
InstanceContext site = new InstanceContext(new ChatApp());
// Create the participant with the given endpoint configuration.
// Each participant opens a duplex channel to the mesh.
// Participant is an instance of the chat application that has opened a channel to the mesh.
using (DuplexChannelFactory<IChatChannel> cf =
new DuplexChannelFactory<IChatChannel>(site,"ChatEndpoint"))
{
X509Certificate2 issuer = GetCertificate(
StoreName.CertificateAuthority,
StoreLocation.CurrentUser, "CN=" + issuerName,
X509FindType.FindBySubjectDistinguishedName);
cf.Credentials.Peer.Certificate =
GetCertificate(StoreName.My,
StoreLocation.CurrentUser,
"CN=" + member,
X509FindType.FindBySubjectDistinguishedName);
cf.Credentials.Peer.PeerAuthentication.CertificateValidationMode =
X509CertificateValidationMode.Custom;
cf.Credentials.Peer.PeerAuthentication.CustomCertificateValidator =
new IssuerBasedValidator();
using (IChatChannel participant = cf.CreateChannel())
{
// Retrieve the PeerNode associated with the participant and register for online/offline events.
// PeerNode represents a node in the mesh. Mesh is the named collection of connected nodes.
IOnlineStatus ostat = participant.GetProperty<IOnlineStatus>();
ostat.Online += new EventHandler(OnOnline);
ostat.Offline += new EventHandler(OnOffline);
Console.WriteLine("{0} is ready", member);
Console.WriteLine("Press <ENTER> to send the chat message.");
// Announce self to other participants.
participant.Join(member);
Console.ReadLine();
participant.Chat(member, "Hi there - I am chatting");
Console.WriteLine("Press <ENTER> to terminate this instance of chat.");
Console.ReadLine();
// Leave the mesh and close the client.
participant.Leave(member);
}
}
설명
이중 채널을 사용하면 클라이언트와 서버가 서로 독립적으로 통신하여 서로 호출을 시작할 수 있습니다. 이중 서비스는 클라이언트 엔드포인트에 메시지를 보내 이벤트와 유사한 동작을 제공할 수 있습니다. 이중 통신은 클라이언트가 서비스를 사용하여 세션을 설정하고 서비스가 클라이언트에 메시지를 다시 보낼 수 있는 채널을 서비스에 제공하는 경우에 발생합니다. 다양한 CreateChannel 메서드를 사용하여 이러한 이중 채널을 만듭니다. 이중 메시지 패턴은 WCF(Windows Communication Foundation) 서비스에서 사용할 수 있는 세 가지 메시지 패턴 중 하나입니다. 다른 두 가지 메시지 패턴은 단방향 및 요청-회신입니다.
클라이언트가 서비스에 다시 연결할 수 있도록 하는 이중 서비스에 대한 일반적인 설명은 이중 서비스를 참조하세요. 개요 및 설명은 채널 팩터리를 사용 하 여 Windows Communication Foundation (WCF) 클라이언트 애플리케이션을 작성 하는 단계를 참조 하세요 방법: ChannelFactory 사용합니다. 이중 메시징 패턴을 사용하는 서비스에 액세스하기 위해 콜백 인터페이스를 구현하는 클라이언트 클래스에서 WCF(Windows Communication Foundation) 클라이언트를 만드는 방법을 설명하는 절차는 방법: 이중 계약을 사용하여 서비스에 액세스를 참조하세요.
생성자
속성
Credentials |
팩터리에서 생성한 채널을 통해 클라이언트가 서비스 엔드포인트와 통신할 때 사용하는 자격 증명을 가져옵니다. (다음에서 상속됨 ChannelFactory) |
DefaultCloseTimeout |
닫기 작업을 완료하기 위해 제공되는 기본 시간 간격을 가져옵니다. (다음에서 상속됨 ChannelFactory) |
DefaultOpenTimeout |
열기 작업을 완료하기 위해 제공되는 기본 시간 간격을 가져옵니다. (다음에서 상속됨 ChannelFactory) |
Endpoint |
팩터리에서 만든 채널이 연결되는 서비스 엔드포인트를 가져옵니다. (다음에서 상속됨 ChannelFactory) |
IsDisposed |
통신 개체가 삭제되었는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 CommunicationObject) |
State |
통신 개체의 현재 상태를 나타내는 값을 가져옵니다. (다음에서 상속됨 CommunicationObject) |
ThisLock |
상태 전환 중에 클래스 인스턴스를 보호하는 상호 배타적인 전용 잠금을 가져옵니다. (다음에서 상속됨 CommunicationObject) |
메서드
Abort() |
통신 개체가 현재 상태에서 Closing 상태로 즉시 전환되도록 합니다. (다음에서 상속됨 CommunicationObject) |
ApplyConfiguration(String) |
지정된 구성 파일에서 제공한 동작 및 채널 팩터리의 서비스 엔드포인트에 있는 동작을 통해 채널 팩터리를 초기화합니다. (다음에서 상속됨 ChannelFactory) |
BeginClose(AsyncCallback, Object) |
통신 개체를 닫기 위한 비동기 작업을 시작합니다. (다음에서 상속됨 CommunicationObject) |
BeginClose(TimeSpan, AsyncCallback, Object) |
지정된 제한 시간 내에서 통신 개체를 닫기 위한 비동기 작업을 시작합니다. (다음에서 상속됨 CommunicationObject) |
BeginOpen(AsyncCallback, Object) |
통신 개체를 열기 위한 비동기 작업을 시작합니다. (다음에서 상속됨 CommunicationObject) |
BeginOpen(TimeSpan, AsyncCallback, Object) |
지정된 시간 간격 내에서 통신 개체를 열기 위한 비동기 작업을 시작합니다. (다음에서 상속됨 CommunicationObject) |
Close() |
통신 개체가 현재 상태에서 Closed 상태로 전환되도록 합니다. (다음에서 상속됨 CommunicationObject) |
Close(TimeSpan) |
통신 개체가 지정된 시간 간격 내에 현재 상태에서 Closed 상태로 전환되도록 합니다. (다음에서 상속됨 CommunicationObject) |
CreateChannel() |
지정된 엔드포인트 주소에 대해 지정된 형식의 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannel(EndpointAddress) |
지정된 엔드포인트 주소에서 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannel(EndpointAddress, Uri) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(InstanceContext) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(InstanceContext, Binding, EndpointAddress) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(InstanceContext, Binding, EndpointAddress, Uri) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(InstanceContext, EndpointAddress) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(InstanceContext, EndpointAddress, Uri) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(InstanceContext, String) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(Object, Binding, EndpointAddress) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(Object, Binding, EndpointAddress, Uri) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannel(Object, String) |
서비스와 클라이언트의 콜백 인스턴스 간 이중 채널을 만듭니다. |
CreateChannelWithActAsToken(SecurityToken) |
Act As 보안 토큰을 사용하여 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannelWithActAsToken(SecurityToken, EndpointAddress) |
지정된 엔드포인트 주소에서 보안 토큰을 사용하여 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri) |
지정된 전송 주소를 통해 특정 엔드포인트 주소에서 보안 토큰으로 사용할 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannelWithIssuedToken(SecurityToken) |
발급된 보안 토큰을 사용하여 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress) |
지정된 엔드포인트 주소에서 발행된 보안 토큰을 사용하여 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri) |
지정된 전송 주소를 통해 특정 엔드포인트 주소에서 발행된 보안 토큰으로 사용할 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannelWithOnBehalfOfToken(SecurityToken) |
On Behalf Of 보안 토큰을 사용하여 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress) |
지정된 엔드포인트 주소에서 On Behalf Of 보안 토큰을 사용하여 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri) |
지정된 전송 주소를 통해 특정 엔드포인트 주소에서 보안 토큰으로 사용할 서비스에 메시지를 보내는 데 사용되는 채널을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateDescription() |
서비스 엔드포인트에 대한 설명을 만듭니다. (다음에서 상속됨 ChannelFactory<TChannel>) |
CreateFactory() |
팩터리의 현재 엔드포인트에 대해 채널 팩터리를 생성합니다. (다음에서 상속됨 ChannelFactory) |
EndClose(IAsyncResult) |
통신 개체를 닫기 위한 비동기 작업을 완료합니다. (다음에서 상속됨 CommunicationObject) |
EndOpen(IAsyncResult) |
통신 개체를 열기 위한 비동기 작업을 완료합니다. (다음에서 상속됨 CommunicationObject) |
EnsureOpened() |
현재 채널 팩터리가 아직 열리지 않은 경우 이를 엽니다. (다음에서 상속됨 ChannelFactory) |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
Fault() |
통신 개체가 현재 상태에서 Faulted 상태로 전환되도록 합니다. (다음에서 상속됨 CommunicationObject) |
GetCommunicationObjectType() |
통신 개체의 형식을 가져옵니다. (다음에서 상속됨 CommunicationObject) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetProperty<T>() |
요청한 형식의 개체가 있으면 채널 스택의 해당 계층에서 그 개체를 반환하고, 개체가 없으면 |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
InitializeEndpoint(Binding, EndpointAddress) |
지정된 바인딩 및 주소를 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다. (다음에서 상속됨 ChannelFactory) |
InitializeEndpoint(EndpointAddress) |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. (다음에서 상속됨 ChannelFactory) |
InitializeEndpoint(ServiceEndpoint) |
지정된 엔드포인트를 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다. (다음에서 상속됨 ChannelFactory) |
InitializeEndpoint(String, EndpointAddress) |
지정된 주소 및 구성을 사용하여 채널 팩터리의 서비스 엔드포인트를 초기화합니다. (다음에서 상속됨 ChannelFactory) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
OnAbort() |
현재 채널 팩터리의 내부 채널 팩터리를 종료합니다. (다음에서 상속됨 ChannelFactory) |
OnBeginClose(TimeSpan, AsyncCallback, Object) |
연결된 상태 개체가 있는 현재 채널 팩터리의 내부 채널 팩터리에서 비동기 닫기 작업을 시작합니다. (다음에서 상속됨 ChannelFactory) |
OnBeginOpen(TimeSpan, AsyncCallback, Object) |
연결된 상태 개체가 있는 현재 채널 팩터리의 내부 채널 팩터리에서 비동기 열기 작업을 시작합니다. (다음에서 상속됨 ChannelFactory) |
OnClose(TimeSpan) |
작업 완료를 위해 지정된 시간 제한을 사용하여 내부 채널 팩터리에 대한 닫기를 호출합니다. (다음에서 상속됨 ChannelFactory) |
OnCloseAsync(TimeSpan) |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. (다음에서 상속됨 ChannelFactory) |
OnClosed() |
통신 개체가 Closing 상태로 전환되는 중에 호출됩니다. (다음에서 상속됨 CommunicationObject) |
OnClosing() |
통신 개체가 Closing 상태로 전환되는 중에 호출됩니다. (다음에서 상속됨 CommunicationObject) |
OnEndClose(IAsyncResult) |
현재 채널 팩터리의 내부 채널 팩터리에 대한 비동기 닫기 작업을 완료합니다. (다음에서 상속됨 ChannelFactory) |
OnEndOpen(IAsyncResult) |
현재 채널 팩터리의 내부 채널 팩터리에 대한 비동기 열기 작업을 완료합니다. (다음에서 상속됨 ChannelFactory) |
OnFaulted() |
통신 개체가 동기 오류 작업의 호출로 인해 Faulted 상태로 전환된 후 해당 통신 개체에 대한 처리를 삽입합니다. (다음에서 상속됨 CommunicationObject) |
OnOpen(TimeSpan) |
작업 완료를 위해 지정된 시간 제한을 사용하여 현재 채널 팩터리의 내부 채널 팩터리에 대한 열기를 호출합니다. (다음에서 상속됨 ChannelFactory) |
OnOpenAsync(TimeSpan) |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. (다음에서 상속됨 ChannelFactory) |
OnOpened() |
채널 팩터리에 대한 ClientCredentials 개체의 읽기 전용 복사본을 초기화합니다. (다음에서 상속됨 ChannelFactory) |
OnOpening() |
현재 채널의 내부 채널 팩터리를 생성합니다. (다음에서 상속됨 ChannelFactory) |
Open() |
통신 개체가 Created 상태에서 Opened 상태로 전환되도록 합니다. (다음에서 상속됨 CommunicationObject) |
Open(TimeSpan) |
통신 개체가 지정된 시간 간격 내에 Created 상태에서 Opened 상태로 전환되도록 합니다. (다음에서 상속됨 CommunicationObject) |
ThrowIfDisposed() |
통신 개체가 삭제되면 예외를 throw합니다. (다음에서 상속됨 CommunicationObject) |
ThrowIfDisposedOrImmutable() |
통신 개체의 State 속성이 Created 상태로 설정되지 않은 경우 예외를 throw합니다. (다음에서 상속됨 CommunicationObject) |
ThrowIfDisposedOrNotOpen() |
통신 개체가 Opened 상태가 아니면 예외를 throw합니다. (다음에서 상속됨 CommunicationObject) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
이벤트
Closed |
통신 개체가 Closed 상태로 전환될 때 발생합니다. (다음에서 상속됨 CommunicationObject) |
Closing |
통신 개체가 Closing 상태로 전환될 때 발생합니다. (다음에서 상속됨 CommunicationObject) |
Faulted |
통신 개체가 Faulted 상태로 전환될 때 발생합니다. (다음에서 상속됨 CommunicationObject) |
Opened |
통신 개체가 Opened 상태로 전환될 때 발생합니다. (다음에서 상속됨 CommunicationObject) |
Opening |
통신 개체가 Opening 상태로 전환될 때 발생합니다. (다음에서 상속됨 CommunicationObject) |
명시적 인터페이스 구현
IAsyncCommunicationObject.CloseAsync(TimeSpan) |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. (다음에서 상속됨 CommunicationObject) |
IAsyncCommunicationObject.OpenAsync(TimeSpan) |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. (다음에서 상속됨 CommunicationObject) |
IAsyncDisposable.DisposeAsync() |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. (다음에서 상속됨 ChannelFactory) |
IDisposable.Dispose() |
현재 채널 팩터리를 닫습니다. (다음에서 상속됨 ChannelFactory) |
확장 메서드
CloseHelperAsync(ICommunicationObject, TimeSpan) |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. |
OpenHelperAsync(ICommunicationObject, TimeSpan) |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. |
GetInternalCloseTimeout(CommunicationObject) |
서비스 엔드포인트에서 메시지를 받거나 보내기 위해 클라이언트에서 사용하는 여러 형식의 이중 채널을 만들고 관리하는 방법을 제공합니다. |
ConfigureAwait(IAsyncDisposable, Boolean) |
비동기 일회용에서 반환되는 작업을 대기하는 방법을 구성합니다. |
적용 대상
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기