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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/3.jpg)
First Pier-to-Pier Network
![Page 4: Peer-to-Peer Programming with.NET 3.5 Dean Fiala Very Practical Software vpsw.com](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070404/56649f345503460f94c52537/html5/thumbnails/31.jpg)
Contact Info & Shameless Plug
• Email: [email protected] or [email protected]
• Blog: www.vpsw.com/blogbaby
meets the Second Wednesday of every monthwww.rocknug.org