ran*_*its 26 erlang android rpc tcp ios
我正在iOS和Android中构建本机移动应用程序.这些应用程序需要与服务器进行"实时"更新,与任何其他基于网络的应用程序相同(Facebook,Twitter,社交游戏,如Words with Friends等)
我认为使用HTTP长轮询是因为长轮询可能对电池寿命有害,尤其是在大量TCP设置/拆除时.让移动应用程序使用持久性TCP套接字建立与服务器的连接,并将RPC样式命令发送到服务器以进行所有Web服务通信可能是有意义的.当然,这需要服务器处理长期存在的TCP连接,并且一旦理解了传递到TCP管道的数据,就能够与Web服务通信.我正在考虑使用JSON或XML以纯文本格式传递数据.
也许基于Erlang的RPC服务器可以很好地用于这样的基于网络的应用程序.它允许移动应用程序通过一个连接从服务器发送和接收数据,而无需多个设置/拆卸,单个HTTP请求将使用类似iOS上的NSURLConnection.由于不涉及Web浏览器,我们不需要在移动客户端级别处理HTTP的细微差别.很多这些"COMET"和长轮询/流媒体服务器都是基于HTTP构建的.我认为只使用TCP上的纯文本协议就足够了,可以使客户端响应更快,允许从服务器接收更新,并通过传统的长轮询和流模型保持电池寿命.
目前是否有人使用其原生iOS或Android应用程序执行此操作?您是否编写了自己的服务器,或者是否有一些开源的东西,我今天可以开始使用而不是重新发明轮子?有没有理由为什么只使用基于TCP的RPC服务比使用HTTP更糟糕?
我还研究了HTTP流水线技术,但在客户端实现它时,它看起来并不值得.此外,我不确定它是否允许在客户端< - >服务器通信通道中进行双向通信.
任何见解将不胜感激.
使用自己的协议的TCP套接字比HTTP更好,特别是在移动设备上的资源性质.Erlang会做得很好,但是让我们从你的协议开始.Erlang在这方面表现优异,尤其是Bit语法表达式.不过,您可以根据需要使用纯文本.JSON(需要一个解析器:Mochijson2.erl中发现了Mochiweb库)和XML(需要一个解析器:Erlsom).
我亲自参与了一个项目,我们使用我们的Erlang服务器和移动设备使用原始TCP套接字.但是,根据您选择的端口号,沿途路由器会阻止这取决于服务提供商的安全策略/丢弃数据包.但是,我仍然认为HTTP可以工作.人们在Facebook Mobile上聊天,从他们的设备发送Twits等,并确信这些社交引擎使用某种长轮询或服务器推送或者其他什么,但使用HTTP.移动设备最近具有先进的功能.
滚动您自己的基于TCP的协议带来了许多挑战:端口选择,在客户端和服务器上解析数据,安全问题等使用HTTP将让您考虑实际问题,而不是花时间纠正客户端或服务器上的协议问题.您上面提到的设备,如Android和IOS(Ipad,Iphone等),非常能够处理HTTP COMET(长轮询).当您遵循移动设备上的Web应用程序标准以及这些W3C移动Web最佳实践时,您的应用程序将使用HTTP运行良好.
使用HTTP方法可以加快工作速度,这些设备的SDK上有很多库可以帮助您将所需的解决方案原型化,而不是滚动自己的基于TCP的纯文本协议.为了支持这种推理,请查看这些W3C调查结果.
最后,让我谈谈这些设备的HTTP优势.如果您要将Web技术用于移动设备,例如Opera Widgets,Phone Gap,Sencha Touch和JQuery Mobile,他们的SDK和库已经为您完成了优化,或者有详细记录的方式可以使您的应用程序高效.此外,这些技术还具有访问本机设备资源的API,如电池检查,短信,彩信,GSM广播频道,联系人,照明,GPS和内存; 全部作为JavaScript类中的API.如果使用本地编程语言(如J2ME,Mobile Python或Symbian C++/Qt)与使用上述CSS3,HTML5和JavaScript工具等Web技术相比,它将变得困难(不灵活).使用上面提到的Web工具将使您的应用程序可以通过Ovi商店或Apple Store从经验中轻松分发.
请注意,如果您使用HTTP,测试将很容易.您所需要的只是一个公共域,因此移动设备上的小部件可以通过Internet找到您的服务器.如果您使用自己的TCP/IP协议,除非您计划使用端口80或其他众所周知的端口,否则网络路由器可能会破坏您使用的端口号,但您的服务器IP仍然必须公开.有一个简短的说明:如果你将TCP服务器置于与测试移动互联网连接相同的ISP之后,ISP路由器将看到源和目标都在其网络后面.但总而言之,滚动自己的协议存在挑战.
编辑:使用HTTP,您将受益于REST.在Erlang(尤其是Yaws和Mochiweb)中实现的Web服务器在REST服务方面表现出色.看看这篇文章:使用Yaws的RESTFUL服务.对于mochiweb,有一篇有趣的文章:使用Mochiweb的一百万用户彗星应用程序,分为3部分.更进一步,你可以看一下这个问题的解决方案.
| 归档时间: |
|
| 查看次数: |
5298 次 |
| 最近记录: |