文档章节

7.app和app后端的通讯

 晓已
发布于 2015/04/02 11:05
字数 1366
阅读 19
收藏 0
点赞 0
评论 0

【转载】 作者:曾健生,公众号IDappbackend

                 比目科技

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

 

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

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

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

 

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

 

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

本文转载自:http://mp.weixin.qq.com/s?__biz=MzA3NDMzODk5Mw==&mid=203010477&idx=1&sn=dc4b7be46c44d7b971e0625fd...

共有 人打赏支持
粉丝 2
博文 15
码字总数 1110
作品 0
广州
app后端设计--总目录

做了3年app相关的系统架构,api设计,先后在3个创业公司中工作,经历过手机网页端,android客户端,iphone客户端,现就职于app云后端平台bmob(想了解bmob点击这里)。其中的乐与苦,得与失,...

云栖希望。
2017/12/04
0
0
ruby on rails中如何使用Pundit进行权限管理

一:pundit介绍 有名的权限管理gem: 1.pundit:流行的权限管理(推荐,pundit更加适合大型项目,更加复杂的权限系统) 2.authority: 已经不维护了 3.cancancan: 比较老牌的权限管理的gem 作用:...

藤原佐为
2017/09/01
0
0
Class CalendarModel is implemented in both A and B One of the two will be used. Which one is .....

Class CalendarModel is implemented in both /Users/zhongqihulian/Library/Developer/CoreSimulator/Devices/5827D04B-BADE-4213-B278-4DE0EFC329ED/data/Containers/Bundle/Application/E......

no_wait
2016/10/12
7
0
ASP.Net应用程序的目录结构

每个Web应用程序都要规划自己的目录结构,除了自己设计的目录结构意外,ASP.Net也定义一些有特殊意义的目录。 1.Bin:这个目录包含了所有的预编译的ASP.NET的Web应用程序使用的.Net程序集(通...

长平狐
2012/10/16
79
0
需要一个全局异常处理的拦截器。

用jfinal写一个app的后端。现在需要一个全局的拦截器。在网上搜索的一些。发现,没有办法完美的自定义异常输出(包括前台和后台的)。 前后端通讯采用json格式。 我的想法是,无论发生什么异...

五花膘
2016/07/06
560
4
Android 实用小控件大杂烩

1,spinner实现下拉框 http://www.cnblogs.com/tinyphp/p/3858920.html spinner获取选中值得方法 http://zhidao.baidu.com/link?url=tsoQDSU-lTNpSWzaT66twdrl71idW78X2uCxcS3r78HbcCRpsBNoR......

LizRose
2016/03/06
71
1
适配iOS9遇到的一些问题_Scheme白名单_ Bitcode及解决办法

升级 运行项目发现报错如下: 1.Scheme白名单问题 -canOpenURL: failed for URL: “weixin://app/wxdaae92a9cfe5d54c/” - error: “This app is not allowed to query for scheme weixin” ......

Snaiper
2015/09/29
6.7K
0
app后端如何保证通讯安全--aes对称加密 

app后端如何保证通讯安全--aes对称加密 在上文《16.app后端如何保证通讯安全--url签名》提到,url签名有两个缺点,这两个缺点,如果使用对称加密方法的话,则完全可以避免这两个缺点。在本文...

法斗斗
2016/05/31
96
0
WhatsApp爆安全漏洞,或被NSA利用

IT经理网点评:Facebook收购WhatsApp近日成为业界的焦点话题,争论的焦点是WhatsApp到底值不值190亿美元,但是人们忽略了一点,作为拥有4.5亿活跃用户的创业公司,WhatsApp具有快速发展的创业...

Cashcow
2014/02/24
0
0
SL4A、QPython学习笔记(2)

SL4A下使用Python WEB框架; QPython之WEB APP的前后端通讯问题; ANDROID设备与PC等的数据通讯的Python解决方案; 这一次对上述这些问题进行了一番钻研与实验,结论如下: 1. SL4A下使用Pyt...

泊松
2014/03/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 你的朋友圈有点生锈了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @Devoes :分享Trademark的单曲《Only Love (电视剧《妙手仁心 II》插曲)》: 《Only Love (电视剧《妙手仁心 II》插曲)》- Trademark 手机党少...

小小编辑
今天
204
9
【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
今天
1
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
1
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
2
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
AB 压力测试

Ubuntu 安装AB apapt-get install apache2-utils 使用AB 压力测试 -c 并发数 -n请求总数 ab -c 3000 -n 10000 http://localhost/test/index.php AB只能测试localhost 返回结果 This is Apac......

xiawet
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部