<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Ravi Rao's Blog</title><link>http://blogs.msdn.com/ravirao/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Get Visual Studio 2005 Express for Free!</title><link>http://blogs.msdn.com/ravirao/archive/2005/11/08/490702.aspx</link><pubDate>Wed, 09 Nov 2005 08:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:490702</guid><dc:creator>ravirao</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/490702.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=490702</wfw:commentRss><description>&lt;P&gt;Great deal!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/default.aspx"&gt;http://msdn.microsoft.com/vstudio/express/default.aspx&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=490702" width="1" height="1"&gt;</description></item><item><title>PDC '05 videos are now online</title><link>http://blogs.msdn.com/ravirao/archive/2005/10/30/486961.aspx</link><pubDate>Sun, 30 Oct 2005 12:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:486961</guid><dc:creator>ravirao</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/486961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=486961</wfw:commentRss><description>&lt;P&gt;All talks are available at &lt;A href="http://microsoft.sitestream.com/PDC05/"&gt;http://microsoft.sitestream.com/PDC05/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;People Near Me Talk: &lt;A href="http://microsoft.sitestream.com/PDC05/COM/COM319.htm#nopreload=1&amp;amp;autostart=1"&gt;http://microsoft.sitestream.com/PDC05/COM/COM319.htm#nopreload=1&amp;amp;autostart=1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Peer to Peer Talk: &lt;A href="http://microsoft.sitestream.com/PDC05/COM/COM311.htm#nopreload=1&amp;amp;autostart=1"&gt;http://microsoft.sitestream.com/PDC05/COM/COM311.htm#nopreload=1&amp;amp;autostart=1&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=486961" width="1" height="1"&gt;</description></item><item><title>FAQ</title><link>http://blogs.msdn.com/ravirao/archive/2005/10/29/486901.aspx</link><pubDate>Sun, 30 Oct 2005 07:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:486901</guid><dc:creator>ravirao</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/486901.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=486901</wfw:commentRss><description>&lt;P&gt;I'll try to keep this FAQ updated on the general questions asked on the p2p infrastructure:&lt;/P&gt;
&lt;P&gt;1. How scalable is the p2p framework?&lt;/P&gt;
&lt;P&gt;* PNRP is the serverless name resolution protocol, and is scalable to the size of the internet.&lt;/P&gt;
&lt;P&gt;* Graphing/Grouping: These are protocols intended for peer to peer group activities, and are scalable to the thousands.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;* Peer Channel (a part of the Windows Communication Foundation): These protocols intended for multiparty messaging are scalable to the tens of thousands and likely more (still testing)&lt;/P&gt;
&lt;P&gt;2. How much bandwidth do these protocols consume?&lt;/P&gt;
&lt;P&gt;The protocols in general are intended to consume far less traffic than any application using the framework will consume. We are in the process of testing bandwidth consumption, and will be happy to share numbers in a little time.&lt;/P&gt;
&lt;P&gt;3. How much time is spent before a node connects to a network?&lt;/P&gt;
&lt;P&gt;* PNRP - should be less than 10 seconds&lt;/P&gt;
&lt;P&gt;* Graphing/Grouping/Peer Channel - this really depends on the mechanism used to find a node in the mesh to connect to. If PNRP is used as the mechanism of finding such a node, then it will take a couple of seconds more. The actual connection establishment mechanism is fairly quick.&lt;/P&gt;
&lt;P&gt;4. Where is Teredo server currently setup? &lt;/P&gt;
&lt;P&gt;Microsoft hosts a public Teredo server that is available for all applications to automatically use. To learn more on Teredo, take a look at&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/teredo.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/teredo.mspx&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;5. What&amp;nbsp;are the typical topologies formed for say when 30 nodes gets connected in a multiparty activity?&lt;/P&gt;
&lt;P&gt;Take a look at the white paper &lt;A href="http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/p2pintro.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/p2pintro.mspx&lt;/A&gt;, which shows what a graph looks like.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;6. Reliability. When a message sent by a node does not receive a response, does it really means node isn't? Numbers of hops may be pretty large and hence chance of message loss is pretty high. Is it true? &lt;/P&gt;
&lt;P&gt;* PNRP - if a response is not received, then almost certainly, the node is either not accessible because it is behind a corporate firewall for instance, or it is just not online&lt;/P&gt;
&lt;P&gt;* Graphing/Grouping/Peer Channel - if a message is not received, then there are some possibilities (all of which should be very rare) - the mesh is partitioned and a message consequently could not get through, some neighbor was just not able to forward the message on, or the local stack itself did not deliver the message to the application. All of these should be very rare, however, if your application requires reliability guarantees (100% of the time), then you may have to implement a simple protocol on top of the peer channel for this purpose.&lt;BR&gt;&lt;BR&gt;7. Replicated data store. Is it built on SQL Server, XML or something else? How dynamics are orchastrated? What happens when A syncs with B and C, B syncs with D and then C syncs with D? Would there be any ADO.Net provider to access this data store? Are there any events raised as data changes? Is there any built in features to maintain versions of data? &lt;/P&gt;
&lt;P&gt;* The data store is a very simple store. It does allow for use of XML attributes in records that you can use for searching for relevant data. The synchronization protocol is based both on timestamp and version number, and is based on the last writer wins principle. However, you can enforce security in the group so as to ensure that no one else can clobber your records. There are no ADO.Net providers for this data store. There are record events raised any time data is added/deleted/modified.&lt;BR&gt;&lt;BR&gt;8. Real time streaming capabilities. Can a node, for example, transmit the video content to thousands of other nodes without reaching bandwidth bottlenecks. &lt;/P&gt;
&lt;P&gt;* A group and a graph cannot be used directly for streaming. You would use the group/graph as a mechanism to get the topology, and then construct a streaming overlay on top. You can always use the underlying graph for sending less real-time sensitve data such as chat, collateral for meetings etc.&lt;/P&gt;
&lt;P&gt;* The peer channel (which is showing incredibly high throughput numbers) could be usable in streaming scenarios. We are currently evaluating that. If you are interested, let me know and we can discuss.&lt;BR&gt;&lt;BR&gt;9. Distributed computing. Is there any built-in features to let node execure code on other nodes remotely (P2P version of RPC)?&lt;/P&gt;
&lt;P&gt;* The data you send in messages to the mesh could contain anything. Your application which installed on all machines can quite easily send some data (which is code) to execute on other machines. However, our infrastructure natively does not enable these scenarios yet.&lt;/P&gt;
&lt;P&gt;10. How does WCF/Indigo compare with Bonjour/Rendezvous?&lt;/P&gt;
&lt;P&gt;* WCF enables messaging peer to peer, client server, amongst servers etc. It implements a large set of WS-* protocols for interop with other web services protocols/infrastructures as well. Bonjour is just a small piece of messaging from Apple that focuses on finding devices on the same subnet. It is likely similar to one protocol, WS-Discovery which enables discovery of services on the network. It is designed to be a scalable architecture that can be bridged across subnets using proxies. It is shipping as part of Windows Vista. Another piece built on WS-Discovery that Bonjour may be close to is People Near Me, which enables discovery of people located on the same subnet. Bonjour does not use PNRP! Neither does WS Discovery. The two are not compatible with each other.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=486901" width="1" height="1"&gt;</description></item><item><title>Adrian Moore's managed projects</title><link>http://blogs.msdn.com/ravirao/archive/2005/10/29/486897.aspx</link><pubDate>Sun, 30 Oct 2005 07:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:486897</guid><dc:creator>ravirao</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/486897.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=486897</wfw:commentRss><description>&lt;P&gt;Some cool work by &lt;A href="http://mooresmind.blogspot.com"&gt;Adrian Moore&lt;/A&gt;&amp;nbsp;on managed wrappers and project built on the peer to peer collaboration framework.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;A href="http://www.codeproject.com/csharp/PeerNameResolution.asp"&gt;http://www.codeproject.com/csharp/PeerNameResolution.asp&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=486897" width="1" height="1"&gt;</description></item><item><title>I did a People Near Me Podcast</title><link>http://blogs.msdn.com/ravirao/archive/2005/10/29/486895.aspx</link><pubDate>Sun, 30 Oct 2005 07:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:486895</guid><dc:creator>ravirao</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/486895.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=486895</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://ch1.learningfeeds.com/"&gt;http://ch1.learningfeeds.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Let me know what you think!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=486895" width="1" height="1"&gt;</description></item><item><title>Peer to Peer Whitepapers suggestions?</title><link>http://blogs.msdn.com/ravirao/archive/2005/10/08/478609.aspx</link><pubDate>Sat, 08 Oct 2005 21:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:478609</guid><dc:creator>ravirao</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/478609.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=478609</wfw:commentRss><description>&lt;P&gt;Any suggestions on the kinds of whitepapers you would like to see on the peer to peer collaboration space? We have technologies for serverless name resolution, multiparty communication meshes, people near me and application invite, amongst others.&lt;/P&gt;
&lt;P&gt;We already have an introductory white paper on the website. Have you read it? What are your thoughts on it, and suggestions for improvement?&lt;/P&gt;
&lt;P&gt;Also, let us know what other white papers you think we should have.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=478609" width="1" height="1"&gt;</description></item><item><title>Event name suggestions?</title><link>http://blogs.msdn.com/ravirao/archive/2005/10/07/478508.aspx</link><pubDate>Sat, 08 Oct 2005 08:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:478508</guid><dc:creator>ravirao</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/478508.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=478508</wfw:commentRss><description>&lt;P&gt;So, we are trying to figure out a good name for an event for the following:&lt;/P&gt;
&lt;P&gt;The mechanism by which you access published capabilities and objects from a person near you is by calling the PeerCollabRefreshEndpointData() API. This API effectively refreshes the local cache with whatever data is being published by the endpoint. Since this is a network operation, it is asynchronous, and has an event for when the operation completes. We are trying to figure out a good name for this operation.&lt;/P&gt;
&lt;P&gt;Any thoughts, on what sounds like a good name? Each event is associated with a structure containing the data that was returned. Please give suggestions!&lt;/P&gt;
&lt;P&gt;PEER_EVENT_ENDPOINT_DATA_REFRESHED&lt;/P&gt;
&lt;P&gt;PEER_EVENT_ENDPOINT_DATA_CHANGED&lt;/P&gt;
&lt;P&gt;PEER_EVENT_ENDPOINT_DATA_AVAILABLE&lt;/P&gt;
&lt;P&gt;Any other ideas?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=478508" width="1" height="1"&gt;</description></item><item><title>API model for People Near Me vs Internet/Contacts presence</title><link>http://blogs.msdn.com/ravirao/archive/2005/10/02/476344.aspx</link><pubDate>Mon, 03 Oct 2005 09:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:476344</guid><dc:creator>ravirao</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/476344.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=476344</wfw:commentRss><description>&lt;P&gt;The model for presence revolves around contacts. You have a bunch of contacts, and you want to get their presence when you sign in, and if they signed-in after you did, then you get their presence at that point of time. That is, the programming model is a subscription model. The infrastructure automatically subscribes to the presence, capabilities and objects of a user's contacts. All API calls are simply local at that point (for instance, getting presence, capabilities, objects).&lt;/P&gt;
&lt;P&gt;With People Near Me however, the model is a polling model. Since there can be a very large number of people on the same subnet, we do not automatically subscribe to everyone's capabilities and objects. Instead, we expose a method (RequestPublishedItems) for the developer to get the published items (capabilities, objects etc) on demand. Once this API is called, then all operations become local after that much like it is with presence. So, when dealing with people near me, this is an additional API to call for the people you are interested in getting more info from. Now, the API ends up keeping data for future callers as well. Consequently, if another application were to call PeerCollabEnumObjects, it will return the objects returned in a prior call to RequestPublishedItems.&lt;/P&gt;
&lt;P&gt;Some APIs, by design, do not work for People Near Me. For instance, setting the endpoint name does not work, because it is automatically set to the machine name. If you want to get the endpoint name, you get that via the peer_collab_endpoints_near_me event. I'll keep this post updated with other APIs that will not work for one signin option vs another.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=476344" width="1" height="1"&gt;</description></item><item><title>The Peer Channel in Windows Communication Foundation (aka Indigo)</title><link>http://blogs.msdn.com/ravirao/archive/2005/09/26/474231.aspx</link><pubDate>Tue, 27 Sep 2005 05:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:474231</guid><dc:creator>ravirao</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/474231.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=474231</wfw:commentRss><description>&lt;P&gt;At this point, our only managed offering is the peer channel. The peer channel provides multiparty messaging in a mesh. It is an implementation of the graphing/grouping algorithms in Windows Communication Foundation (WCF), and allows you to use the familiar (assuming you are familiar with the WCF programming model) WCF programming model to send transient messages (think multicast) to the mesh. The messages should be small, because the mesh has a certain amount of redundancy to ensure integrity in the face of node transience. It is very straightforward to use if you are familiar with WCF. If not, there are lots of bloggers on WCF who I'm sure will love to help you out.&lt;/P&gt;
&lt;P&gt;We are seeing staggering (from my perspective anyway :)) performance numbers right now, with throughputs of ~1000 messages per second in small meshes...I think it is a bug in our measurements, but we'll know more soon :) However, if the numbers are right, it is a testament to just how performant the stack really is.&lt;/P&gt;
&lt;P&gt;If you are planning on using WCF, and are interested in multiparty communication, consider using the peer channel.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=474231" width="1" height="1"&gt;</description></item><item><title>How do I learn the GUID of the application to send an invite to</title><link>http://blogs.msdn.com/ravirao/archive/2005/09/26/474134.aspx</link><pubDate>Mon, 26 Sep 2005 23:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:474134</guid><dc:creator>ravirao</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/474134.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=474134</wfw:commentRss><description>&lt;P&gt;Applications can publish their availability to people near me. When you call PeerCollabRegisterCapability(), you can specify a scope which is the subnet and information about that application is now available to people near me. Now, each capability is associated with a GUID, a name, description, a path and a scope. If the capability is registered in the pnm scope, then our infrastructure will publish out some information about the application (name, guid, but not the path).&lt;/P&gt;
&lt;P&gt;The client that wishes to send an invite calls RequestPublishedItems(), and can then enumerate the capabilities, to get the GUID of the application to send the invite to.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=474134" width="1" height="1"&gt;</description></item><item><title>What does "Signing In" mean anyway?</title><link>http://blogs.msdn.com/ravirao/archive/2005/09/26/474002.aspx</link><pubDate>Mon, 26 Sep 2005 19:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:474002</guid><dc:creator>ravirao</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/474002.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=474002</wfw:commentRss><description>&lt;P&gt;Our infrastructure exposes APIs to signin...PeerCollabSignin(). There are two primary aspects of signing in:&lt;/P&gt;
&lt;P&gt;1. Signing in to People Near Me (PNM): Signing into PNM means that you are publishing a nickname (which the user entered when our infrastructure was used for the first time) to the people on the same subnet. In addition, you can enumerate the people who have opted in to PNM as well. Applications can also choose to make capabilities and any objects available as well.&lt;/P&gt;
&lt;P&gt;2. Signing in to "Internet": The notion of signing into the Internet is actually a little different from signing into PNM. The idea with signing in to the Internet is that you have the ability to see the presence of &lt;U&gt;your contacts&lt;/U&gt;, not of everyone on the Internet :) Consequently, signing into the Internet requires that you have contacts, so that you can get their presence. However, just because you have added someone as a contact does not mean that you can get that person's presence. The contact on the other end actually needs to have approved you viewing their presence.&lt;/P&gt;
&lt;P&gt;If you look at the PEER_CONTACT structure, there are two fields - fWatch and PEER_WATCHER_PERMISSIONS. You need to add a person as a contact, once you do that you can get a contact structure from it. The fWatch field in this structure is used to tell our infrastructure to get that particular contact's presence. The PEER_WATCHER_PERMISSIONS structure is used to authorize our infrastructure to release my presence to that contact. &lt;/P&gt;
&lt;P&gt;For instance, if Adrian wants to view my presence, then he will mark the fWatch field on my contact to true. However, he will only get my presence after I mark the PEER_WATCHER_PERMISSIONS field as "Allow" on his contact in my list. Similarly, if I want to get Adrian's presence, I mark the fWatch field on Adrian's contact. If Adrian does not want me to see his presence, he would mark the PEER_WATCHER_PERMISSIONS field as "Deny" on my contact. Now, Adrian can watch my presence, but I cannot watch Adrian's presence. This helps in building up a rich presence system.&lt;/P&gt;
&lt;P&gt;The last aspect is...how do we exchange contacts. Contacts are fully integrated with the Windows Address Book (WAB). Just navigate into the WAB, and you will find your own contact that contains the nickname you had entered about yourself. Put this in email, and send it to your friend. Your friend can now save this in the WAB, and he has your contact info. Your friend would do exactly the same as well.&lt;/P&gt;
&lt;P&gt;The same can be done programmatically as well.&lt;/P&gt;
&lt;P&gt;To summarize, signing into PNM will publish your nickname to people on the same subnet. Signing into the Internet will get presence of your contacts (who have authorized you to get their presence), and will publish your presence to your contacts as well (who you have authorized to see your presence).&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=474002" width="1" height="1"&gt;</description></item><item><title>Terminology used in the peer to peer SDK</title><link>http://blogs.msdn.com/ravirao/archive/2005/09/19/471438.aspx</link><pubDate>Mon, 19 Sep 2005 21:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:471438</guid><dc:creator>ravirao</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/471438.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=471438</wfw:commentRss><description>&lt;P&gt;I'll keep this post updated with new names/terms as we put them in our SDK. Most of our terms had to be prefixed with the word "Peer" because the goal of the SDK (according to the SDK team) is to keep the documentation as *clear* as possible. Not sure we are achieving that goal here :)&lt;/P&gt;
&lt;P&gt;PNRP - Peer Name Resolution Protocol - allows for registering and resolving a name in a secure serverless manner. When you are resolving a name, the protocol assumes that you already know the name you are looking for. It is a "name resolution" protocol, not a "name discovery" protocol. In the context of PNRP, other terms you will see get used are peer names. From the API, you register and resolve for peer names.&lt;/P&gt;
&lt;P&gt;Graphing/Grouping/Peer Channel - all these technologies refer to the notion of being able to do multiparty messaging on top of a mesh. Our infrastructure creates the mesh on top of which developers can call APIs to send messages to all users who are connected to it. There's just lots of different names for the same technology. There are some subtle differences however. Graphing and grouping are win32 native APIs intended for creating a replicated *persisted* store&amp;nbsp;and synchronization. Specifically, graphing lets you plug in your own security model and name resolution service, while grouping comes with a predefined name resolution service (PNRP), and a security model. Peer Channel is meant for multiparty messaging. Messages are sent to everyone, and the application can choose whether they wish to save these messages or not. Peer Channel is part of the Windows Communication Foundation (Indigo) stack.&lt;/P&gt;
&lt;P&gt;Identity - The user identity, which most commonly refers to the default&amp;nbsp;identity that is created on user logon. It has a cert associated with it which is generated locally. This is also called the "Me contact".&lt;/P&gt;
&lt;P&gt;GMC - Group Membership Certificate - this is the identity of a user in a specific group. It is linked to the identity defined above. Basically, this is a group certificate issued to the identity defined above.&lt;/P&gt;
&lt;P&gt;Contact - The "Me Contact" is the same as Identity described above.&amp;nbsp;If you add my Me contact to your contact list (in the Windows Address Book), then I am your Contact. The word "Peer contact" also is used to describe this. In some places, we also seem to use the word "Local peer". &lt;/P&gt;
&lt;P&gt;Capabilities - This just refers to a collaborative application you are writing. Other terms used are "Application, Peer Application".&lt;/P&gt;
&lt;P&gt;PNM - People Near Me Collaboration. Discover people near you and interact with them. PNM is a "Name Discovery" protocol, that is, you discover the name of the people you want to interact with. Since it is on the local subnet, it also ends up giving the associated IP address of the endpoint (person) you want to interact with.&lt;/P&gt;
&lt;P&gt;Q. How do PNM, PNRP and Mesh relate to each other.&lt;/P&gt;
&lt;P&gt;A. Think of it this way. You discover the people located near you using PNM. Information about the person you discover is a peer name. This peer name can be resolved using PNRP to an IP address even if the person is not located nearby anymore. You and the person near you or on the Internet can participate in a group activity (such as chatting or photosharing or gaming) by using one of the mesh technologies.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=471438" width="1" height="1"&gt;</description></item><item><title>What is this collaboration host icon that shows up on my tray...</title><link>http://blogs.msdn.com/ravirao/archive/2005/09/19/471406.aspx</link><pubDate>Mon, 19 Sep 2005 21:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:471406</guid><dc:creator>ravirao</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/471406.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=471406</wfw:commentRss><description>&lt;P&gt;If you are developing to the peer to peer collaboration APIs you may see a tray icon appear when you first use the APIs. This is the collaboration host (the process name is p2phost.exe, and it is a user mode process). p2phost.exe is responsible for listening for incoming invitations, and for popping up UI asking the user to authorize the launch of an application. In addition, you would be able to opt in and out of people near me publication.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=471406" width="1" height="1"&gt;</description></item><item><title>Questions asked during the PDC talk on developing P2P applications</title><link>http://blogs.msdn.com/ravirao/archive/2005/09/16/468933.aspx</link><pubDate>Fri, 16 Sep 2005 19:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:468933</guid><dc:creator>ravirao</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/468933.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=468933</wfw:commentRss><description>&lt;P&gt;Q. Is there a concept of an owner/administrator of a mesh?&lt;BR&gt;A. Yes, you can have roles in a mesh.&lt;/P&gt;
&lt;P&gt;Q. Is there a way to kick someone out of a mesh?&lt;BR&gt;A: Currently, the only way to kick someone out of a mesh is to create another mesh without this member. Clearly, this may work with small groups, but not with larger groups. With larger groups, we currently do not have a means to revoke a person from a mesh.&lt;/P&gt;
&lt;P&gt;Q: What are the differnet optimizations that are done on the mesh, and how do these work?&lt;BR&gt;A: Meshes are dynamically shaped for optimizing data delivery to all nodes, and meshes are very difficult to get partitioned. If they do get partitioned, some of our offerings have ways in which these can be repaired. To read on details on how the mesh algorithms work at a high level, please take a look at this white paper &lt;A href="http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/p2pintro.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/p2pintro.mspx&lt;/A&gt;&amp;nbsp;under the section of graphing. Please note that we use the words graphing, grouping, peer channel and mesh interchangeably just to keep things confusing :)&lt;/P&gt;
&lt;P&gt;Q: Is there a way in which data sent in the mesh can be signed so that it is not tampered?&lt;BR&gt;A: Yes, data sent in the mesh can be signed and encrypted.&lt;/P&gt;
&lt;P&gt;Q: Are there any message patterns/protocols being standardized on top of the mesh?&lt;BR&gt;A: WCF (aka Indigo) provides a means by which services/protocols can be composed on top of existing channels. I don't have information on whether any of these message patterns built on top of the peer channel would get standardized or not at this stage.&lt;/P&gt;
&lt;P&gt;Q: Are there constraints to the clients on how much data can be sent?&lt;BR&gt;A: There are limits on how much data can be flooded around to prevent obvious DoS attacks.&lt;/P&gt;
&lt;P&gt;Q: What are the plans with standards body alignment?&lt;BR&gt;A: At this stage, I don't have anything concrete to tell you all. Please stay tuned in this space.&lt;/P&gt;
&lt;P&gt;Q: When would I use grouping vs the peer channel?&lt;BR&gt;A: Grouping is a win32 API that enables multiparty replication/synchronization on a small scale (in the hundreds). If you have the need to maintain a history for what has happened in a mesh, then the grouping technology would suit you best. Peer Channel on the other hand is a multiparty messaging system (with no backing store for the data sent) that is intended for larger scale scenarios (where number of participants is in the thousands). Clearly, you could use either technology depending on what your needs are. If you want data replication in the peer channel, you would have to maintain your own store. If you want messaging in grouping, you would need to send short lifetime records that are replicated. It depends on the scenario. If you want managed API, and are already building a WCF application, then the peer channel may be the way to go. If you already have a win32 application that you are enhancing, then grouping could be the way to go. We are providing different options for you to pick from.&lt;/P&gt;
&lt;P&gt;Q: How do the contact certs in question get deployed on the various machines?&lt;BR&gt;A: This is out of band of our infrastructure, and admittedly, is a little hard. We are making it as simple as emailing the Me contact which is located in the WAB, but it is still a manual step outside of our infrastructure.&amp;nbsp;Do you think this is actually that hard? I am interested in hearing your feedback on how we could make this easier&amp;nbsp;if this is a hard problem.&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=468933" width="1" height="1"&gt;</description></item><item><title>Some useful links</title><link>http://blogs.msdn.com/ravirao/archive/2005/09/15/468069.aspx</link><pubDate>Fri, 16 Sep 2005 04:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:468069</guid><dc:creator>ravirao</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ravirao/comments/468069.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ravirao/commentrss.aspx?PostID=468069</wfw:commentRss><description>&lt;P&gt;Here are some useful links on P2P:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/p2p"&gt;http://www.microsoft.com/p2p&lt;/A&gt;&amp;nbsp;(uber website, badly in need of updating)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/p2pintro.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/p2pintro.mspx&lt;/A&gt;&amp;nbsp;(White paper)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/P2PSDK/p2p/collaboration_api_reference.asp"&gt;http://windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/P2PSDK/p2p/collaboration_api_reference.asp&lt;/A&gt;&amp;nbsp;(Windows Vista p2p collaboration APIs)&lt;/P&gt;
&lt;P&gt;&lt;A href="mailto:peerfb@microsoft.com"&gt;peerfb@microsoft.com&lt;/A&gt; (email alias for questions)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.thoughtpost.com/p2p.aspx"&gt;http://www.thoughtpost.com/p2p.aspx&lt;/A&gt;&amp;nbsp;(Managed Wrappers for PNRP, Graphing and Grouping)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://mooresmind.blogspot.com"&gt;http://mooresmind.blogspot.com&lt;/A&gt;&amp;nbsp;(Managed wrappers from Adrian Moore on the P2P Collaboration Infrastructure)&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;A href="http://www.codeproject.com/csharp/PeerNameResolution.asp"&gt;&lt;FONT face="Times New Roman" size=3&gt;http://www.codeproject.com/csharp/PeerNameResolution.asp&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Times New Roman" size=3&gt; (Managed project built on p2p collaboration infrastructure by Adrian Moore)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=468069" width="1" height="1"&gt;</description></item></channel></rss>