Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用XMPP而不是HTTP_Iphone_Ruby On Rails_Http_Xmpp - Fatal编程技术网

Iphone 使用XMPP而不是HTTP

Iphone 使用XMPP而不是HTTP,iphone,ruby-on-rails,http,xmpp,Iphone,Ruby On Rails,Http,Xmpp,我和我的朋友正在开发iPhone应用程序。此应用程序使用XMPP协议提供聊天功能。现在我们正在为应用程序设计体系结构 所以我的朋友在iPhone端工作,我是RubyonRails的家伙 我的朋友建议,我们将通常通过HTTP提供的每一个调用打包到XMPP中。所以,用户注册、用户搜索、个人资料编辑、照片上传,一切都通过XMPP进行。根本没有HTTP 我的朋友想使用XMPP,因为他说,在客户端而不是HTTP上实现XMPP要容易得多。对我来说,这是胡说八道,但我们有一个产品负责人,他和我的朋友合作了很长

我和我的朋友正在开发iPhone应用程序。此应用程序使用XMPP协议提供聊天功能。现在我们正在为应用程序设计体系结构

所以我的朋友在iPhone端工作,我是RubyonRails的家伙

我的朋友建议,我们将通常通过HTTP提供的每一个调用打包到XMPP中。所以,用户注册、用户搜索、个人资料编辑、照片上传,一切都通过XMPP进行。根本没有HTTP

我的朋友想使用XMPP,因为他说,在客户端而不是HTTP上实现XMPP要容易得多。对我来说,这是胡说八道,但我们有一个产品负责人,他和我的朋友合作了很长时间,他信任他

所以我要做的是说服我的朋友和产品负责人,使用XMPP实现HTTP可以找到的功能,这绝对不是最好的主意

我觉得,如果我们在XMPP上实现所有东西,我们将痛苦至死。但我如何证明呢

另外,我不反对通过XMPP聊天,我反对用户搜索、照片上传、排名、附近搜索和其他各种restful请求

请留下回复。谢谢你的帮助

一点更新:

昨天我们进行了长时间的讨论。事实证明,在Objective-C中很难同时收到XMPP和HTTP的响应。因为每个对象及其数据都应该存储在核心数据模型中,而这个模型不能从不同的地方安全地修改。比方说,如果您使用HTTP传输,您总是希望仅使用HTTP传输来更新模型中的数据。如果您使用XMPP,您应该始终使用XMPP。所以,你不能两者都用

这是我的iPhone好友告诉我的。
对我来说这听起来很奇怪,有人能解释一下吗

让他在所有HTTP调用中使用ASIHttpRequest,然后询问等价的库在哪里,这将使在XMPP调用中包装数据变得同样容易

XMPP非常适合它的用途:聊天。HTTP非常适合它所做的事情——与web服务器或web服务的通信。您可以获得理解POST和get之间差异的web服务器,您可以获得理解如何优化HTTP流量的代理,您可以获得大型有效负载的自动服务器端压缩,您可以在任何浏览器中分析调用,您可以使用各种工具,如专门用于分析HTTP流量的工具,以便查看您发送的内容


当然,HTTP在库为您处理的协议中内置了多种身份验证,而不是在XMPP之上构建一个损坏的身份验证系统(第一次设计任何身份验证系统都会有缺陷)。

XMPP比直接的JSON消息传递更难在iPhone上实现。插入一些HTTP调用并使用JSON repsonse来处理数据很容易。这是给你的iPhone家伙的一个快捷方式


如果你有一个经验丰富的团队能够处理好新的和伟大的事情,那么实施新的和伟大的事情是非常棒的。在你们两人能够很好地一起编程并跳出设备服务器交互的框框之前,我想说的是坚持标准。

这是一个关于不能从不同来源更新核心数据的更新点的答案

我觉得这根本不对。我用HTTP、JSON和XML(XMPP是其中的一个子集)完成了许多核心数据应用程序。以下是处理核心数据的模式:

1) 从服务器获取数据 2) 使用所需的任何解析器(JSON、XML等)进行解析。 3) 从解析后的字典或数组中获取数据,放入核心数据对象中。 4) 保存核心数据模型

在XMPP的情况下,您可能有一个流式解析器,而不是在解析之前获取所有数据,但这并不重要。如果需要,可以使用不同的上下文将数据从后台线程存储到核心数据中

基本上,这种方法是将服务器请求分解为获取数据所需的任何操作,每个操作都可以将数据放入模型的不同部分

也许他需要一些来自HTTP端的数据,然后才能对XMPP数据进行操作?如果是这样的话,他可以保存双方的部分数据,直到他有足够的数据,并将该数据集标记为完整以供使用


对于我来说,把XMPP流量以外的任何东西放到XMPP中都是没有意义的…

XMPP有一些特定的优点:在客户端易于实现,发布-订阅基础设施(在大多数情况下优于Http轮询),设计上可伸缩和可扩展,开源社区等等

当然,HTTP是比XMPP/Jabber更成熟的协议。使用XMPP,您可能会在安全配置(端口阻塞等)方面遇到一些问题,HTTP将更容易使用

在XMPP世界中实现功能和业务逻辑(排名、搜索…)时,必须创建一些非标准的模块实现和/或修改现有服务器的代码库

您可以通过HTTP检查XMPP(通过BOSH),使用XMPP和HTTP协议,使用到HTTP服务器的双向流

最近有一些web应用程序在XMPP协议上运行:chesspark(closed),drop.io

注意:大多数XMPP服务器支持现代身份验证机制和加密类型(TLS)


XMPP是一个成熟的、有很好文档记录的、在很多方面都很有能力的协议,但是您必须非常小心地选择它作为项目的主要开发环境。你必须花一些时间来检查它是否真的适合你的需要。我推荐O'Reilly的XMPP书作为参考。

我同意,在这种情况下使用XMPP而不是HTTP是发明自行车的一种方式。我更新了我的问题,提供了更多的细节。是的,我会的,但是你认为使用XMPP而不是HTTP在一般情况下怎么样?这没有任何意义,因为