Net Peer TCP
이 샘플에서는 피어 채널을 사용하여 다자 간 통신을 제공하는 NetPeerTcpBinding 바인딩을 암호 기반 인증과 함께 사용하는 방법을 보여 줍니다. 이 샘플은 Getting Started 샘플을 변형한 것입니다. WCF(Windows Communication Foundation)에 대한 개요를 보려면 Getting Started 샘플을 참조하십시오.
이 샘플에서 응용 프로그램 인스턴스는 자체 호스팅된 콘솔 응용 프로그램입니다.
다른 전송 바인딩 샘플과 달리 이 샘플에서는 다자 간 통신을 보여 줄 목적으로 사용자 지정 계약 인터페이스(IBroadcast
)를 사용합니다. 모든 인스턴스는 이 계약을 구현하여 메시지를 수신하고 동일한 계약의 프록시를 만들어 메시지를 메시로 보냅니다. 이 작업은 메시에 대한 이중 채널을 만들어 수행됩니다.
참고
이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.
샘플에 있는 바인딩 구성 프로세스를 이해하려면 다음 피어 채널 개념을 알아야 합니다.
- 피어 확인자는 메시 ID를 메시에 있는 여러 노드의 끝점 주소로 확인합니다.
- 메시는 피어 노드의 명명된 컬렉션이며 메시 ID로 식별됩니다.
- 피어 노드는 메시에 참가하는 응용 프로그램의 인스턴스입니다.
- 메시 ID는 메시의 끝점에 있는 주소의 호스트 부분을 식별합니다. 이러한 주소의 예에는 "net.p2p://chatMesh/servicemodelsamples/chat" 또는 "net.p2p://broadcastMesh/servicemodelsamples/announcements"가 있습니다. chatMesh와 broadcastMesh는 메시 ID입니다.
- 메시에 참가하는 모든 클라이언트는 같은 메시 ID를 사용하지만 사용하는 경로와 서비스는 다를 수도 있습니다. 특정 끝점 주소에 지정된 메시지는 그 주소를 사용하는 모든 피어 채널에 전달됩니다.
피어 채널을 연 결과로 피어 노드가 열리면, 피어 노드에서는 피어 확인자를 사용하여 연결할 다른 피어 노드의 주소에 대한 메시 ID를 확인합니다. 그러면 서로 연결된 노드로 된 메시가 만들어지며 메시 전체에 메시지를 전파할 수 있게 됩니다.
바인딩은 발신자와 수신자의 구성 파일에 지정됩니다. 바인딩 형식은 다음 샘플에서와 같이 끝점 요소의 binding 특성에 지정됩니다.
<client>
<endpoint name="BroadcastEndpoint"
address=
"net.p2p://broadcastMesh/servicemodelsamples/announcements"
binding="netPeerTcpBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.IBroadcast">
</endpoint>
</client>
기본 동작과 함께 NetPeerTcpBinding 바인딩을 사용하는 경우 암호 기반 보안이 사용됩니다. 바인딩 요소는 포트, 수신 IP 주소, 확인자 형식, 최대 메시지 크기, 최대 버퍼 풀 크기, 판독기 할당량, 피어 노드 인증 모드, 메시지 인증 및 시간 제한(닫기, 열기, 보내기 및 받기)을 설정하는 특성을 제공합니다.
참고
이 샘플에서는 Windows Server 2003에서 사용할 수 없는 기본 피어 확인자(PNRP)를 사용합니다. 따라서 Windows Server 2003에서 이 예를 실행하려면 사용자 지정 피어 확인자를 사용해야 합니다. 다음 코드에 표시된 것과 같이 사용자 지정 피어 확인자를 사용하는 샘플에 대한 자세한 내용은 Peer Channel Chat를 참조하십시오.
<netPeerTcpBinding>
<binding configurationName="Binding1">
<resolver mode="Custom">
<customResolver type=
"MyAppNameSpace.MyCustomPeerResolver, myApp"/>
</resolver>
</binding>
</netPeerTcpBinding>
MyCustomPeerResolver
가 포함된 파일은 발신자 및 수신자와 함께 컴파일되어야 합니다. 플랫폼이 다른 여러 컴퓨터에서 샘플을 실행하는 경우 해당 컴퓨터는 모두 동일한 확인자를 사용해야 합니다.
수신자 및 발신자 구현에서는 수신자 또는 발신자 인스턴스와 연결된 피어 노드를 검색하고 온라인 및 오프라인 이벤트에 등록하는 방법도 보여 줍니다. 온라인 이벤트는 피어 노드가 메시에 있는 적어도 하나의 다른 피어 노드에 연결될 때 시작됩니다. 오프라인 이벤트는 피어 노드가 메시에 있는 다른 피어 노드에 더 이상 연결되지 않은 경우에 시작됩니다.
이 경우 피어 채널은 Service Model Metadata Utility Tool (Svcutil.exe)와 통합되지 않습니다. 따라서 Svcutil.exe를 사용하여 발신자에 대해 형식화된 채널을 생성할 수 없습니다.
발신자를 실행하면 메시지를 보낼 준비가 된 것을 나타내는 메시지가 표시됩니다. Enter 키를 눌러 예제 채트 메시지를 보냅니다. 이 메시지는 현재 실행 중인 모든 수신자 클라이언트 콘솔 창에 표시됩니다. 클라이언트를 종료하려면 해당 클라이언트(발신자 또는 수신자)의 콘솔 창에서 Enter 키를 다시 누릅니다.
추적 또는 메시지 로깅을 사용하는 경우 발신자 및 수신자 동작을 보다 자세히 모니터링할 수 있습니다. 다음 절차에서는 추적 및 메시지 로깅을 사용하는 방법을 설명합니다.
참고
이 샘플에서는 현재 인프라에서 throw할 수 있는 모든 예외를 처리하지는 않습니다. 상용 또는 프로덕션 환경에서 이 샘플을 사용하는 경우 올바른 예외 처리 모범 사례를 따르십시오.
샘플을 설치, 빌드 및 실행하려면
Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.
C# 또는 Visual Basic .NET 버전의 솔루션을 빌드하려면 Windows Communication Foundation 샘플 빌드의 지침을 따릅니다.
단일 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.
PNRP는 Windows Vista, Windows XP SP3 및 Windows Server 2008에서 사용할 수 있습니다. Windows XP SP2에서 사용하는 경우 다음에 나오는 설치(1회 설치) 지침을 따르십시오.
- 제어판에서 프로그램 추가/제거를 두 번 클릭합니다.
- 프로그램 추가/제거 대화 상자에서 Windows 구성 요소 추가/제거를 클릭합니다.
- Windows 구성 요소 마법사에서 "네트워킹 서비스" 확인란을 선택하고 "자세히"를 클릭합니다.
- "피어-투-피어" 확인란을 선택하고 "확인"을 클릭합니다.
- Windows 구성 요소 마법사에서 "다음"을 클릭합니다.
- 설치가 완료되면 "마침"을 클릭합니다.
- 명령 셸 프롬프트에서 net start pnrpsvc 명령을 사용하여 PNRP 서비스를 시작합니다.
이 샘플의 경우 3단계에서 클라이언트 및 서비스를 참조할 때마다 해당 단계가 발신자와 수신자에 적용됩니다.
하나 이상의 수신자와 발신자를 시작합니다. 인스턴스가 연결되면 발신자 응용 프로그램의 콘솔에서 Enter 키를 눌러 예제 메시지를 상대 수신자에게 보냅니다. 발신자가 보낸 채트 메시지는 모든 수신자가 받습니다.
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.