Déjà il y à de nombreuses façon de faire un chat, tu peu avoir une partie serveur à faire, par exemple en ASP.NET, puis à toi de voir ce que tu veux comme partie cliente, par exemple en client léger (web simplement) ou lourd (RIA, VB.net,...) et du coup ça sera pas programmé pareil.