+ All Categories
Home > Documents > Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Date post: 05-Jan-2016
Category:
Upload: marybeth-byrd
View: 213 times
Download: 0 times
Share this document with a friend
31
Peer-to-Peer Programming with .NET 3.5 Dean Fiala Very Practical Software vpsw.com
Transcript
Page 1: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Peer-to-Peer Programming with .NET 3.5

Dean FialaVery Practical Software

vpsw.com

Page 2: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

What We’ll Cover

• Windows Peer-to-Peer Overview

• System.Net.PeerToPeer Namespace Tour

• Hot Peer-to-Peer Action (demo)

• Peek at other .NET Peer-to-Peer technologies

Page 3: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

First Pier-to-Pier Network

Page 4: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Overview of Peer-To-Peer Networking

• Simply a collection of peers• Peers act as both clients and servers• Pure P2P -- No central server required

(DNS-less)• Hybrid P2P – server used to helped find

peers• Based on IPv6 (allows every device on the

network to have a unique address)

Page 5: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Uses of P2P

• File Sharing

• Collaboration

• Chatting

• Distributed Processing

Page 6: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

P2P Cloud

• Simply a collection of peers within a defined network scope

• Peer can belong to multiple clouds

• Sometimes known as a Mesh Network

Page 7: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Cloud Scope

Global all peers on the Internet

Link Localall peers on the

local subnet

Page 8: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Cloud Status

Virtual Not yet initialized

Synchronizing Still initializing (bootstrapping)

Active Ready to go

Alone Ready to go – but not connected to any other system

Page 9: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Peer Name

• Defined as Authority.Classifer

• Authority.FriendlyName

• For unsecured names, Authority = 0ex: 0.Fredo

• For secured names, Authority = SHA1 Hash of the PeerName ex: 259ef61ae2a6703fed18544a268204adba477735.Sonny

Page 10: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Peer Name Resolution Protocol

• PNRP

• Secret sauce – allows peers to find each other without servers

• Real time – no caching like DNS

• Resolves Peer Names, which define Endpoints for communication

Page 11: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Peer Resolution

In Cache?Find Peer No AskClosest Peer

In Cache?

Yes

Send toRequesting

Peer

NoCloserPeer?

No

Sorry

Yes

Ask This OneAsk

Suggested

In Cache?

Ask NextClosest Peer

In Cache?

Page 12: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

PNRP v1 vs PNRP v2

• NOT COMPATIBLE

• PNRP v1 (XP SP2 or lower)– Recursive search

• PNRP v2 (Vista, XP SP3)– Iterative search

• v2 patch available for XP SP2, http://support.microsoft.com/kb/920342KILLS v1 dependent apps

Page 13: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Useful Tools

• NETSH – Command Line utility to diagnose or set up a computer’s networking configuration

• Teredo – Tunneling Technology allows IPv6 traffic over IPv4 networks

Page 14: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Useful NETSH Commands

• p2p pnrp cloud show names – shows names of registered peers

• p2p pnrp cloud show list – shows status of clouds

• p2p pnrp peer add registration – quickly add a peer to clouds for testing purposes

Page 15: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Peer To Peer in .NET

• First available in .NET 3.5

• Classes live in the System.Net.PeerToPeer namespace

• Two purposes:– Registering peers in clouds– Resolving peers in clouds

Page 16: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

System Requirements

• Vista

• XP SP2, SP3

• XP SP1 and the Advanced Networking Pack for Windows XP

• Server 2008

Page 17: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Services Required

• Peer Name Resolution Protocol

• Peer Network Identity Manager

• SSDP – Simple Service Discovery Protocol

Page 18: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Registering A Peer

PeerName Endpoint

PeerNameRecord

0.Somename

+

Page 19: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Creating a PeerName

• (string, PeerNameType) constructor creates fully qualified PeerName in format Authority.Classifier

• Type = Unsecured creates 0.{FriendlyName}

• Type = Secured creates {Hash}.{FriendlyName}

Page 20: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

What’s an Endpoint?

• An Internet Protocol address and port

• Can be IPv4 or IPv6

• Implemented as System.Net.IPEndPoint

Page 21: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Why Define Endpoints?

• No way to find out from .NET classes what the Registered end point is if UseAutoEndpointSelection = true

Page 22: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

How To Get A Cloud

• Cloud.GetAvailableClouds() returns a collection of available clouds for the peer

• Should return:– One Global Cloud– Plus one LinkLocal cloud for each active

network adapter

Page 23: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Resolving A Peer

PeerName Resolver

PeerNameRecord

0.Somename

Page 24: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

PeerNameRecord

• Information about a peer within a given cloud

PeerNameRecord

0.Somename

fe80::3044:488f:11b2:c2d4%10

Some Comment

Some Data (up to 4K)

Page 25: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Hot Peer-To-Peer Action

• Another P2P Chat Application!

Page 26: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Net.PeerToPeer.Collaboration

• Only available in Vista • Not in Server 2008 either• Framework to handle:

– Discovery– Notification– Invitations– Contact Lists– Groups

• Beaucoup event hooks available

Page 27: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Exciting Collaboration Classes

• PeerCollaboration: duh, need to use this to access almost everything else

• ContactManager: access to contacts in an address book

• PeerApplication: an application that be shared

• PeerPresence: shows the status of a peer

Page 28: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

WCF Peer Channel

• Built-in goodies for creating p2p applications

• Handles most of the plumbing• Has PeerNodes, PeerMeshes and uses

the PNRP Resolver• Good starting point for p2p apps not tied to

Vista• Same requirements as using the

PeerToPeer namespace

Page 29: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

What We Covered

• Peer-to-Peer Overview

• Tour of the System.Net.PeerToPeer Namespace

• Hot Peer-to-Peer Action (demo)

• Peek at other .NET Peer-to-Peer technologies

Page 30: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Resources

• Good Overview: http://msdn.microsoft.com/en-us/library/cc297274.aspx

• PNRP v2 Update for XP: http://support.microsoft.com/default.aspx/kb/920342

• P2P Blog: http://blogs.msdn.com/p2p/default.aspx• NETSH:

http://technet2.microsoft.com/windowsserver/en/library/61427fbd-de1f-4c8a-b613-321f7a3cca6a1033.mspx?mfr=true

• WCF PeerChannel: http://msdn.microsoft.com/en-us/library/ms731061.aspx

Page 31: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com.

Contact Info & Shameless Plug

• Email: [email protected] or [email protected]

• Blog: www.vpsw.com/blogbaby

meets the Second Wednesday of every monthwww.rocknug.org


Recommended