2011-10-21 124 views
1

我正在开发一个TCP服务器,如果指定的任务完成,它将与客户端通信。所以我在服务器上打开一个套接字,客户端连接上它。
该连接也可用于数据传输回客户端。这很好。
但是,连接中止以及类似的事情呢?请求处理时永久TCP连接或连接建立

我的想法是每次连接到服务器,当客户端必须与它通信。但是,我怎样才能将数据发送回客户端?
我也可以在客户端打开一个套接字吗?编辑:
我也考虑过WCF。我认为这可能是实现服务器客户端层次结构的一种非常好的方式。
你觉得呢?

回答

0

这取决于您的其他要求。如果我们正在谈论一个可能每天发送一次的消息,正确的解决方案可能是客户端定期连接到服务器并检查是否有消息。如果我们谈论的是更常见,更急速的事情,那么正确的解决方案可能是让客户始终保持与服务器的连接。在某些情况下,如果可能的话,正确的解决方案可能是让服务器与客户端建立“向后”连接 - 如果“向后”连接可能具有退回到从客户端到服务器的持久连接的选项是不可能的。

请参阅Push technology上的这篇文章,特别是关于long polling的部分。

+0

因为存在事件,所以会有大量的事件客户。 – CSchulz

+0

我曾想过WCF。你怎么看? – CSchulz

0

从服务器连接到客户端的运行时间POV需要一个支持此(防火墙/ IDS等)的网络环境。

如果你不能确定这种情况总是如此,那么这个选项就排除了IMO。

至于客户端保持连接打开:

我觉得这是一个不错的选择...您需要确保客户端执行检测到任何连接问题,并自动重新连接......

无论您实施什么解决方案,您可能需要为每个客户端实施一系列事件...取决于您的请求,这些队列甚至可能需要持久化......

WCF可以以我描述的所有方式工作,并提供几件事情(如序列化,可选会话管理,传输安全等)这有助于构建一个强大且可维护的系统......尽管基于TCP/IP的纯粹解决方案可能会更好地提高性能......