App开发者们在处理App后台的通信时经常问:App和后台的通信是用HTTP协议还是私有协议?是用长连接还是短连接?深圳APP开发希望您在阅读此文后可以解除上面的疑问。
1.用HTTP协议还是私有协议?间谍电视剧经常能看到间谍们的书信是使用暗号的,就算书信被敌人截取,敌人也需要耗费一定的时间才能解开书信中的秘密。在电影《阿凡达》中为提升故事真实性,导演詹姆斯·卡梅隆甚至找到语言学家PaulFrommer教授,创造了一种属于纳美人的语言。大家看这部电影的时候,根本听不懂潘多拉星球上的纳美外星人到底说什么。纳美语共有大约1000个单词,全球能够掌握其语法的人只有创造这门语言的PaulFrommer一人,而且就算他本人也仍然在学习如何更流畅地说纳美语。如果间谍们使用的都是大家都懂的中文,敌人截取到书信,就能立刻知道里面的内容。如果潘多拉星球上的纳美外星人说的是中文,那么很多人一听就知道其具体内容。App和App后台的通信也同样,可以分为使用通用语言通信和使用暗语通信两种方式。通用语言有很多种,例如英语和中文。协议就相当于一套语言,双方都知道每个字节的具体含义。网络通信中有很多通用协议,其中HTTP协议是使用得最广泛的一种。大多数开发语言都支持通用协议,有大量的成熟模块供程序员调用,方便程序员解析这些通用协议的内容。使用私有协议就相当于使用暗语通信,其类似于开发一套新的语言。私有协议对协议的封装和拆解工作量大,App程序员和后台程序员都要增加额外的工作量,而且私有协议对程序员的设计能力要求高,从Web网站转向移动开发的开发者上手有一定的困难。除非开发者对App的安全性和性能要求高,不然选择HTTP协议就足够。
2.App和App后台通信使用长连接还是短连接?假设读者通过手机拨打另外一个人的手机,手机通话费用非常便宜(甚至可以忽略),但这个打电话过程有两个特点。
(1)一部手机同一时间只能接听一个电话。
(2)一部手机接听电话前非常麻烦,要拨号,要等接接听,这些过程需要耗费一段时间。App和服务器通信使用长连接还是短连接这个问题,可以使用上述的手机拨打电话的模型理解:是一直保持着通话,还是有需要时才拨号通话?当App和服务器通信使用长连接,就相当于一直保持着通话,服务器能保持的通信数量有限,如果达到通信数量的限制,必须增加服务器才能让其他App继续和后台通信。这种通信方式,多数是使用Socket或WebSocket连接长时间连接,对程序员的素质要求高,开发困难,除了手游和聊天推送服务外,不建议使用。当App和服务器通信使用短连接,就相当于需要时才拨号通话。这种通信方式主要是HTTP协议,是现在主流的通信方式,开发效率高,有大量的第三方软件可供开发人员使用,而且大多数开发人员对HTTP协议有一定的了解,能大大减少开发人员的认知成本,推荐使用这种方式。
3.App和后端是怎么通信的?相信读者都用过银行的柜员机(ATM)的查询余额、转账、取款等功能。当用户在ATM取款时只需要输入取款的金额,隔一会儿钱就出来,如果因为有什么问题不能取款(例如超过取款金额的限制),屏幕上也会显示出错误的信息。在整个过程中,用户只要输入金额就能获得结果(取出钱或屏幕提示不成功),至于柜员机内部是怎么处理,用户不需要知道。用户使用ATM的流程如图1-1所示。用户使用ATM的流程ATM这种把内部的处理遮蔽的做法极大方便了用户的使用。同样在App后台也只提供了一系列的功能给App使用,这系列的功能以API的形式提供。API的定义:API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无须访问源码,或理解内部工作机制的细节。当App调用后端提供API的时候,只需要明确下面3点:
(1)这个API的用途:在ATM的例子中,是取款,还是查询余额,还是转账?
(2)输入什么:在ATM的例子中,使用取款功能要输入金额。
(3)结果是什么:在ATM的例子中,取款是成功还是失败?至于API内部是怎么处理,App无须知道。深圳APP开发公司博纳网络编辑整理。全文未完,如果您感觉本文对您有帮助,敬请继续关注本站。谢谢