C#即时通讯

时间:2010-02-18 21:11:36

标签: c# multithreading networking instant-messaging

我正在使用C#开发即时消息程序(仅供学习) 只是想知道我的方式是对还是错 我创建了一个Client类,其中包含NetworkStream和Read / Write函数 服务器为每个客户端创建一个新线程,该线程侦听任何新消息。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

尝试WCF。 Here是一个不错的样本。

答案 1 :(得分:1)

您不一定需要为每个客户端生成一个线程。我将调查Observer设计模式,因为它解决了发布 - 订阅问题,这是查看即时消息应用程序的一种好方法,特别是如果您希望多个侦听器与一个说话者。 这是一个很好的起点:http://www.blackwasp.co.uk/Observer.aspx。此链接讨论观察者模式并提及即时消息:http://www.oodesign.com/observer-pattern.html

您可能会发现单线程方法可能能够跟上大量消息。根据您设计类的方式,您可能会发现将整个对话放在自己的线程中很有用。您还应该考虑使用队列来处理传入和传出的消息,同时在自己的线程中使用队列读取器。

听起来像一个有趣的项目。