7.app和app后端的通讯

经常有开发者问:app和后端通讯是用http协议还是私有的协议?是用长连接还是短连接?通过阅读本文,帮你解除上面的疑问。

  (1)是用http协议还是私有的协议?

  在间谍电视剧中,经常能看到间谍们的书信都是用暗号的,就算书信被敌人截取了不怕,需要耗费一定的时间,敌人才能解开书信中的秘密。

  在电影<阿凡达>, 为提升故事真实性,詹姆斯卡梅隆甚至找到语言学家,专为纳美人创造了一种自己的语言。我们看这部电影的时候,根本听不懂潘多拉星球上的纳美外星人到底说什么?纳美语共有大约1000个单词,全球能够掌握其语法的人只有创造这门语言的PaulFrommer教授一人,而且就算他本人也仍然在学习如何更流畅的说纳美语。

  如果间谍们使用的都是大家都懂的中文,敌人截取到书信,就能立刻知道里面的内容。

  如果潘多拉星球上的纳美外星人说的是中文,那么很多人一听就知道他们是说啥。

  同样的,app和后端的通讯,可以分为用通用的语言通讯,还是用暗语通讯两种方式。

  通用的语言有很多种,例如英语和中文,在网络的通讯中,通用的协议有很多,其中http是被最广泛使用的。如果是私有的协议,那就只能自己设计了。

  用http是最方便的,如果是私有协议,包含协议的封装和拆解,工作量大,前端程序员和后端程序员都要增加很多额外的工作量。而且私有协议对程序员的要求高,不适合从web网站转过来的开发者。除非是手游,不然用http就好了。

  (2)app和服务器通讯使用长连接还是短连接?

  假设现在通过手机拨打另外一个人的手机,手机通话费用非常便宜(甚至可以忽略),但是有两个注意的地方:

  1.一台手机同一时间只能接听一个电话。

  2.一台手机接听电话前非常麻烦,要拨号啦,要等接听,这需要一段时间。

  app和服务器通讯使用长连接还是短连接这个问题,可以等同于上面电话模型,是一直保持着通话,还是有需要时才拨号通话这个问题?

  当app和服务器通讯使用长连接,就相当于一直保持着通话,服务器能保持的通讯数量有限,如果通讯满了,那其他app就不能和服务端通讯了。这种通讯方式,多数是使用socket或websocket连接长时间连接,对程序员的要求比较高,开发比较困难,除了手游和聊天推送服务外,不建议使用。

  当app和服务器通讯使用短连接,就相当于需要时才拨号通话。这种通讯方式,配合http协议,是现在主流的通讯方式,开发效率高,有大量的第三方资源,使用非常广泛,推荐使用这种方式。

  (3)app和后端是怎么通讯的?

  相信大家都用过银行的柜员机(ATM)的查询余额,转帐,取款等操作。

  当在柜员机取款的时候,我们输入要取款的金额,隔一会钱就出来了,如果因为有什么问题不能取款(例如超过取款金额的限制),屏幕上也会显示出错误的信息。

  在整个过程中,我们只要输入金额,获得结果(取款成功或不成功),就行了,至于柜员机内部是怎么处理,我们不需要理会。

  柜员机这种把内部的处理遮蔽的做法极大方便了我们的使用。

  同样的,在后端,也只提供了一系列的功能给app使用,这系列的功能以api的形式提供。

  api的定义:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

  当app调用api的时候,只需要明确下面3点:

  1.这个api是干啥的(柜员机例子中,是取款功能,还是查询余额,还是转账)

  2.知道要输入什么(柜员机例子中,取款要输入金钱)

  3.知道结果是什么(柜员机例子中,取款是成功还是失败)

  至于api内部是怎么处理的,app根本无需理会。

  api,一般是以http的形式调用的,通过http传入参数,返回结果。其中,结果一般是以json格式返回的,因为json格式被众多计算机语言支持,而且省流量。

---------------------------------------------------------------------------------------------------------------------------

打开链接  app后端系列文章总目录 总目录 ,能查看本人发表过的所有原创“app后端”文章。

【作者】曾健生

【QQ】190678908

【qq群】254659220

【微信公众号】 appbackend

【新浪微博】 @newjueqi

【博客】http://blog.csdn.net/newjueqi

时间: 2024-10-16 18:35:46

7.app和app后端的通讯的相关文章

最详细iOS APP发布App Store上架流程

上架iOS需要一个付费的开发者账号,还没有的话申请一个或者借用. 申请开发者账号介绍 上架过程分七个步骤,按步骤一步步来. 仔细看这个流程,少走很多弯路,不用一步步去试错,提示效率. 1.创建APP身份证(App IDs) 2.申请发布证书 3.申请发布描述文件 4.Windows下上传证书编译打包 5.在iTunes Connect创建App 6.Windows下上传IPA到App Store 7.上传好IPA回到iTunes Connect填写APP信息并提交审核 一.创建唯一标示符App

微信第一个“小程序”亮相:不是APP胜似APP!

前天晚上,微信终于推出了“小程序”功能.看过效果演示之后,网友表示,好多App可以卸载了! 据了解,微信“小程序”已首批开放给200名拥有微信服务号的开发者进行内测,而且目前开发者发布的小程序无法在用户的客户端显示. 爱范儿也拿到了内测资格,并快速研发了微信小程序平台,这也是全平台第一个微信小程序. 据爱范儿所述,接入小程序后,加载速度相比网页版有了大幅提升.而“小程序”的界面和过渡动画也更加美观.原生,不是APP胜似APP! 小程序的界面(左图)比在微信打开一个网页(右图)要和谐不少

[ app运营 ] APP运营思考:APP上线前,我们该做些什么?

一.产品部分:想一想APP的承载够不够,是否要做压力测试?上架后,会迎来第一波用户,如何保证你APP的正常运行?将会出现哪些意外情况?我们遇到一个真实的案例,某游戏APP上架后,第一天就有3万次真实激活,但就在当天晚些,出现几百个差评,几乎都是说:“登陆慢.运行慢.垃圾游戏”这样的评论,第二天只好主动下架调整. 移动互联网,特别是APP store的世界,天天都在上演着一夜成名的故事,如果你不想在第一天就倒下的话,花点时间做压力测试吧. 二.市场部分:1. 想一下如何收集用户反馈,以及如何处理.

上架app 到app store 的出现: “The IPA is invalid. It does not inlude a Payload directory.”错误处理

今天打包上传app到app store上遇到的一个错误,在xcode6.2下提示: The IPA is  invalid. It does not inlude a Payload directory. 折腾了一个下午,没有找到办法,网友遇到提示这个错误提供了一个解决办法: http://blog.csdn.net/jimjarry/article/details/42676041 但是对我的情况不适用(最终我的问题发现是属于个案,特殊情况下才会发生),如果您遇到这种提示可以先看看它的方法是否

iOS-发布APP到APP STORE步骤(En)

发布APP到APP STORE步骤 前提:您在XCODE中写好了APP程序,而且您已经申请了APP开发者账号[付费了99美元] 1:MAC电脑上准备CRS钥匙串 在应用程序-实用程序中:打开KeychainAccess 创建 Certificate Signing Request. 填写内容,生成CSR文件 这个时候把这个CSR文件保存好,下个步骤就会用到. 2:获取签名证书 首先,进入https://developer.apple.com/membercenter/index.action开发

专业移动APP 手机APP后台服务端开发

专业移动APP 手机APP后台服务端开发优势:8年PHP 9年JAVA开发经验采用THINKPHP 和JFINAL ,SBadmin 2框架进行开发完善的开发文档免费一年BUG维护 可签协议,可先预付20%,也可分段付款, 亲 请带好需求文档! QQ 184377367 报价原则1:功能列表2:兼容性3:安全要求等级4:是否需要完善的开发文档5:后台UI是否有要求

iOS-发布APP到APP STORE步骤(CN)

先大概说一下IOSAPP上架的几个步骤(详细步骤见下图): 1.创建证书请求文件 2.登录苹果开发者中心生成发布者证书(下载下来要双击一下) 3.设置APPID(要用到Bundle ID,建议从XCode中复制这样的话就不用更改XCode项目里的Bundl ID里,不然还得改) 4.生成配置文件(要用到APPID和证书,退出XCode再双击配置文件,打开项目) 5.在开发者中心里的ITunes Connect里的APP新建APP项目并配置相应的信息(需要各个版本的屏幕截图,运行模拟器,调到最大(

IOS上传工具实现在windows下发布ios app到App Store

实现在windows.linux下上架ios app到App Store---- 我们知道发布一个app,一般是用到苹果的application loader助手上传应用,用过的都知道使用起来很繁琐,经常出错.而且只能运行在mac系统上,需要一定的硬件条件. 前段时间逛技术论坛,发现了一个上架的辅助工具Appuploader,可以实现在windows,linux或mac上,不需要应用程序加载器和mac计算机,就可以发布app到app store,试用了下,感觉不错,分享给各位开发者,方便大家,现

web app与app的区别,即html5与app的区别

公司准备要做一个项目,是p2p配资的app.在网上问了一些人后,发现有的是直接有html5做好后,用软件封装的.之前我学过app的开发,当时Android版本的,知道开发Android app时写的代码.那么问题来了: html5封装的app与原生态app有什么区别呢? html5又和app有什么区别呢? 为什么大型网络公司还是倾向于推广原生态app呢? html5是有跨平台的优势,但是为什么还是不温不火,或者我们仍称之为轻应用app呢? 查找了相关的资料,梳理了一下,发现有如下区别: 1.ht