2014-09-29 46 views
-2

我试图做一个移动应用程序,我发现离子框架看起来很酷。从移动框架的服务器接收更新

看来,REST是一种常见的做事方式,我不明白这个协议的一件事。服务器如何通知他有数据要发送。如果我们有一个文本应用程序,服务器如何通知应用程序(没有推送通知,或者它们是强制性的?)另一个客户端向您发送消息?

REST似乎只适合来自客户端的请求。这是否意味着我必须每X毫秒发送一次更新请求以获得响应式应用程序?我是否必须使用websockets来达到这个目的?我也看到Comet,使用休息是一种好方法吗?

回答

1

REST架构并不真正解决“发布/订阅”(pub/sub)范例。它比这更粗糙。

pub/sub的主要问题是技术问题,尤其是今天。在一个完全连接的互联网中,所有事物都处于已知位置,而基本的REST架构正常工作。简而言之,客户端和服务器的角色来回切换(即服务器在需要发送通知时变成客户端)。

但这不是现实世界。

现实世界是当我们有很多连接设备时,我们没有很多已知的位置。你的手机一直在移动,谁知道它在任何时候都是什么IP地址。 DNS没有帮助,因为您的手机可能未以任何已知名称注册。然后是基础设施问题,即绝大多数客户都被锁定在他们可以发送信息的地方,但无法接收他们,即使我们知道他们是谁,他们在哪里。

因此,REST不会仅仅因为它通常违反几个关键属性而探索该区域。

一个是网址消失。既然我们不知道你在哪里,不知道你是谁,我们无法通过名字找到你。所以,有一种方法可以解决这个问题,那就是通过长期的连接。您的客户端连接到服务器并保留其连接,以便服务器可以回复。但这是一种隐含的有状态联系。 REST驱动朝向无状态,在架构层面上实际上没有连接。

因此,在这样的环境下,REST并不是一个合适的架构,因为机制不能支持一些基本规则。

+0

谢谢,这是一个非常好的解释。你有什么建议在Ionic(或phonegap)这样的移动框架中使用什么来代替REST? – Atol 2014-09-29 19:00:53