iOS从0到1搭建高可用App框架-阿里云开发者社区

开发者社区> 玄学酱> 正文

iOS从0到1搭建高可用App框架

简介:
+关注继续查看

最近在搭建新项目的iOS框架,一直在思考如何才能搭建出高可用App框架,能否避免后期因为代码质量问题的重构。以前接手过许多“烂代码”,架构松散,底层混乱,缺少规范,导致团队开发时代码风格迥异,清晰的项目结构和良好的代码规范是保证产品质量的关键,下面分享一下我的架构思路。

架构图:

iOS从0到1搭建高可用App框架

架构原则:易读性、易维护性、易扩展性。

一、思考

做好一件事,花在思考上的时间应该多于执行。

首先根据产品需求和设计图,脑中先建立一个产品架构:

1. 产品的定位是什么。

社交?媒体?游戏?运动?音视频?电商……要搞清楚你要做一个什么类型的App,不同类型的产品,技术选型也有所不同,在这我是搭建一个基础App架构,可以在此基础上拓展社交、电商、音视频等!

2. 技术选型

根据当前产品的需求以及未来可能有的需求(我怎么知道未来会有什么需求?可以参照竞品,可以发挥想象,如果产品说:“我们要做IM文字聊天,只做文字!不做音视频,以后都不做!” 类似这样的承诺,你如果信了他的邪……后面的故事就精彩了。。哈哈哈哈哈哈。。。。所以说这时候你就要考虑到后面会有语音+视频聊天,在设计的时候不要偷懒,预留一定空间,当某天产品反悔的时候,你可以微微一笑,从容应对。

一把拉回话题,接着说技术选型,通常我会选择一些当下比较热门、好用的第三方框架,例如: YYKit ,YYKit 是一组庞大、功能丰富的 iOS 组件,包含Model解析、图片加载、缓存等基础服务,都是基于Category设计的,使用方便且性能高于一些老的框架,用过的都说好。

其他框架的选择可以根据项目需求,去GitHub上搜索,星星多的每个都看一下,会给你增加一些思路。

程序猿长得可以保守,思想一定不能太保守。

二、搭建目录结构

iOS从0到1搭建高可用App框架

如上图,我是这样搭建App目录结构的,从下到上,使用Pods管理第三方框架,将第三方框架进行二次封装,供给顶层使用,尽可能减少各模块之间的耦合度,只为更清晰。

三、封装基础类

iOS从0到1搭建高可用App框架

1. AppDelegate是应用的代理,应用级的事件都委托它处理,包含启动退出、推送等事件,以及IM、支付等第三方的回调,这使得AppDelegate内代码庞大,错综复杂,十分不利于阅读和维护,因此我新增了一个AppDelegate+AppService类别,用来处理生命周期之外的业务,AppDelegate作为事件入口,具体实现直接调用类别里的方法,只为更清晰。

iOS从0到1搭建高可用App框架

2. Modules包含了应用内的功能模块,根据底部Tab栏划分并关联实体文件夹(默认是虚拟的要手动建立实体文件夹拖进来),每个模块内使用的是MVC模式,有人会问为什么多了Resource和Service文件夹,MVC是一种设计思想,并非死套路就仨文件夹,根据实际需求适当增加,在这我选择在Service封装数据请求,VC里调用拿数据即可,至于Resource为什么在这,我认为当功能模块层级较多时,每个大功能模块都对应许多资源,对应到模块内用起来方便,当然也可以放到最外层的Resource文件夹里,建立对应的模块名称,在这儿我是选择把公共的放到最外层Resource里,功能相关的放到模块里的Resource文件夹内,只为更清晰。

iOS从0到1搭建高可用App框架

3. Manager的定义是全局基础服务,通常使用类方法或者单例来实现,主要包含对应用、用户的管理和服务,例如网络状态监听,广告页应用介绍页等;用户快速登录退出操作以及登录状态的获取等。只为更清晰。

iOS从0到1搭建高可用App框架

4. Utils文件夹内主要包含全局通用工具,来源于对三方框架的二次封装,或是自己写的工具类。在这个项目里,我封装了带AES加密网络请求工具,全局Toast提示,广告页等。只为更清晰。

iOS从0到1搭建高可用App框架

5. Base文件夹用来存放项目的基类,基类作用包含一些定制化的内容,例如页面样式,空数据页面等,使用基类来实现,可以统一控制,利于维护,减少冗余,也为更清晰。

iOS从0到1搭建高可用App框架

6. 第三方文件夹放一些第三方的类库和对第三方封装,比如第三方登录、支付、IM等,现在项目我还没有添加第三方框架。

7.全局宏顾名思义是定义了一些全局通用宏。我这里定义了四个:

UtilsMacros定义的是一些工具宏,比如获取屏幕宽高,系统版本,数据类型验证等;

URLMacros定义服务器接口地址以及环境开关;

FontAndColorMacros定义全局用的色值、字体大小,这里建议跟设计师共同维护一个设计规范,例如:定义一个主色调宏 MainColor,色值是 0x333333,我们全局使用MainColor宏作为背景颜色,当某天App改版,色值改变,我们只需要去更改 0x333333即可,其他代码不需要动,同时也能一定程度约束设计师,不要随便增加一种颜色,非常接近的颜色应当使用一个。如果设计师不愿意维护这个规范,你可以尝试打一架,打不过的话,就只能自己维护了,只为更清晰。

ThirdMacros 包含第三方框架相关的定义,例如keySecret等。只为更清晰。

iOS从0到1搭建高可用App框架

8. 资源文件,上面说到过,这里我是存放了全局的一些资源文件,功能模块的我放到了模块内的Resource文件夹内,个人喜好,只为更清晰。

iOS从0到1搭建高可用App框架

9. CocoaPods是iOS项目的依赖管理工具,开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第三方开源库的时间。

以上就是我的基础架构思想。




本文作者:佚名
来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android应用框架之Application&ActivityThread
不同于其他系统,在Android中Application并不是一个重要的概念,甚至开发人员在开发的过程中很少需要直接与Application打交道,其提供的也仅仅是一个上下文环境。至于为什么会这样,还是与设计者的设计思想有关。
1756 0
hyperledger fabric 源码调试(orderer)环境搭建教程
本系列文尝试依据个人理解来描述构建fabric源码调试环境的步骤,去掉docker这层障碍,并给出思考过程。
1651 0
OSS -IOS SDK 搭建
背景 很多小伙伴对 IOS 的 SDK 搭建熟悉,但是对于上云的 OSS IOS SDK 使用有些一门疑问,今天从环境搭建到客户端使用全面给大家梳理一遍个人的使用总结; 通过 git 拉取项目 地址,拉下的目录结构如下; workspace 就是我们的编译后直接可运行文件,如果本机已经安装好了 x...
1100 0
iOS中CoreData数据管理系列二——CoreData框架中三个重要的类
iOS中CoreData数据管理系列二——CoreData框架中三个重要的类
31 0
java编程—如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构
一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量,需要进行服务集群化部署,本文主要介绍服务端Tomcat多实例部署,以及如何保证web服务的高可用方案。
1591 0
11个有用的移动网页开发App和HTML5框架
在过去的两年里,触屏设备飞速增长。iOS和Android设备让开发者和设计师开始重新思考他们的网页应用,以提供更好的触屏体验。 移动Web应用相对于本地的App有很多优势,虽然也有很多设计和开发上的挑战。
793 0
Framework7 – 赞!功能齐全的 iOS7 App 前端框架
  Framework7 是一个功能很全的 HTML 框架,用来构建 iOS7 应用程序。 Framework7 允许您灵活搭建列表视图(表视图) 。你可以让他们作为导航菜单,你可以在列表里面使用图标,输入框以及任何元素,甚至使它们嵌套。
738 0
一起谈.NET技术,Microsoft NLayerApp案例理论与实践 - 项目简介与环境搭建
  项目简介   Microsoft – Spain团队有一个很不错的面向领域多层分布式项目案例:Microsoft – Domain Oriented N-Layered .NET 4.0 App Sample(在本系列文章中,我使用NLayerApp作为该项目的名称进行介绍),在codeplex上的地址是:http://microsoftnlayerapp.codeplex.com/。
1187 0
CentOS 6.3 + Subversion + Usvn 搭建版本管理服务器
一. Subversion 简介 Subversion是一个自由,开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。
1435 0
直播间搭建需要避免的三点要素,开发直播app软件并不简单
所谓的直播间搭建,其实就是在拥有一套直播源码的基础上进行搭建。对于直播中经常会出现的小问题,大家可能会先想到延时和卡顿等问题,但其实这些小问题的出现也是有一定原因的。而今天想要给大家分享的,就是技术人员在开发过程中需要“强行避让”的三点,不知道大家有没有注意过呢?
1158 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
20710
文章
438
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载