Dev*_*fly 5 cloud networking network-protocols
有没有一种方法可以让服务器以无线方式、无缝地将一些数据推送到客户端(可能是 Windows(手机)、iPhone、Mac 或 Android 设备),而无需任何操作系统集成?
如果是这样,实现此目的的最佳设计模式是什么?实现此目的的最佳技术是什么?
推送技术只是服务器发起数据传输的一种方法,而不是客户端向服务器请求数据。
Apple 通过在操作系统中提供内置功能,使推送技术相对易于使用。以及 Android 通过Google Cloud Messaging for Android。然而,Windows 却没有。
Apple 的推送通知和 Google 的 Android 消息传递看起来很神奇,并且/或者是操作系统需要处理的功能;然而,情况并非一定如此。将其“集成”到操作系统中的优点与让框架为您处理功能相同。
用技术术语来说,推送技术是从客户端到接受消息的服务器的长期连接。这些消息将被视为推送消息,因为客户端没有对它们发出单独的请求。
在自己实现推送技术时要记住的主要事情是,客户端负责尽可能保持长期连接的活动。由于客户端 IP 地址可能会在断开连接之间发生变化,因此服务器无法保证客户端的地址在断开连接期间保持不变。此外,客户端可以从防火墙后面连接,从而使服务器无法到达客户端。
相比之下,拉技术是客户端连接到服务器并请求数据的更传统的过程。
Apple iOS 的最佳选择是使用他们的推送通知服务。
对于 Android 设备,您应该使用Android 版 Google Cloud Messaging。或者,您可以创建自己的后台服务来处理消息传递;这是一个指南。
对于 Windows(至少是桌面版),您必须创建自己的服务来执行此类职责。以下MSDN 指南解释了如何使用 Visual Studio(VB 和 C#)创建 Windows 服务。可能已经构建了在 Windows 上处理此类消息传递的框架,但我不知道有任何框架。