架构师之路(一):需求功能分析

在编程的江湖中哪些人能成为江湖高手,取决于思考!
在开发的很多时候,理论一直被忽视,很多程序猿(以前也包括我)只关注怎么实现某个功能,而并不关注为什么要这样做?这样做的好处是什么?如果能在开发中带着这两个问题去思考,我相信成为ACE将会事半功倍!
一个成熟的架构设计者,会对架构中每个模块甚至每个功能做非常成熟的考虑!

1-业务逻辑和需求功能
在项目开始前,先考虑几个问题:
a,正确的登录逻辑是怎样?
b,缓存机制?
c,移动和PC端数据同步问题?
d,Native如何与HTML5交互?
e,数据统计,为运营部门提供准确用户喜好,以及为产品设计提供可参考数据
f,APP推送系统
g,系统优化(目前针对iOS,其实Android更需要优化)

正确的登录逻辑
看到问题的小伙伴是不是有点惊讶。我开发这么久了,还不知道登录流程是什么么???有这样的一问的小伙伴很正常,当初我也是这么想的,哈哈!其实登录大家做的都大同小异。用户输入账号,密码,一定要带上设备ID,然后点击登录,后台会返回一个sessionId或者是token给移动端。很多家的APP会保存账号的密码,其实是不推荐保存密码(最好是账号也不保存)的这么做的,因为考虑到iOS,Android两种系统,密码保存到客户端存在一定的风险,所有数据交互使用sessionId或者是token来标识用户。这样可以很好的解决c,d两个问题。不管终端是手机还是电脑,登录后使用同一个sessionId或者是token,那么数据也可以共享,NativesessionId或者是token传给HTML5,那么Native和HTML5的用户数据就可以统一了。

缓存机制
根据具体的逻辑来处理,如果不是刚需,那么可以考虑使用缓存,或者数据库。但是像秒杀这种就必须是实时,每次需要重新获取信息。

APP推送系统
相信很多小伙伴都很熟悉,极光,友盟(哈哈,我就用过这两个)。还自己用Java给iPhone推送过消息,本来iOS 可以完全不用第三方,自己后台实现推送。但是由于Android在国内的Google服务器被禁。所以Android实现推送必须要自己维护一个服务,鉴于每个APP可能都有自己的推送服务,也就增加了负载。所以建议使用第三方(ps:极光貌似打算和手机厂商合作,只维护一个服务,减轻手机负载)。为了统一,两个端都使用第三方了。好像还没讲到重点哈!
具体的细节需要协商,eg:按类别Push,按别名Push,按Token Push,用户有多个设备,全部推送?

架构师之路(一):需求功能分析_第1张图片

还有比如推送活动,如何让信息Push到指定页面? 都是要考虑到的问题。推送还有一些高级篇的,比如静默推送
但是如果用户没有同意推送呢?怎么办?而且有些信息必须然用户知道。eg:用户资金变化了。
第一,APP内提醒他去设置;
第二:和短信协同,因为短信发送需要money,所以在用户同意推送时,就不要使用短信了。

2-架构选型

很多人一上来就是MVC,MVVM,MVP,XXXX,当然这个架构本身是没错,这么说也无可厚非。但是有认真想过吗?为什么会出现MVC?既然有了MVC为什么又会有MVVM,MVP?
每个人的编程语言学习,从入门到精通的过程其实就是 面向对象编程语言发展的缩影!
怎么理解这句话?你想一想:你开始接触开发的时候,写的小项目。是不是没有什么设计模式,也没有什么设计理念和思想。就是把你用到的代码写在能执行的Controller里面。刚开始嘛,没关系的!写着写着你就发现不太对。有些Demo重复使用,有些Config重复配置,有些Controller逻辑混乱,,,反正就是随着项目的变大每个地方都不好用了,这个时候你就开始接触设计模式 了;追本溯源,MVC的发展也就是这么来的。先驱们发现项目大了,不对功能,业务逻辑分类(或者分层),不对代码解耦,后面就很难在写下去了。

架构师之路(一):需求功能分析_第2张图片

MVC不多说,重要的分析和思考他的来源,出现场景以及优缺点!!笔者请看这里

你可能感兴趣的:(架构师成长之路)