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

时间:2010-01-07 10:31:09

标签: wcf web-services architecture compact-framework

虽然可以轮询网络服务,但是除了使用交换服务器邮件传输之外,您是否知道将更改推送到移动客户端的其他方法?

4 个答案:

答案 0 :(得分:3)

当我在Microsoft Dynamics Mobile团队工作时(直到2009年1月),除了通过Exchange Server邮件传输之外,没有其他内置方法可以在.NET CF上执行此操作。

然而,我的一位同事做了一个高峰,移动客户端开启了与服务的HTTP连接并保持打开状态,从而服务有一个可以推送的开放频道。

AFAIK,这基本上是Exchange Server邮件传输的功能。 IIRC,他让它工作正常,但我会打电话给他,看看我是否可以让他进入。

答案 1 :(得分:3)

正如Mark Seemann所说:当我在Microsoft Dynamics Mobile团队时,我曾经为.NET CF做过客户端通知系统的POC。

当时我没有找到任何可以做到这一点的Out-Of-The-Box解决方案,而且我不想捎带Exchange Server连接,因为目标用户没有AD帐户,而且大多数certanly没有使用交换服务器。所以我和你现在的情况一样。我开始寻找可能的解决方案......

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

我使用“Comet”来执行从客户端(.NET CF)到服务器(IIS)的长期http请求,并使用此连接将通知推送到客户端。如果客户端在发出通知之前超时,则只会发出新请求。

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

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

不幸的是,我在这里发布代码的代码太多了,但是如果你喜欢的话,欢迎你联系我,我会给你发电子邮件给我。

答案 2 :(得分:2)

尝试查看WebSync,一个用于IIS / .NET的彗星服务器。它现在得到了完整的紧凑框架支持。

答案 3 :(得分:-1)

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

  1. MSQM
  2. 的TcpListener
  3. 对于选项1,您需要安装另一个基础架构,但您获得了标准的API和协议。

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

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