移动App架构设计

移动App架构设计

本文主要总结了几种经常使用的架构模式, 基本是层层递进的转载请注名出处 http://blog.csdn.net/uxyheaven, 良好的排版在https://github.com/uxyheaven/阅读

假设认为本文不错, 请在csdn给个顶, github给个star.

Native app的开发相比传统的项目迭代周期要短非常多, 需求的变化也频繁一些, 在开发的不同生命周期里採用不同的架构模式能够有效的节约开发时间, 提高开发效率, 这篇文章介绍几种经常使用的架构模式:

表现层

主要的MVC

移动app一般都是採用经典的mvc框架

层次 作用 设计原则
模型层(model) 封装了应用的一系列数据, 并定义了操作, 处理这些数据的逻辑和计算规则。 通过Notification,KVO对控制器进行反馈
视图层(view) 视图对象是一个应用中, 用户可以看到的对象. 视图对象知道怎样绘制自己, 也可以响应用户的操作. 视图对象的主要目的之中的一个是将应用模型对象中的数据显示出来, 并同意用户编辑该数据 视图通过不能直接操作模型层, 通过target-action, delegate, dataSource和控制器进行反馈
控制器层(controller) 控制器层是在视图层和若干个模型层的中间人 c能够直接操作模型层和视图层

总结:C对M:APIC对V:OutletV对C:Target-action, Delegate,DatasourceM对C:Notification。KVO

MVC的改进版 MVVM

MVVM是在MVC的基础上多了一个View Model: 表示逻辑, 将 model 的数据转换为 view 能够呈现的东西. 适合大量展示类的App

HMVC

Hierarchical MVC, 把client应用程序分解为有层次的父子关系的MVC, 重复应用这个模式, 形成结构化的client架构. 适合重型B/S架构的WebApp.

一个MVC模块由应用程序的一个模块抽象而成. 当中非常重要的一个概念就是 Parent MVC , 它能够相应界面上的实体, 也能够是一个抽象的对象. 设想一个app 有标签栏, 工具栏, 导航栏, 主工作区, 相应到HMVC上就是这个app最底部的标签栏 是 Layer1, Layer2 导航栏,主要工作区, 工具栏. 假设认为 Layer2 太复杂能够吧主要工作区放到 Layer3, 依次类推.

Controller 是功能模块的总控室, 它负责和子Controller或父Controller通信,并通知它的 View 处理改变界面显示, Model 处理一些业务逻辑或数据库訪问操作. 如才的样例里, 点击了工具栏里的一个button, 工具栏的Controller 响应这个event, 发现是要切换主工作区, 工具栏做不了,就传递他的父Controller处理(假设父Controller也处理不了, 就继续往上传递)然后标签栏的Controller处理切换主工作区.

长处:

  • 把程序分成了几个部分, 减少了依赖性
  • 支持鼓舞重用代码, 组件或者模块。
  • 在今后的维护中, 提高了可扩展性。

分层设计

三层架构

我们在来看一下经典的三层架构

从上至下为

  • 表示层(UI)
  • 业务逻辑层或称为领域层(BLL)
  • 数据訪问层(DAL)
层次 作用 设计原则
表示层(UI) 向用户展现特定业务数据。採集用户的输入信息和操作 用户至上。兼顾简洁;不包括不论什么业务相关的逻辑处理
业务逻辑层(BLL) 从DAL中获取数据, 在UI显示; 从UI中获取用户指令和数据, 运行业务逻辑或通过DAL写入数据源 作为U层与D层的桥梁,目的在于展现清晰的函数结构, 仅仅负责数据处理传递, 不涉及SQL语句和ADO.NET
数据訪问层(DAL) 直接操作数据库,针对数据的增添 删除 改动 查找; 详细为业务逻辑层或表示层提供数据服务。 专门操作数据库, 不考虑数据合法性. 数据库错误返回-1, 逻辑错误返回0, 并告知错误原因, 成功返回1

然后呢,我们如今的架构则是

四层架构

在三层架构的基础上多了业务规则层, 通常的三层是把业务逻辑和业务规则合并为一个层。统称为业务层.业务规则层的提出,既能够及时处理用户输入的不合法信息, 又能够及时处理数据库错误, 增大了业务逻辑层的结构清晰度, 让业务逻辑人员专心致志做逻辑

从上至下为

  • 表示层
  • 业务规则层
  • 业务逻辑层或称为领域层
  • 数据訪问层
层次 作用 设计原则
业务规则层(ECL) 对于UI层传下来的參数来说,检查合法性。 用户至上,兼顾简洁。不包括不论什么业务相关的逻辑处理

引入service层

引入service层的架构和普通的分层架构的不同是: service层内部有数据, 能够单独执行.

从上至下为

  • 表现层
  • 服务层(service)
  • 数据訪问层
  • 业务逻辑层
层次 作用 设计原则
表现层 显示与用户的互交  
服务层 service层提供表现层的业务逻辑入口,通过定义接口服务的形式,通过接口调用来完毕.  
业务逻辑层 1接收服务层传来的DTO, 然后依据业务规则, 对传入的DTO进行加工, 返回加工后的信息 2 须要为每一个对象提供业务行为, 而且这些对象之间是独立的 3 业务对象之间的交互流程通过服务层来组织  
数据訪问层 本地数据远程数据的訪问接口  

新秀VIPER

viper这里不多说了,请想了解的自行搜索

时间: 2024-08-18 09:18:52

移动App架构设计的相关文章

Hybrid APP 架构设计思路

关于Hybrid模式开发app的好处,网络上已有很多文章阐述了,这里不展开. 本文将从以下几个方面阐述Hybrid app架构设计的一些经验和思考. 原文及讨论请到 github issue 通讯 作为一种跨语言开发模式,通讯层是Hybrid架构首先应该考虑和设计的,往后所有的逻辑都是基于通讯层展开. Native(以Android为例)和H5通讯,基本原理: Android调用H5:通过webview类的loadUrl方法可以直接执行js代码,类似浏览器地址栏输入一段js一样的效果 webvi

Hybrid APP架构设计思路

原文:Hybrid APP架构设计思路 关于Hybrid模式开发app的好处,网络上已有很多文章阐述了,这里不展开. 本文将从以下几个方面阐述Hybrid app架构设计的一些经验和思考. 通讯 作为一种跨语言开发模式,通讯层是Hybrid架构首先应该考虑和设计的,往后所有的逻辑都是基于通讯层展开. Native(以Android为例)和H5通讯,基本原理: Android调用H5:通过webview类的loadUrl方法可以直接执行js代码,类似浏览器地址栏输入一段js一样的效果 webvie

转: ios app架构设计

http://keeganlee.me/post/architecture/20160107 看完这一系列文章后就知道怎么回答这类问题了: App架构设计经验谈:接口的设计 App架构设计经验谈:技术选型 App架构设计经验谈:数据层的设计 App架构设计经验谈:业务层的设计 App架构设计经验谈:展示层的设计

android app 架构设计02

二:在开放的过程中,尽量把工具类,BaseActivity 放在指定的位置, DateFormat Bitmap Notification Shared Preference Environment Device 三: 2.2 Task管理 线程只是一种机制,保证我们要完成的任务不运行在UI线程(也就是说不阻塞UI),完成的任务才是我们关注的核心,因此,我们可以通过设计,把线程封装,让使用者根本感觉不到是线程,他只用关心他要做的事情就行了. 这里,我们可以设计一种"异步链式调用"的框架

Hybrid APP架构设计

通讯 作为一种跨语言开发模式,通讯层是Hybrid架构首先应该考虑和设计的,往后所有的逻辑都是基于通讯层展开. Native(以Android为例)和H5通讯,基本原理: Android调用H5:通过webview类的 loadUrl 方法可以直接执行js代码,类似浏览器地址栏输入一段js一样的效果 webview.loadUrl("javascript: alert('hello world')"); H5调用Android:webview可以拦截H5发起的任意url请求,webvi

App架构设计经验谈:服务端接口的设计

转自:http://www.jb51.net/article/60796.htm App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息.实现上,大部分都采用token的认证方式,一般流程是: 用户用密码登录成功后,服务器返回token

[转]App架构设计经验谈:接口的设计

原文地址:http://developer.51cto.com/art/201601/503767.htm App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息.实现上,大部分都采用token的认证方式,一般流程是: 用户用密码登录成

App架构设计经验谈:接口的设计

App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息.实现上,大部分都采用token的认证方式,一般流程是: 用户用密码登录成功后,服务器返回token给客户端: 客户端将token保存在本地,发起后续的相关请求时,将token发回给

App架构设计:接口的设计

安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息.实现上,大部分都采用token的认证方式,一般流程是: 用户用密码登录成功后,服务器返回token给客户端: 客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器: 服务器检查token的有效性,有效则返回数据,若无效,分两种情况: token错误,这时需要用户重新登