The .NET class library provides multiple technologies for communicating between computers. Some of these are layered on top of one another. You choose a high-level or low-level technology based on how much control you need and how much simplicity you would like.
Some of these technologies include
The low-level networking classes in the System.Net.Sockets namespace, which wrap the Windows Sockets (Winsock) interface and allow you to create and access TCP channels directly. These classes are the heart of most peer-to-peer applications.
The networking classes in the System.Net namespace, which allow you to use a request or response access pattern with a URI over (HTTP).
The higher-level Remoting infrastructure, which allows you to interact with (or create) objects in other application domains using pluggable channels including TCP and HTTP and formats including binary encoding or SOAP. These classes can also be used in a peer-to-peer application, with some adaptation.
The higher-level web services infrastructure, which provides fixed services as static class methods. This model is not suited for peer-to-peer communication, but is useful when creating a discovery service.
In addition, there are several .NET technologies that you'll need to use and understand as part of any peer-to-peer application that isn't trivially simple. This includes threading, serialization, code access security, and encryption. You'll get a taste of all of these in this book.
Finally, it's worth mentioning a few third-party tools that you'll see in Part Four of this book.
Windows Messenger is Microsoft's instant-messaging product. There is some published information available on the Windows Messenger protocol, and even a .NET library that allows you to harness it in your own software. See Chapter 12 for more information.
Groove is a platform for collaborative applications that manages the synchronization of a shared space. It's not free, but it's powerful, and Chapter 12 shows how it can help your applications.
Intel provides a free .NET Peer-to-Peer Accelerator Kit, which extends .NET's Remoting infrastructure with support for security, discovery, and limited firewall traversal. It's still an early product, but it promises to eliminate some of the connectivity headaches with peer-to-peer on the Web. You'll consider Intel's toolkit in Chapter 13.