2010-07-30 210 views
0

首先,这是对Should I use WCF or raw sockets?的后续问题。感谢所有回复的人,这对我帮助很大!.NET互操作性问题

最近,我的一些要求发生了变化。现在我必须除了支持Windows以外,还要支持Linux客户端。我必须在服务器端使用.NET作为要求。我还需要保持与客户的持续连接(或轮询)。我想请求社区对以下选项的反馈:

  1. 使用更简单的pub-sub模型版本。我在客户端不断轮询的服务器上有一个Web服务(我预先打包了我需要在客户端运行的脚本/二进制文件,并通过服务从服务器发出命令)。服务器将客户端的任务放入队列中,客户端将其选中。这种模式变得高度互操作,因为我可以在任何平台上编写客户端。另外,由于http,我不必担心客户端的防火墙。不过,我担心的是投票(我可能必须每隔几秒轮询一次,对于数千位客户)。我读了Comet,但不幸的是,在C#中实现它似乎有很多努力。

  2. 使用正常套接字,从客户端创建持久连接并使用这些管道。在这里,我担心持续连接(我需要他们来控制客户端,他们在NAT后面)。通常情况下,我看到有人为每个连接创建一个线程,我认为这不是可伸缩的。我对么?异步调用/套接字是否会选择更好的方式?

任何意见将不胜感激。

回答

0

使用标准套接字进行通信将在不同的操作系统之间移植。普通的TCP套接字是一项非常成熟的技术。您也可以使用Web服务(http),这些服务位于套接字之上。穿越互联网时,Web服务更实用(防火墙问题等)。

+0

谢谢seand,我决定用简单的TCP套接字去! – Andy 2010-08-02 09:29:15