如何将数据推送到.NET CF客户端?

5

虽然轮询一个 Web 服务可能是可行的,但除了使用 Exchange Server 邮件传输之外,您知道其他将更改推送到移动客户端的方法吗?


你介意分享你提到的源代码(POC)吗? - user529002
4个回答

3

我曾在微软动态移动团队工作(直到2009年1月),当时在.NET CF上除了通过Exchange Server邮件传输方式外,没有其他内置的方法可以实现这一点。

然而,我的一个同事进行了一次尝试,其中移动客户端打开了与服务的HTTP连接并保持连接状态,因此服务有一个开放的通道可以推送数据。

据我所知,这基本上就是Exchange Server邮件传输所做的。我记得他成功地将其运作起来,但我会给他发推文,看看是否可以让他加入讨论。


3
正如Mark Seemann所说:我曾经在微软动态移动团队时为.NET CF设计客户端通知系统的POC(概念证明)。

当时我没有找到任何现成的解决方案,因此不想依赖于Exchange Server连接,因为预期的用户没有AD帐户,而且很可能没有使用Exchange服务器。所以我和你现在一样处于同样的境地。我开始寻找可能的解决方案...

我意识到服务器无法连接到客户端,因为其IP地址不断变化(从3G到WiFi,失去连接等)。客户端必须连接到服务器。此外,我发现大多数网络允许HTTP连接,但并非总是允许自定义端口上的自定义TCP连接。

我使用“Comet”进行长时间保持的http请求,从客户端(.NET CF)到服务器(IIS),并使用此连接将通知推送到客户端。如果客户端在给出通知之前超时,它将简单地发出新请求。

在服务器端,我使用了AsyncHttpHandler和等待线程的组合,每秒检查连接的客户端是否有消息。使用AsyncHttpHandler非常重要,否则您将阻塞IIS服务器。

POC工作良好,证明是可靠的解决方案。这种方法也有一些缺点:如果不小心,您会很快耗尽电池。

不幸的是,代码行数太多了,我无法在此处发布代码,但如果您愿意,可以随时与我联系,我将通过电子邮件发送我的POC。


2

试试看使用WebSync,这是一个用于IIS/.NET的Comet服务器。现在已经完全支持压缩框架。


WebSync的URL已更改为https://www.frozenmountain.com/products-services/websync/。 - iappwebdev

-1

以下是在内部网络中使用的一些选项:

  1. MSQM
  2. TcpListener

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

对于第二个选项,您必须实现自己的协议。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接