We are looking to build a .NET based collaborative platform that enables logged in users to detect presence of other members and allow them to share/chat online. Members/Client interface is usually a browser and at times a winforms based application could also be used. System.Net.PeerToPeer namespace appears to address the naming issues with some level of OS independence(with additional updates), however presence and chat infrastructure is not available on all Windows platforms. System.Net.PeerToPeer.Collaboration has OS bindings and user presence cannot be maintained at the server. Also, in the future, its possible that more collaborative services might be required, such as sharing desktops etc.
Are there any .NET libraries that allow such capabilities or a custom solution would be required?