wiki:IOS3/NewSchema

Version 12 (modified by liuxin2, 15 years ago) (diff)

--

第三版新架构项目文档

概述

面对 PCGroup 网站门户接入越来越多的需求,我们决定设计一个统一的客户端架构,使之可以做到数据驱动,快速开发,将重复开发工作降到最低,消灭散落在代码中的硬编码宏。

层次分划

按从前向后,新的客户端架构可以分为UI层、消息处理(功能逻辑)层、数据存储层、网络访问层、服务器层。

UI 层

UI 层是 3.0 架构与之前的版本变化最大的地方,也是最根本的升级动机。第三版的 UI 细节不写在代码里,而是读取服务器端数据,生成本地界面。 UI 层只负责将数据套入模板 View,呈现给用户。

UI 层按目前资讯客户端的业务,可以分为几种不同的 VIEW。由模板驱动。

消息层

各区块之间松耦合,互不依赖(在内部可以紧耦合)。消息层应该有一个或若干消息处理模块,对一些消息实施分检和再发送,类似于没有view的controller。

数据存储层

数据存储层提供本地数据缓存,为客户端提供环境上下文和缓存功能,分为文件存储、SQLite和Socrates三种服务。

文件存储直接使用框架功能,可以参考2.x的Sandbox沙盒代码。

SQLite使用第三方组件 fmdatabase。

Socrates 组件实现一个通用 Socrates模型的特化实现。Socrates 的通用机制参见  http://www.slideshare.net/marchliu/socrates-used-postgresql-and-sqlalchemy

网络访问层

网络访问层提供独立的网络访问机制,异步、消息驱动,面向HTTP。

服务器层

服务器层依托 mrobot,提供模板页和数据的下载。

UI 组织

UI 界面由一个 ContextCotroller? 承载,它维护一个uiview序列,根据uri消息切换必要的view,如果uri不在缓存的view序列内,则构造一个新的view,否则取缓存view。

列表view的区块分划

3.0 客户端的界面分为四组功能

  • 顶栏,提供上下文菜单和导航等功能
  • 分类导航。位于顶栏之下,由于只出现在特定的内容区中,这个组件应该划入内容区
  • 内容区,主要呈现文章内容或文章列表两种形式,在列表顶部可能有焦点图和分类导航
  • 频道导航栏,位于最下方,提供基础分类的切换。该导航栏的切换引发内容区的资源跳转

顶栏

顶栏主要元素包括:

  • 回退按钮或LOGO占位符
  • 上下文菜单

分类导航

分类导航栏只在特定的内容区出现,应设定为内容区的子组件,但是它有自己的逻辑。分类导航栏由特定的数据驱动生成,可由用户定制,点击其中元素可触发内容区资源跳转。

该组件可使用 three20 或 cocoa 组件实现。

内容区

内容区是最重要的核心区域,呈现从服务器获取的,用户感兴趣的内容。内容区主要呈现列表页或

内容区的切换,会改变整个客户端的上下文环境,可能会引发上下文菜单等区域的改变。

内容视图

内容视图主要是内容区的 webview 组件,涉及顶栏的上下文菜单、后退功能,和底部的工具栏(提供分页等功能)。

内容页也可能是定制的本地化功能view,视uri而定。

服务器

服务器基于mrobot环境,提供模板页和数据下载。

相关面索引

Attachments