다음을 통해 공유


Peer Channel Custom Peer Resolver

Custom Peer Resolver 샘플에서는 피어 채널 응용 프로그램에서 사용할 수 있는 사용자 지정 확인자를 구현하는 방법을 보여 줍니다.

이 샘플은 Self-Host 샘플을 기반으로 합니다. WCF(Windows Communication Foundation)에 대한 고급 개요를 보려면 Getting Started 샘플을 참조하십시오.

참고

이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.

주요 개념:

피어 채널은 WCF에서 제공되는 다자 간의 P2P(피어 투 피어) 통신 기술입니다. 피어 채널은 응용 프로그램 개발자에게 안전하고 확장 가능한 메시지 기반 P2P 통신 채널을 제공합니다. 피어 채널을 활용할 수 있는 다자 간 응용 프로그램의 한 가지 대표적인 예로 한 그룹의 사용자가 서버 없이 피어 투 피어 방식으로 서로 채트하는 대화방 같은 공동 작업 응용 프로그램을 들 수 있습니다. 피어 채널은 소비자 및 엔터프라이즈 시나리오에서 모두 P2P 공동 작업, 콘텐츠 배포, 부하 분산 및 분산 처리를 가능하게 합니다.

피어 채널에는 다음과 같은 새로운 개념이 도입되었습니다.

  • 메시는 서로 통신할 수 있고 고유한 메시 ID를 통해 식별되는 피어 노드의 명명된 컬렉션(상호 연결된 그래프)입니다.

    참고

    메시에 있는 활성 노드는 메시 이름을 게시하므로 다른 노드가 이 노드를 찾을 수 있습니다. 메시는 멤버 자격 변경에 따라 조정되고, 노드가 끊임없이 메시에 참가하고 떠나는 환경에서 유연한 연결성을 가지며, 트래픽 패턴에 따라 동적으로 최적화되는 특성을 갖습니다.

  • 피어 노드는 메시에 있는 끝점입니다. 응용 프로그램에는 서로 다른 메시에 참가하는 여러 개의 피어 노드가 있을 수 있습니다.

  • 피어 채널netPeerTcpBinding 바인딩 즉, PeerTransportBindingElement를 사용하는 사용자 지정 바인딩을 사용하여 생성된 채널입니다.

  • 피어 확인자는 메시 ID를 메시에 있는 노드의 끝점 주소로 확인합니다. 피어 노드가 열려 있으면 피어 확인자를 사용하여 메시 ID를 메시에 있는 다른 피어 노드의 주소 목록으로 확인합니다. 그러면 메시지를 메시 전체에 전파할 수 있는 상호 연결된 노드로 구성된 메시가 만들어집니다.

이 샘플에서는 사용자 지정 피어 확인자 웹 서비스를 작성하고 실행 파일 내에서 서비스를 자체 호스팅하는 방법을 보여 줍니다. 클라이언트는 독립 실행형 응용 프로그램은 아니지만 사용자 지정 피어 확인자를 사용하는 다른 피어 채널 응용 프로그램과 함께 컴파일됩니다. 피어 채널 응용 프로그램이 사용자 지정 피어 확인자의 클라이언트측을 사용하는 방법을 보려면 Peer Channel Chat 샘플을 참조하십시오.

사용자 지정 피어 확인자 서비스는 사전에 메시 ID와 끝점 주소를 캐시하고 등록/등록 취소에 응답하며 클라이언트의 요청을 확인하는 singleton 서비스입니다.

메시 ID는 고유해야 합니다. 여러 응용 프로그램에서 동일한 확인자를 사용하는 경우 충돌을 피하기 위해 다른 메시 ID를 선택해야 합니다.

이 샘플에서는 정적 Main 함수를 구현하여 지정된 CustomPeerResolverService 형식에 대해 ServiceHost를 만듭니다. 또한 호스트는 구성 파일(App.config)의 응용 프로그램 설정에 구성된 서비스 호스트에 기본 주소를 제공합니다.

<appSettings>
    <!-- use appSetting to configure base address provided by host -->
    <add key="baseAddress"
     value=" net.tcp://localhost/servicemodelsamples/peerResolverService" />
</appSettings>

서비스는 RegisterMeshId, UnregisterMeshId 및 ResolveMeshId 작업을 노출하는 계약을 구현합니다. 클라이언트는 지정된 작업에 대한 동기적 요청을 만들고 서비스는 결과로 회신합니다.

서비스는 구성 파일(App.config)을 사용하여 정의된 서비스와 통신할 수 있는 단일 끝점을 노출합니다. 바인딩은 TCP 통신을 제공하는 표준 NetTcpBinding으로 구성됩니다.

<services>
    <service 
       service="Microsoft.ServiceModel.Samples. CustomPeerResolverService">
       <!-- use base address provided by the host -->
       <endpoint address=""
            binding=" netTcpBinding "
             contract="Microsoft.ServiceModel.Samples. ICustomPeerResolver" />
    </service>
</services>

구성된 대로 동일한 컴퓨터에 있는 클라이언트에서 net.tcp://localhost/servicemodelsamples/peerResolverservice의 서비스에 액세스할 수 있습니다. 원격 시스템의 클라이언트가 서비스에 액세스하려면 localhost 대신 정규화된 도메인 이름을 지정해야 합니다.

샘플을 실행하면 작업 등록 및 등록 취소 메시지가 서비스 콘솔 창에 표시됩니다. 동일한 메시 ID에 대해 여러 번의 등록이 수행된 경우 첫 번째 등록과 마지막 등록 취소의 메시지만 콘솔 창에 표시됩니다. 이 서비스를 사용하여 피어 채널 응용 프로그램을 종료한 후 서비스를 종료하려면 콘솔 창에서 Enter 키를 누릅니다.

참고

이 샘플에서는 현재 인프라에서 throw할 수 있는 모든 예외를 처리하지는 않습니다. 상용 또는 프로덕션 환경에서 이 샘플을 사용할 경우에는 올바른 예외 처리 모범 사례를 따르십시오.

샘플을 설치, 빌드 및 실행하려면

  1. Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.

  2. C#, C++, Visual Basic .NET 버전의 솔루션을 빌드하려면 Windows Communication Foundation 샘플 빌드의 지침을 따릅니다.

  3. 단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침에 따릅니다. Peer Channel Chat 샘플 응용 프로그램에도 고유의 사용자 지정 피어 확인자 구현이 포함되어 있습니다. 사용자 지정 확인자 및 피어 채팅 인스턴스를 빌드하고 실행하려면 Peer Channel Chat 페이지의 설명을 참조하십시오.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.