关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

盘点APP产品开发中涉及的技术点

guanshanw 2023-09-29 21:38 23 浏览 0 评论

虽然说移动互联网发展的高潮期已经过去了,APP开发不再热门,但是对于没有完整经历过APP开发的人来说可能还是不熟悉,本篇就来盘点一下。

首先从一个软件的整体结构来看,PC时代常见的软件结构有单机版,C/S结构,B/S结构,套用到移动联网时代的APP可以看成是A/S结构,即手机端的Application,后台服务端的Server,因此涉及到的技术点既包括手机端又包括后台服务端。

本文不深入具体的技术细节,仅对APP产品涉及到的基础技术点做一个简要介绍。

HTTP协议

通常APP与后台服务端使用的协议都是HTTP协议,因此无论是APP端还是后台端的开发人员都需要对HTTP协议有一个总体了解,特别是对于以下这些点:

  • HTTP HEAD(请求头)

  • URI(统一资源定位)

  • HTTP methods(请求方法)

  • Querystring(请求参数)url路径里?后面的部分

http://www.sample.com/subpath/demo.html?param1=value1&param2=value2

  • UrlEncode/UrlDecode

http://www.sample.com/demo.html?param1=UrlEncode(value1,"utf-8")

  • Html字符转义(Escape Sequence) < > & ? “ 空格 等字符都需要转义

<span><%HtmlEncode(outputContent)%></span>

  • Content-Type请求头

  • Request Body(客户端请求体) Form表单、file attachments、其他格式数据包json、xml等

  • Response(服务端返回内容)

  • Url rewrite(url友好)

  • Html5(新特性)、JS

  • HTTPS

对于敏感数据需要使用HTTPS协议,苹果APP Store也建议新的APP要使用HTTPS协议,APP端与后台服务端之间的通讯是加密的,防止被抓包以后模拟手机与服务端通讯。使用HTTPS之前要先找一家证书机构申请一个CA证书,一般的证书都是按年收费的,不过也有机构提供免费的CA证书。

RESTful风格协议设计

通常APP与服务端的通讯协议会使用RESTful风格,有关这种风格的详细信息可以搜索网上的介绍。

  • 一种软件架构风格,提供了一组设计原则和约束条件。主要用于客户端和服务端交互类的软件。更简洁,更有层次。

  • 每一个对象/操作对应一个URL(切忌:url路径里出现大小写混合字母,统一为小写字母)。

  • 通常使用GET、POST、PUT、DELETE四种Http methods,语义:增加(Create)、读取(Retrieve)(获取数据)、更新(Update)和删除(Delete)四类,缩写为CRUD。设计具体协议时最好是功能与语义能够契合。

在设计协议的时候需要考虑安全性问题,防止漏洞,相关问题可以查找有关Web安全的资料。

数据库相关知识

不但后台需要用数据库存储数据,有的APP产品在手机端也需要用数据库存储数据。

  • 集合&关系代数/笛卡尔积/数据库表/范式/约束/索引/触发器/存储过程/计划任务等

  • SQL语言:insert/select/update/delete 等基本语句

  • 数据库集群/备份/读写分离/缓存

  • 参考书:数据库系统概论第四版(王珊萨师煊)

OOP&OOD

现在的编程一般都基于面向对象编程技术,因此需要掌握其基本概念。

  • OO基本概念/原则/特征/泛型

  • 辅助工具:UML图/用例/实体类(Entity Class/Model)/控制类(Control Class/Controller)/边界类(Boundry Class/UI View) MVC 模式

  • 提高:代码重构(Refactoring)/设计模式

算法

有的开发人员可能认为在产品开发中用不到什么算法,其实算法(Algorithm)就是解决问题的思路和方法,对应到计算机里就是解决问题的一系列程序代码。每一个问题都可能有多种解决方法,这些方法的时间复杂度、空间复杂度、健壮性、可读性等各有优劣,开发人员从中选择一个最合适的解决办法。在实际的开发中可能会碰到各种要解决的问题,不是所有问题都能从网上搜到现成的解决办法。

  • 程序=数据结构+算法

  • 基本数据结构:线性表/树/图等

  • 基本算法:查找/排序/哈希/最短路径等

  • 举例:生成二十亿个每个十个字符长度的不重复优惠券码/兑奖码

  • 参考书:算法第4版(Java描述)

编码规范

一个APP产品通常是多个开发人员共同来开发,因此必须要有一套写代码的规范,方便协作。业界一些大厂都有一些比较好的规范文档,可以借鉴参考。对于APP端还有图片文件命名规范。

  • iOS/android/java/php/go/c++/js/css/html 编码规范

源代码管理

同样的道理,代码也需要一个工具管理起来,方便多人开发、版本管理、代码保管,业界常用的管理工具有Git、SVN等。在向代码仓库提交代码的时候,也需要遵循一些原则。

  • 先更新(update),再提交(commit)

  • 多次提交

每完成一个小功能/小界面就提交一次代码,每修改好一个Bug或一组Bug就提交一次(需要在自测无误之后)。

  • 多人同时修改同一个文件

可以先锁定文件再修改,修改完及时提交。

  • 分支

  • Tag标签

对每一个发布的版本都需要打Tag标签。

源代码管理工具的详细使用教程可以找对应的资料。

线程&任务基本概念

在APP端、后台端都可能涉及到线程、进程,需要搞清楚与此相关的概念。

  • 进程(Process)/线程(Thread)

  • 耗时操作/UI展示与处理分离

  • 线程相关:同步/锁/线程&进程间通讯(共享内存Shared Memory/LPC/RPC)

windows的方案:COM(Component Object Model) 、DCOM(Distributed COM) 、COM+、.NET Remoting

其它方案:Thrift(fb)、dubbo(阿里)、Fingale(twitter)基于Netty、谷歌的gRPC等

祖先:CORBA(Common Object Request Broker Architecture通用对象请求代理架构)

  • 参考书:操作系统概论(第6版)

代码调试

通常开发工具都会提供代码调试的功能。

  • 前置/后置/断言(assert)/断点/单步/trace/log

  • 辅助工具 资源&内存泄漏/代码性能/UI性能

APP端/后台服务端架构设计

对于后台服务端需要做架构设计一般没有异议,至于APP端有的人认为不需要什么架构设计,其实一个APP产品需要长期运营,不断迭代升级,没有一个好的架构设计,后续的版本升级维护会非常困难。

  • APP端

结构清晰、可维护性强

界面/数据/业务逻辑 解耦

功能模块独立 协议处理/解析/图片处理等

便于多人协作,减少互相依赖

工程文件结构

  • 服务端

响应性能、并发、大用户量,可靠性,安全性,横向扩展

结构清晰,迭代升级、维护

工程文件结构

以上列出了一些APP产品开发中通常会涉及到的技术点,由上可以看出做一个APP不是仅画画UI界面、写些数据库表增删改查就完事了,牵扯到的技术面很广,要做好不太容易,文中对技术点写的比较粗,没有进一步详细展开,仅作参考。

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: