编写主题pub / sub系统

时间:2009-06-24 15:58:59

标签: c# networking asynchronous

我正在编写将发布和订阅主题的客户端/服务器应用程序。 关于这个项目的体系结构和实现,我几乎没有问题。

首先设置基础我将使用c#(.NET 3.5),我想明确使用原始套接字/ AIO /线程(首先没有WCF,因为我想根据我的需要微调服务器和客户端)。客户端主要订阅主题,但有时可能会向服务器发送命令甚至发布数据。有些客户也可能只是发布商。

  1. 您认为应该是什么? 我服务器的基本构建块( 每个客户端的线程,iocp,....)。

  2. 客户应该使用相同的 NetworkStream听取订阅 主题和发送命令/发布到 服务器?如何等待数据和 同时将数据写入 流,如果这样做的话 同一个帖子?

  3. (示例代码将不胜感激:))

2 个答案:

答案 0 :(得分:0)

  1. 我会尽可能多地使用异步套接字,因为这样就无需管理自己的线程池来处理请求。

  2. 客户端应使用两个流 - 一个用于列表,另一个用于发送。这将极大地简化客户端和服务器端的事情。同样,使用异步套接字以避免必须管理多个线程。

  3. 确保小心使用异步回调使用的共享资源管理锁定。如果可能的话,尽量避免共享资源。 Managine并发访问事物通常是这类应用中最糟糕的部分。

答案 1 :(得分:0)

你检查过ActiveMQ吗?我相信它已经有了主题,C#有能力通过他们的NMS API与它交谈。