一个人实现一套app系统(1.1:概述)
2015-11-09李万胜风铃草科技
第一章:架构简介
整体思路:
在正式动手写代码之前,我们先简单描述一下系统的架构。 本章的宗旨是以宏观的角度,给大家一个系统整体描述,避免陷入技术细节的潭,以便理解我们设计原则以及技术选型的依据。
首先是系统的功能组成。我们将在第一节中详细描述系统应该具有的功能,这些功能基本上是所有APP必备的。
其次是支持系统的模块。除了用户能够看得到的APP客户端,还有很多个模块来支撑APP的功能,包括数据库,HTTP容器,聊天系统,消息推送系统等等,我们将在第二节中详细介绍系统构成,模块功能及各模块采用的技术。
最后是流程。我们了解了系统的功能,也介绍了组成系统的模块,在第三节中我们就详细讲解为了实现特定功能,模块之间是如何运转的,如何协作的。
架构的讲解更像是解释一部汽车。第一个节“概述”告诉大家汽车有油门,有刹车;第二节“架构”告诉大家汽车除了油门和刹车,还有发动机,悬挂系统这些不常看见的模块在工作,他们在后台响应油门和刹车动作;第三节“流程”,告诉大家汽车踩油门的时候,油阀门打开幅度变大,更多的汽油流入发动机,然后产生更多的牵引力,让车有更大的加速度,从而速度更快。
本章内容适合属于初级的系统介绍,对于经验丰富的开发者,可以直接跳过本章内容。本书所有代码都将同步到Github上,下载路径:https://github.com/9992800/paradiseInAnadem.git
第1节:概述
内容摘要
APP功能简述
所涉技术
工具准备
App功能概述
首先我们要明确系统的功能,打开手机你会发现,几乎所有的APP都有2个必备的选项:好友和我的。这两个功能其实不用多解释,如果你的创意里面没有这2项功能,那么我劝你再好好想想你的APP。
关于业务界面,这个就看你的创业需求了,本书将对该功能留白,大家可以在我现有代码基础上,继续添加功能。希望该系统可以成为对你有用的起步教程,大家可以一边参照源码,一边阅读本书。
关于好友功能,我们只开发三个界面:好友列表,聊天窗口和好友信息。
在好友列表界面,我们将以简单列表的形式显示系统中的用户,列表每行的左侧,显示用户头像和昵称,右侧显示该用户未读消息个数,点击用户后进入聊天窗口。我们将重点学习如何使用IOS中的TableView和Android中的ListView;你会发现IOS和Android有着近乎相同的功能设计。
我曾经花1个月的时间读完IOS的官方资料,然后再花1个月的时间读完Android的官方资料。也许你觉得2个月学这么多东西哪里记得住,但实际情况是,在学习Android的时候,其实是在温习IOS的知识。因为Android有着与IOS几乎相同的功能组件和设计原则,只是组件的命名不一样而已。只要重点理解一下不同点就好了,比如Android有一个Service组件是可以在后台畅快的运行的,而IOS只有部分类型的app才有这样的权限,并且必须经过APP Store审核才行。这样对比学习,你会事半功倍。
聊天窗口,这个界面是对TableView(IOS)和ListView(Android)的扩展使用;我们将模仿微信的聊天窗口,实时的展示聊天的内容和发送聊天信息。这里因为我不懂美工,只能模仿微信聊天的功能,而界面可能会看起来很丑。
好友信息界面,我们将讲解一些基本控件使用方法。比如展示好友头像,昵称,性别等等。我们尽量用不同同的组件,展示好友信息。
关于“我的”功能,该功能其实和好友信息界面一样,只是增加了修改个人信息的功能。这里将重点学习一些修改信息的基本原则。除此之外我们还要增加一个“退出”功能。
与“退出”功能对应的就是注册和登陆功能,我们将登陆和注册也划分到“我的”功能模块,因为他们都是和用户信息相关的功能。
为了简单起见,注册功能我们使用邮箱,注册之后发送激活链接到用户邮箱,这样学习成本比较低。如果使用微信登陆,需要注册微信的开放平台,如果使用手机短信注册,这个是需要买短信服务的。因此为了方便大家学习,我们就采用最简单最节约的方式。如果你的app要商用,建议还是选择用户体验最好的方式。
所涉技术
本书涉及到技术点虽然比较宽泛,但并不需要每一项技术都精通,我的策略是使用之前,先通读一遍官方资料。这个是最快的最有效的办法,但是有个条件,就是你必须有多年的开发经验,并且英语还要过关。
IOS的UI布局及编程,object-c编程
Android的UI布局及编程,JAVA编程。
HTTP 1.1协议基本概念。
WebSocket协议的设计及应用。
Sqlite3.0 在手机端的应用。
JSON编码规则。
Nginx 安装及使用。
Lua 脚本语言在Nginx中得使用。
PHP基础编程。
Spring-mvc架构使用。
Tomcat安装配置及使用。
Mysql安装,使用,SQL语言编程。
Redis安装及使用。
Linux命令及脚本编程。
本书中使用到的技术,精通任何一项都需要3~5年的功力,对于编程经验不够丰富的同学来说,需要做的就是参照代码执行一下,做到知其然;而对于编程丰富的同学,我会通过一些比喻,将系统使用到的技术进行详细的讲解,使大家知其所以然。
同时我会把每项技术的官方网站列出来,对我们使用到的部分进行详细的讲解,而对于那些尚未使用到的技术细节,希望大家花时间通读一下,花一个月时间,把每项技术的官方资料读一遍,然后再下手亲自操作。比起上来动手写代码,然后遇到问题再百度查询解决方式,前者的效果要好很多,这都是经验。
本书中使用的各项技术,可以支持系统到100万用户注册,6万用户并发聊天,30万用户同时在线。这些数据是通过压力测试和理论计算得来,我会在第12章给出数据的证明及测试方案。这样的数据对于初创阶段的APP来说,应该可以撑一段时间。如果您的需求超过我当前系统设计,那您可能需要单独联系我们或者再寻求其他专家的帮助了,这超出了本书的讲解范围。
这里的系统规格,至少需要三台标准的阿里云服务器,分别支持:业务服务,聊天服务,推送服务和数据库。
工具准备
在正式开始讲解架构之前,您需要准备一下工具,所谓磨刀不误砍柴工,整理一套顺手的工具,会使您的开发事半功倍。
首先是硬件准备:如果您需要完成本书所涉及的所有知识点,那么一部IOS,一部Android手机,一部MAC 电脑是必须的。因为你如果需要真机调试,只能使用MAC电脑和IOS手机,没有别的办法。如果您觉得成本太高,那么可以选择只实现Android部分的逻辑,跳过IOS部分。
其次是如果需要实现IOS部分,您还要购买苹果的开发者账号,这个账号的申请及其详情我会在第三章介绍。
如果您需要支持100万用户的登陆和聊天,那建议您还要买至少3台阿里云的服务器。如果您只是为了学习,那么您自己的电脑既可以做开发工具,又可以做服务器使用。
除了Xcode和Android Studio这样的基本开发工具,您还需要安装SVN,wget,Curl这样的辅助工具。还有Home Brew(MAC 电脑专用)这样的包管理工具。
本节首先讲解了本系统的基本功能,其中业务界面留给大家去扩展自己项目,而聊天和设置功能,几乎是每个APP都必不可少的模块。通过功能讲解,让大家了解系统要做什么。然后我们又详细列出了本系统使用到的技术以及系统规格,使大家了解哪些技术支撑了我们的功能。最后告诉大家提前准备一些工具,这样等我们讲解完架构和流程,就可以上手写代码了。
接下来的一节我们讲解架构,告诉大家这些技术和模块是如何分工,然后组成一套系统的。如果你懂足球,那么架构就是球队的阵型,告诉我们每个技术模块踢什么位置。
更多精彩,请扫码关注微信公众号