app 后端技术

2023-05-16

app 后端技术

 

一直以来工作的方向是web server,对app server没有什么了解。虽然没有接触过移动app开发,但对app后端技术还是挺有探索欲望的,app应用和web应用在前端的用户习惯不同,相信后端也会有很多不太一样的地方。开此文记录一些网上收集到的app后端技术体系,以备了解。

 

下面就app server在业务设计上通常需要考虑的几个方面:

 

1、api风格

如何设计一套合理且优雅的api接口集,可以参考Restful分格:

  • api采用http(s)协议与前端通信;
  • 每个uri代表一种资源(resource),对于资源的操作类型,由HTTP方法表示(如GET、POST、PUT等)。例如:

GET /zoos:            列出所有动物园
POST /zoos:           新建一个动物园
GET /zoos/ID:          获取某个指定动物园的信息
PUT /zoos/ID:               更新某个指定动物园的信息(提供该动物园的全部信息)
DELETE /zoos/ID:            删除某个动物园
GET /zoos/ID/animals:       列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID: 删除某个指定动物园的指定动物      
  • 通过参数过滤结果,例如

?limit=10:         指定返回记录的数量
?offset=10:        指定返回记录的开始位置。
?sortby=name&order=asc: 指定返回结果按照哪个属性排序,以及排序顺序。
?animal_type_id=1:    指定筛选条件  

 

  • 服务器返回的数据格式尽量采用json;
  • API身份认证key采用OAuth 2.0框架;
  • 返回错误码和错误消息,方便前端进行错误处理和异常保护;

 

 

2、聊天服务

聊天服务端选用openfile,这是一个基于xmpp协议的聊天服务器。
xmpp除了提供聊天服务外,还可以充当消息服务器。

 

 

3、短信、邮件、推送服务

首先,各种消息推送一定要放在队列中处理,不然会严重影响api的响应时间。

 

手机短信方面:

通常要使用一些第三方短信服务平台提供的接口,这个没什么好说的;

 

email方面:

要考虑邮件发送失败的重发问题,所以不再在服务器上搭建sendmail服务发送,选择了邮件服务商mailgun。mailgun还提供每个账号每月1万封邮件的免费额度,很适合创业团队。

 

消息推送方面:

1、apns是iphone推送的不二选择。但如果自身开发apns的服务,会遇到无效token而需要重发,这样需要维护一个队列并建立重发机制。

当用户在iphone上卸载了app后,device token会失效,所以应该定期访问苹果的feedback服务器,把无效的token去掉。

2、android方面,有google的C2DM平台,但C2DM服务器在国外,国内用起来好像不太可用;

 

 

4、LBS

在LBS的应用中,一个基本的需求是查找附近的用户(或商户),现在有两种做法:

1. 使用mysql的空间数据库,具体做法参考:http://blog.sina.com.cn/s/blog_a48af8c001018q1p.html 。

2. 使用geohash编码。

 

关于geohash编码,它把球面上的经纬度转换成一个值,简单点来说就是把二维坐标转换成一维坐标。查找附近的时候,非常方便,用SQL中,LIKE ‘w23yr3%’可查询附近的所有地点。

当检索数据量特别大的时候,采用 coreseek+redis+mysql 可以解决查询慢的问题;

PS:coreseek是一个基于Sphinx的全文检索引擎。

 

5、动态通知

通常很多app的右上角能看到一个小红圈,圈里面有一个数字,表示有多少条新消息到达,借此唤醒用户的打开欲望。

在app端,怎么才能知道有多少条新通知呢?实现的技术有两种:

1. polling:app定时查询

2. push:服务器实时推送给app

相对来说,push的方式更高效,避免app频繁去查询服务器,既增加了服务器的压力,又多消耗了自己的流量和电量。

 

6、数据增量更新

 

 

7、安全性

用户和后端服务器通信的数据不要采用明文传输,尤其是涉及用户的帐号、密码这些敏感信息。

比如用户登录过程可以使用ssl 协议交换数据。

之前我自己在港交所的行情接收项目中采用过 Diffie-Hellman 算法,就是一种不错的密钥交换算法:

 

 

参考文档:

1、曾健生, 《app后端》 http://blog.csdn.net/newjueqi/article/category/1743543

2、阮一峰,《RESTful API设计指南》 http://www.ruanyifeng.com/blog/2014/05/restful_api.html

3、《查找附近的xxx 球面距离以及Geohash方案探讨》 http://www.wubiao.info/372

4、《XMPP协议实现原理介绍》  http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378956.html

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

app 后端技术 的相关文章

随机推荐

  • 安装 Ubuntu 20.04 分辨率显示不全解决方案。

    确实这个 安装20 04 版本的ubuntu 存在分辨率的缺陷 xff0c 旧版本不会出现这个现象 既然问题出现了那肯定有方案去解决的 xff0c 不需要在浪费时间去下载镜像了 解决方案 xff1a 1 win 43 鼠标左键 2 xran
  • 嵌入式工程师必读100本专业书籍

    很高兴这么多朋友阅读本篇嵌入式干货书籍汇总 xff0c 编者通过大数据调查 xff0c 经调查汇总如下 xff0c 希望对想要从事嵌入式行业或者已经是行业人士的朋友有所帮助 xff01 在调查过程中得到华清远见 星创客精英训练营的大力支持
  • 程序员工作中的一些建议

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 尽早地添加日志记录和错误处理 在开发新系统时 xff0c 我做的第一件事就是添加日志和错误处理 xff0c 因为这两者从一开始就非常有用 如果系统不能照常工作 xff0
  • VINS(七)estimator_node 数据对齐 imu预积分 vision

    首先通过vins estimator mode监听几个Topic xff08 频率2000Hz xff09 xff0c 将imu数据 xff0c feature数据 xff0c raw image数据 xff08 用于回环检测 xff09
  • C++多态性的总结

    抽空总结下对一直以来对C 43 43 多态性的一点个人理解 1 什么叫早绑定和晚绑定 早绑定指在对象声明的时候就和它的类型建立了关联 晚绑定是指代码在运行时再检查对象是否提供了我们所需要的方法和属性 静态关联 早绑定 和动态关联 晚绑定 2
  • 解决不能正常访问workerman的问题

    问题描述 xff1a 在阿里云ECS上部署了workerman的应用 xff08 ECS是专有网络 xff09 xff0c 在ECS安全组里已经允许workerman需要的全部端口 xff0c 但是外网一直不能正常打开 xff08 注 xf
  • 谈谈技术面试

    只要是招一个技术人员 xff0c 不管是初级的程序员还是高级软件工程师 xff0c 技术上的考核都必不可少 很荣幸作为面试官参与过公司的一些技术面试 xff0c 从中也体会到了一些东西 首先 xff0c 我觉得技术面试是需要讲究技巧的 xf
  • H3C交换机配置详解

    一 用户配置 lt H3C gt system view H3C super password H3C 设置用户分级密码 H3C undo super password 删除用户分级密码 H3C localuser bigheap 1234
  • PCL—综述—三维图像处理

    点云模型与三维信息 三维图像是一种特殊的信息表达形式 xff0c 其特征是表达的空间中三个维度的数据 和二维图像相比 xff0c 三维图像借助第三个维度的信息 xff0c 可以实现天然的物体 背景解耦 除此之外 xff0c 对于视觉测量来说
  • yolo 多摄像头_45元的WIFI摄像头应用之YOLO人体识别联动智能家居

    如果大家对智能家居比较感兴趣的话 xff0c 一定知道阻碍智能家居自动化发展的一个大问题就是 xff0c 房间里有没有人 xff0c 如果有人 xff0c 那人究竟在做些什么 xff0c 系统又该如何调整环境的照明 xff0c 温度甚至安防
  • Up Board介绍及上手体验

    Up Board是Intel联合华硕制作的一块性能强悍的卡片电脑 外观如下 xff1a 性能参数如下 xff1a CPU为Intel 凌动z8350系列处理器 xff0c 最高频率可达1 92Ghz xff0c 内核GPU是400核心显卡
  • 卫语句 减少if else的层数

    概述 卫语句是一种写代码的经验 为了减少if else的层数 为了提高可读性 xff0c 进而利于维护 案例 现在做一个需求 xff0c 判断一个人是否满足招聘要求 xff0c 招聘要求 xff1a 30岁以下的中国男性 体重100kg以下
  • ROS自定义msg、srv, 编译时找不到相关头文件

    在我们拥有多个package的时候 xff0c 我们定义了一个消息或者服务 xff0c 并在代码中使用了这个消息或者服务 如果是单独编译这个包 xff0c 编译 通过 但是如果是多个包一起编译 xff0c 就会出现找不到相关头文件的错误 原
  • zz (2006- 11-30更新:ISWC2006论文集已上传)本 版 相 关 资 源 (入门指南,资料软件,网址列表,会议期刊)!...

    原文连接 http bbs w3china org dispbbs asp boardID 61 2 amp ID 61 25 入门材料 注 xff1a 没有链接的文件 xff0c 请前往论坛 FTP xff08 地址用户名密码请看全站置顶
  • 怎么安装winubuntu双系统_双系统中如何重装ubuntu系统图文教程

    今天Win7之家小编就给大家介绍一种双系统中如何重装ubuntu系统图文教程 xff0c 大家之前也是有问过小编双系统中如何重装ubuntu系统 xff0c 但是小编没有及时回答 xff0c 现在小编就给大家介绍双系统中如何重装ubuntu
  • 远程 sshd提示:Server unexpectedly closed network connection

    远程sshd提示 xff1a Server unexpectedly closed network connection 重启后服务器效果也一样 xff0c 经过一段时间连接后 xff0c 终于连上远程了 之后新建一个远程连接 xff0c
  • ubuntu如何跑arm程序

    1 首先确定一间配置好arm linux 交叉编译器 xff0c 可以使用arm linux gcc 2 看示例代码hello c include lt stdio h gt int add int a int b int c 61 a 4
  • 事件引入和本质

    前言 继上一篇委托后 xff0c 我们继续来探讨事件 xff0c 因为委托和事件有着不可分割的关系 通过本文 xff0c 相信你会对事件有更深刻的认识和理解 xff0c 不信 xff0c 你看 xff01 概念 用event 关键字使您可以
  • onlstm时间复杂度_CNN-LSTM | 一种融合卫星-雨量站降水数据的时空深度融合模型

    1 xff0c 不同模型的降水融合性能 表2 2001 2005年全国796个气象站不同降水校正模型的RMSE RB MAE和CC 如表2所示 xff0c 将4种模型结果与原TRMM数据进行了定量比较 xff0c RMSE和MAE值越小表明
  • app 后端技术

    app 后端技术 一直以来工作的方向是web server xff0c 对app server没有什么了解 虽然没有接触过移动app开发 xff0c 但对app后端技术还是挺有探索欲望的 xff0c app应用和web应用在前端的用户习惯不