What is pub/sub and how to apply it in C# .NET to build a chat app