2010-01-07 80 views
5

虽然可以轮询web服务,但是您是否知道另一种将更改推送到移动客户端的方法,除了使用交换服务器邮件传输?如何将数据推送到.NET CF客户端?

+0

你介意分享你提到的(POC)的源代码吗? – 2010-12-03 06:31:15

回答

3

作为Mark Seemann worte:当我在Microsoft Dynamics Mobile团队中时,曾经为.NET CF做过客户端通知系统的POC操作。

当时我没有找到任何可以做到这一点的开箱即用解决方案,并且我不想搭载Exchange Server连接,因为预期用户没有AD帐户,大多数证明没有使用交换服务器。所以我和你现在的情况一样。我开始寻找可能的解决办法...

我意识到,服务器coudn't连接到客户端,因为这个不断变化的IP地址(3G将无线网络,失去连接等)。该地必须连接到服务器。此外,我发现大多数网络允许HTTP连接,但并不总是通过自定义端口的自定义TCP连接。

我用“彗星”做从客户(.NET CF)服务器长期持有的http请求(IIS),并使用该连接推通知到客户端。如果客户在发出通知之前得到超时,它只会发出新的请求。

在服务器端我使用的AsyncHttpHandler的combnation并等待该检查消息发送到连接的客户机的每秒的线程。使用AsyncHttpHandler很重要,否则会阻塞IIS服务器。

POC运作良好,它证明是一个可靠的解决方案。这有一些缺点:如果你不小心,你会很快耗尽电池。

不幸的是简单的参与,我在这里发布的代码的代码行数太多,但如果你喜欢,你更是欢迎与我联系,我会向您发送电子邮件我的POC。

+0

+1酷你加入派对:) – 2010-01-07 19:46:22

3

回来时,我在Microsoft动态移动团队工作(直到2009年1月),没有其他内置的方式做到这一点就不是通过Exchange服务器的邮件传输其他.NET CF。

然而,我的一个同事做了秒杀,其中移动客户端openened HTTP连接到服务,并保持它开放,从而使服务对,它可能会推动一个开放的通道。

AFAIK,这基本上是Exchange Server邮件传输的功能。 IIRC,他得到了它正常的工作,但我会鸣叫他,看能不能让他帮腔

-1

下面是使用一些选项在内部网络:

  1. MSQM
  2. TcpListener

对于选项1,您需要安装另一个基础设施,但您获得了标准的API和协议。

对于第二种选择,你必须实现你自己的协议。

这两个选项仅适用于封闭环境!

+0

@downvoter,我的回答有什么问题? – 2010-01-08 07:28:10

2

尝试检出WebSync,这是IIS/.NET的comet服务器。它现在得到了完整的紧凑框架支持。