iOS快速开发框架Bee-Framework应用和解析(二) - Bee framework架构概览
2016-06-01 01:32
666 查看
原文:
http://www.itnose.net/detail/6209552.html
2015-02-10 18:39
在第二部分里,分享一下Bee Framework架构的看法。如果您下载了Bee Framework, 在/document/developer_manual.pdf有Bee的开发手册。手册里有典型的教程,也有对架构的讲解。本文试图融入个人的理解,解答以下问题:
Bee的MVC是如何工作的,核心组件是哪些?
Bee的整体架构如何?
除了MVC, Bee提供了哪些常用的工具和服务?
该如何使用Bee开始一个项目?
A1:Bee的核心类包括BeeModel, BeeMessage, BeeUIRouter, BeeUIStack, BeeUIBoard。这些类的流转关系请见下图:
看上去简单:
BeeModel封装数据存储(很多时候是NSMutableArray,也可以是SQL lite 数据库)。BeeUIBoard持有BeeModel, 对Server发出数据请求。MVC的M部分。 BeeMessage封装网络逻辑协议,可解析为JSON, XML,数据,返回BeeModel本地存储,也可以更新界面。MVC的C部分。 BeeUIBoard扩展了UIViewController, 通过BeeModel进行数据存储,通过BeeMessage进行数据通信,并管理自己的控件。MVC的V部分。 BeeUIStack扩展了UINavigationController, 管理页面导航。BeeUIRouter是rootViewController。没错,就是iOS App的基本骨架。熟悉框架的时候可以先看这几个核心类的代码,。
A2: Bee的整体架构分层清晰,耦合少, 支持多种程度的复用。了解架构后可以让您和现有代码整合时更轻松,调试修改框架代码也更有效率。下图摘自开发手册:
最底层是Cocoa touch和第三方库,包括fmdatabse, ASI http, JSONkit 等多种依赖。中间层是Core和工具层,提供数据库,网络等封装。再往上就是第一个问题的MVC组件,除了支持MVC外,还支持读取nib/xib, 支持Bee独有的sinal作为事件系统。广义的最上层包括Services, Tools, App, 和User codes。Service包括支付宝,微信,微博,定位,推送等服务的封装,Bee通过反射支持这些Service,将代码拖入工程编译就能起作用。
Tools主要有 Scaffold,mac下的命令行工具,方便开发者将JSON数据快速生成BeeMessage代码, xproj, 可以快速将工程里的.m文件加入或删除fno-objc-arc选项。 Interface-builder: Safari插件,可以预览和设计XML模板界面。这些工具可以在tools路径下找到。App部分主要包括界面的XML模板和界面的代码,Skeleton就是BeeUIApplication, 封装UIWindow。User codes就是用户的界面和逻辑了。
A3:Bee除了MVC和XML/CSS的界面开发方式, 还提供了一些有单独使用价值的工具类,了解它们可以更好地了解Bee能做什么:
BeeSandBox: 封装和简化了应用程序沙箱的操作。 BeeRuntime: 存储运行时的class, call stacks,用于反射。 BeeSystemInfo: 查询是否越狱,屏幕尺寸,UUID, 设备类型(iPAD/iPhone)等实用信息。 BeeThread: GCD的封装,提供foreQueue, backQueue两个队列。 BeeDatabase: fmdatabse的封装,提供数据库功能。 BeeFileCache, BeeMemoryCache, BeeImageCache, 缓存工具, FileCache通过key对文件缓存,Memory, ImageCache通过Array或Dictionary在内存中缓存。 BeeUserDefaults: 封装和简化对User defaults的操作。 BeeUIImageLoader: 封装通过GCD加载网络图片的流程。 BeeUIKeyboard:封装键盘交互的各类delegate。 BeeUISignal: Bee独有的事件类,提供附加对象,源对象,目标对象,调用路径等特性。 BeeViewModel: 使用BeeUISignal的BeeModel, 支持事件,方便被UI对象持有。有几种子类支持不同的展示模型(简单展示,分页,向下拉去更多Content)。
A4: 推荐使用geek-zoo(Bee Framework官方)的方法:
将所有的界面梳理,分类,编号,文档化。可参考官方的实例:https://github.com/GeekZooStudio/ECMobile_iOS,注意doc里文档的方法。 估算每个界面(BeeUIModel)需要承载多少数据模型(BeeModel),需要多少数据协议(BeeMessage) 估算好了总的界面数,总的数据模型,总的数据协议数,就可以开始开发了。当然也可以对一些关键问题进行设计。
http://www.itnose.net/detail/6209552.html
2015-02-10 18:39
在第二部分里,分享一下Bee Framework架构的看法。如果您下载了Bee Framework, 在/document/developer_manual.pdf有Bee的开发手册。手册里有典型的教程,也有对架构的讲解。本文试图融入个人的理解,解答以下问题:
Bee的MVC是如何工作的,核心组件是哪些?
Bee的整体架构如何?
除了MVC, Bee提供了哪些常用的工具和服务?
该如何使用Bee开始一个项目?
A1:Bee的核心类包括BeeModel, BeeMessage, BeeUIRouter, BeeUIStack, BeeUIBoard。这些类的流转关系请见下图:
看上去简单:
BeeModel封装数据存储(很多时候是NSMutableArray,也可以是SQL lite 数据库)。BeeUIBoard持有BeeModel, 对Server发出数据请求。MVC的M部分。 BeeMessage封装网络逻辑协议,可解析为JSON, XML,数据,返回BeeModel本地存储,也可以更新界面。MVC的C部分。 BeeUIBoard扩展了UIViewController, 通过BeeModel进行数据存储,通过BeeMessage进行数据通信,并管理自己的控件。MVC的V部分。 BeeUIStack扩展了UINavigationController, 管理页面导航。BeeUIRouter是rootViewController。没错,就是iOS App的基本骨架。熟悉框架的时候可以先看这几个核心类的代码,。
A2: Bee的整体架构分层清晰,耦合少, 支持多种程度的复用。了解架构后可以让您和现有代码整合时更轻松,调试修改框架代码也更有效率。下图摘自开发手册:
最底层是Cocoa touch和第三方库,包括fmdatabse, ASI http, JSONkit 等多种依赖。中间层是Core和工具层,提供数据库,网络等封装。再往上就是第一个问题的MVC组件,除了支持MVC外,还支持读取nib/xib, 支持Bee独有的sinal作为事件系统。广义的最上层包括Services, Tools, App, 和User codes。Service包括支付宝,微信,微博,定位,推送等服务的封装,Bee通过反射支持这些Service,将代码拖入工程编译就能起作用。
Tools主要有 Scaffold,mac下的命令行工具,方便开发者将JSON数据快速生成BeeMessage代码, xproj, 可以快速将工程里的.m文件加入或删除fno-objc-arc选项。 Interface-builder: Safari插件,可以预览和设计XML模板界面。这些工具可以在tools路径下找到。App部分主要包括界面的XML模板和界面的代码,Skeleton就是BeeUIApplication, 封装UIWindow。User codes就是用户的界面和逻辑了。
A3:Bee除了MVC和XML/CSS的界面开发方式, 还提供了一些有单独使用价值的工具类,了解它们可以更好地了解Bee能做什么:
BeeSandBox: 封装和简化了应用程序沙箱的操作。 BeeRuntime: 存储运行时的class, call stacks,用于反射。 BeeSystemInfo: 查询是否越狱,屏幕尺寸,UUID, 设备类型(iPAD/iPhone)等实用信息。 BeeThread: GCD的封装,提供foreQueue, backQueue两个队列。 BeeDatabase: fmdatabse的封装,提供数据库功能。 BeeFileCache, BeeMemoryCache, BeeImageCache, 缓存工具, FileCache通过key对文件缓存,Memory, ImageCache通过Array或Dictionary在内存中缓存。 BeeUserDefaults: 封装和简化对User defaults的操作。 BeeUIImageLoader: 封装通过GCD加载网络图片的流程。 BeeUIKeyboard:封装键盘交互的各类delegate。 BeeUISignal: Bee独有的事件类,提供附加对象,源对象,目标对象,调用路径等特性。 BeeViewModel: 使用BeeUISignal的BeeModel, 支持事件,方便被UI对象持有。有几种子类支持不同的展示模型(简单展示,分页,向下拉去更多Content)。
A4: 推荐使用geek-zoo(Bee Framework官方)的方法:
将所有的界面梳理,分类,编号,文档化。可参考官方的实例:https://github.com/GeekZooStudio/ECMobile_iOS,注意doc里文档的方法。 估算每个界面(BeeUIModel)需要承载多少数据模型(BeeModel),需要多少数据协议(BeeMessage) 估算好了总的界面数,总的数据模型,总的数据协议数,就可以开始开发了。当然也可以对一些关键问题进行设计。
相关文章推荐
- 网页设计入门必看的六点建议
- 【转】Backbone架构+流程图
- 【转载】 50个学习新技能的最佳网站
- [置顶] 给大家推荐一个神奇的文献搜索网站sci-hub
- 一个都不能少: DevOps的3大核心基础架构
- 一个都不能少: DevOps的3大核心基础架构
- 基于Flume的美团日志收集系统(一)架构和设计
- .net网站的文件上传读取进度条和断点下载
- 网站兼容——火狐浏览器刷新没有清空表单
- 网站分析
- 网站开发流程
- 网站建设项目管理——8个步骤教你管理网站建设项目
- MySQL主主互备结合keepalived实现高可用
- 一线架构师实践指南阅读体会_ADMEMS方法体系理解(转)
- 简单的网站项目开发流程 .
- 日志文件 统计 网站PV IP
- Web 网站 故障常用分析命令
- 甘特图首选解决方案-世界级甘特图控件(XGANTT) - XGantt甘特图中文官方网站
- Dubbo架构设计详解
- 淘宝架构发展