RLMZ基本框架浅谈

文章参照了《iOS应用架构谈》,对比自己的项目进行了总结。会持续修改,感谢《iOS应用架构谈》的作者。

RLMZiOS客户端架构看似简单,其实要考虑的事情也不少。

针对App进行要求

View层

View层是最接近业务底层的架构,影响业务层代码程度最深,所以View层一旦定性,改动空间最小。所以在View层不光要实现功能,还要考虑更多规范的东西,防止业务工程师的代码腐蚀View架构。

要点如下

所有的属相都使用getter和setter方法,@synthesize,@dynamic根据不同的情况,酌情使用,正确运用内存管理语义。

getter 和 setter全部都放在最后

每一个delegate都把对应的protocol名字带上,delegate方法不要到处乱写,写到一块区域里面。建议使用#pragma mark - 进行标明。button ,getsturRecognizer等响应事件放在一个区域里面,总之就是把delegate,event response,life cycle等方法都合理的分块放置。

对于view的布局,无论使用Frame还是使用Autolayout,都需要经过精心的设计,Autolayout可以考虑使用Masonry,Frame的话,一定要控制好可读性。

关于storyboard,nib和代码写View如果是简单视图,个人建议多使用code,对于简单界面,code一样简单,复杂界面,code比storyBoard更简单,所以个人更喜欢用code画View而不是其他。

对于业务抽象,建议还是MVC设计模式,M-model做的事包括(给viewcontroller提供数据,给viewcontroller存储数据提供接口,提供经过抽象的业务基本组件,供controller调度),C-Controller做的包括(管理view Controller的生命周期,负责生成所有view的实例,监听来自View与业务有关的事情,通过Model的合作,来完成对应事件的业务),v-View做的事情(1.响应与业务无关的事件 ,并因此引发动画效果,点击反馈。2.界面元素表达)

也可以用MVCS,至于MVVM,理解尚欠,只肤浅的知道ReactiveCocoa。

调用网络API

iOS端,AFNetworking几乎已经成为了业界新项目的标配。

网络层跟业务对接部分的设计

以什么样的方式将数据交付给业务层

大多数App在网络层采用的方案大概有三种:Delegate,Notification,block。目前RLWapp采用的是Notification为主,delegate辅助的方式。RLMZapp采用的是block的方式。

比较两款app,根据以往经验和跟其他同学讨论,个人觉得,比较好的方式是Delegate为主,Notification为辅的方式。尽管我认为,最方便的,最炫的还是用block。

因为这样可以尽可能的减少跨层数据交流的可能,限制了耦合。(RLWNotification为主的方式,偶核性比较大,后来以Delegate方式辅助的原因也是为了降低耦合性)。

统一回调方法,便于调试和维护(RLW采用的是统一的回调方法,相比于瑞丽没赚,更易维护。)

在跟业务层对接的部分只采用一种对接手段,限制灵活性来换取更多的可维护性。

交付什么样的数据给业务层

RLMZApp网络层拿到的数据是JSON,然后将JSON转换成对应的对象模型,目前RLW,RLMZ都是采用的这种方式。这种做法是能够提高后续操作的可读性。当然Model转化过程成本很大。目前的两款app解析json都是采用的手动解析JSON 数据,优点是效率是最高的,缺点是费时间,转化之后的模型不能直接被展示,如果想展示,需要二次转化,调试的时候也不直观。但是目前没有找到更好的处理方法。

对于手动解析JSON,也可以利用github上的知名JSON直接转NSObject的三方库来进行处理。

对于API的调用,是使用集约型API调用方式还是使用离散型API调用方式

集约型API调用方式就是API的调用就用一个类,然后这个类接收API的名字,API参数还有回调着陆点(block,delegate)等作为参数。RLMZ在使用这种方式。

离散型API调用,就是一个API对应一个APIRequest。RLW在使用这种方式。

个人喜欢更熟练使用离散型API调用。

网络层的安全机制的实现

网络安全机制,目前主要考虑的就两点。

确保API的调用者是来自你我们自己的APP,防止竞争对手爬我们的API。

解决方法个人感觉让服务端给一个秘钥,调用API的时候使用这个秘钥+API名字+API参数算一个hash。如果我做,就用hash算法(md5),请求的时候带上这个hash。服务端收到请求后,按照同样的秘钥同样的算法也算出一个hash。然后做一个比较,如果一致,就确认确实是自己的APP。(目前咱们这块应该是也没有完成。)

如果我们对外提供了需要注册才能使用的API平台。我们需要有个机制来识别是否注册用户调用了我们的API 。(感觉目前咱们用不到,没多研究)、

保证传输数据的安全

苹果目前已经要求使用Https,挺复杂的,了解不多。目前咱们用的是http协议。这方面有待学习。

网络层的优化方案

从App本身来做的优化

使用缓存手段,减少请求的发起次数。API调用请求来说,有些API请求所带来的数据的时效性是比较长的,比如RLMZ的试用,试用详情,试用报告,试用文章。都可以针对这些数据做本地缓存,

还有对图片的缓存,图片缓存的缓存策略一般都是利用比较知名的三方库,比如SDWebImage几乎成了苹果应用的标配。

试用策略来减少请求的发起次数,主要是针对重复请求策略的。

界面下拉刷新的这种请求,存在重复请求的情况。(比如下拉刷新的时候,在请求着陆之前,用户可能会不断执行下拉刷新操作,那么这个时候,后面重复的API请求就可以不必发送了)

如果是条件筛选这种,就要取消前面已经发送的请求。虽然很有可能这个请求已经被执行了,那么取消所带来的性能提升就基本没有了。但如果这个请求还在队列中待执行的话,那么对应的这次链接就可以省掉了。

数据本地持久化

动态部署方案

对App团队进行的要求

收集用户数据,给产品和运营提供参考

合理的组织各业务方开发的业务模块,以及相关基础模块

每日APP都需要打包,提供给QA工程师测试。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容