ピア リゾルバー

メッシュに接続するには、ピア ノードに他のノードの IP アドレスが必要です。 IP アドレスを取得するには、リゾルバー サービスにアクセスします。このサービスは、メッシュ ID を受け取り、そのメッシュ ID で登録されているノードに対応するアドレスの一覧を返します。 リゾルバーは登録されたアドレスのリストを保持します。そのリストには、メッシュ レジスタの各ノードとサービスが含まれます。

使用する PeerResolver サービスは、ResolverNetPeerTcpBinding プロパティから指定できます。

サポートされるピア リゾルバー

ピア チャネルは、PNRP (Peer Name Resolution Protocol) サービスとカスタム リゾルバー サービスの 2 種類のリゾルバーをサポートします。

既定で、ピア チャネルは PNRP ピア リゾルバー サービスを使用して、メッシュ内のピアと近隣ノードを検出します。 PNRP が使用できない、または適切でない状況やプラットフォーム向けに、Windows Communication Foundation (WCF) には、別の方法として、サーバー ベースの検索サービスである CustomPeerResolverService が用意されています。 また、IPeerResolverContract インターフェイスを実装するクラスを書き込むと、カスタム リゾルバー サービスを明示的に定義することもできます。

PNRP (Peer Name Resolution Protocol)

Windows Vista の既定のリゾルバーである PNRP は、分散型でサーバーレスの名前リゾルバー サービスです。 PNRP は、Windows XP SP2 でも、Advanced Networking Pack をインストールすると使用できます。 2 つのクライアントが同じバージョンの PNRP を実行している場合、特定の条件 (途中に企業のファイアウォールが存在しないなどの条件) を満たせば、このプロトコルを使用してお互いを検索できます。 Windows Vista に付属する PNRP は、Advanced Networking Pack に含まれているバージョンよりも新しいバージョンです。 Windows XP SP2 用の PNRP への更新については、Microsoft ダウンロード センターで確認してください。

カスタム リゾルバー サービス

PNRP サービスを利用できない場合、またはメッシュ形状を完全に制御する必要がある場合は、サーバー ベースのカスタム リゾルバー サービスを使用できます。 このサービスは、IPeerResolverContract インターフェイスを実装するリゾルバー クラスを記述するか、既定の受信トレイ実装 (CustomPeerResolverService) を使用することで、明示的に定義できます。

サービスの既定の実装では、クライアント登録は、クライアントが明示的に更新しない限り、特定の期間が経過した後に期限切れになります。 そこで、リゾルバー サービスを使用するクライアントは、登録を時間内に正常に更新するために、クライアントとサーバー間の待ち時間に上限の概念を設ける必要があります。 そのために、リゾルバー サービスに適切な更新タイムアウト (RefreshInterval) を選択します。 (詳細については、「CustomPeerResolverService 内部: クライアント登録」を参照してください)。

アプリケーションを記述する際には、クライアントとカスタム リゾルバー サービス間の接続をセキュリティで保護することも考慮する必要があります。 これは、クライアントがリゾルバー サービスへのアクセスに使用する NetTcpBinding のセキュリティ設定を使用することで実現できます。 資格情報を使用する場合は、ピア チャネルの作成に使用する ChannelFactory で、それを指定する必要があります。 この資格情報は、カスタム リゾルバーへのチャネルの作成に使用される ChannelFactory に渡されます。

Note

ローカル ネットワークや即席のネットワークでカスタム リゾルバーを使用するときは、リンク ローカル ネットワークまたは即席のネットワークを使用またはサポートするアプリケーションに、接続時に使用するリンク ローカル アドレスを 1 つだけ選択するロジックを含めることを強くお勧めします。 これにより、複数のリンク ローカル アドレスを持つコンピューターによって発生する可能性のある混乱をすべて回避できます。 このロジックに従って、ピア チャネルは、1 度に 1 つのリンク ローカル アドレスを使用することだけをサポートします。 このアドレスは、ListenIpAddressNetPeerTcpBinding プロパティを使用して指定できます。

カスタム競合回避モジュールの実装方法のデモについては、「ピア チャネル カスタム ピア リゾルバー」を参照してください。

このセクションの内容

CustomPeerResolverService 内部:クライアント登録

関連項目