• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 【架构篇】Android移动app架构设计浅谈

【架构篇】Android移动app架构设计浅谈

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android系统架构,android架构,android系统架构图,android架构图,android平台架构等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

【架构篇】Android移动app架构设计浅谈


前言

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

软件架构设计目标:

1.可靠性(Reliable)。软件架构的可靠是产品设计的前提。
2.安全性(Secure)。软件架构的安全性是产品可持续发展的条件。
3.可扩展性(Scalable)。软件架构必须能够不同的功能需求情况下,支持可扩散性。
4.可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。
5.可伸缩 (Extensible)。在新技术出现的时候,一个软件架构应当允许导入新技术,从而对现有系统进行功能和性能的扩展。
6.可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费。

架构是项目形成到一定阶段的趋势。是对整个产品是否合格的有效保证。对于很多项目设计人员,在不考虑产品本身,不考虑团队,不考虑时间周期的前提下,一味的强调软件构架,是不合理的,也不利于整个产品的发展。当然,一个好的项目架构师,是很能清楚,项目在不同阶段,所需要处理的不同职责。能够最大限度的发挥能效,将产品周期,与功能模块做出最合适的匹配规划,这才是一个架构师所必须追求的。

以下是个人对Android移动项目架构设计简单的经验之谈。欢迎与更多的朋友交流,若有疑问,或不合理之处,都可以随时交流。

从项目功能开始

每一个项目架构师,在拿到一个新项目的时候,都会不同的着重点。在项目规划风格上,都会有不同的考虑。而我个人在着手项目时,都会从功能上去着手。先了解项目整体的功能模块,区分出主体功能模块有哪些类,对不同的功能模块进行细致的划分。这是我开始的第一步。因为,只有对项目整体有个把握,才能更快的对项目有了解,才能知道怎样去合理安排项目的研发,才能更好的去安排项目进度流程,和人员的安排调度。

功能划分之后,接下来就是项目的实际研发阶段。这个阶段就是项目实际进展阶段了。必须要有合理的安排调度,才是保证项目的高效。比如:我们进行的大部分项目,都有网络交互的部分,也有本地功能部分,还有一些基础数据模块部分,这些功能必须要有合理的时间安排。

项目研发之前,几点提要说明:
一、团队之间统一编码规范。
二、需求文档统一管理。
三、多人协同开发,根据文档开发(一切以文档为主)。

项目以功能划分,功能以模块划分。在项目初期,除了产品原型可能是提前设计成形外,其它的项目文档都还未出来,产品也是有个确定功能,但是细节文档还未成形,这个时候已经是项目开始阶段,即使在有一些文档还未成形前,也可以开始项目的基础开发了。

功能模块

网络模块,数据库存储模块,数据加密模块,数据缓存模块,数据解析器,日志信息收集模块等。这些都是项目的基本模块,也可以独立于功能的模块,可以提前开发,测试。便于后期直接使用。

移动安全机制

做过移动项目的都知道,移动安全是项目前期需要考虑的一个重要环节。所以,在项目之初,就应该对自身的数据存储做必要的数据加密,对网络传输的数据进行必要加密。
移动数据加密分为两种:
一种是本地数据加密,只是本机存储的信息,本地加密保存。
一种是网络传输数据加密,这是涉及到网络协议,与服务器之间的加密协议。

本地加密方式有很多种:
一、MD5加密算法。 MD5是个不可逆的算法 没有解密的算法(目前据说也有方法破解)。
二、DES加密。可逆。
三、RSA加密。可逆
对于不是需要绝对足够安全的项目,以上三种加密足够用。

网络数据加密主要从两个方面考虑:
1. 保证API的调用者是经过自己授权的App;
2. 保证数据传输的安全。

保证API是自己授权的App,采用设计签名的方式。对每个移动平台,都会有不同的AppKey和AppSecret。在调用API时,将AppKey加入到请求参数中,然后,把AppSecret与其它参数,通过某种签名算法生成一个签名字符串,把数据传输给服务器端。而服务器根据AppKey和AppSecret,用相同的签名算法生成的签名与之一致,则说明请求安全。签名算法可以采用自己规定的一套签名算法(更安全),也可采用外部公开的签名算法(初期使用)。另外,在参数列表中再加入一个时间戳,还可以防止部分重放攻击。
对于数据传输安全,可以使用HTTPS。因为HTTPS添加了ssl安全协议。但是android项目开发,大部分都没有去实现。主要是没有对ssl证书进行安全性检查。

API协议标准化

项目开发,协议一定需要标准化,并且需要严格执行接口协议。完成每个版本的协议文档更新,方便后续使用者查看。
目前协议都是使用Json格式传输。需要注意的是,JSON数据和实体对象在传输时,序列化和反序列化因平台不同,会产生不同的区别。比如:JSON库将Date类型的数据序列化时会转为String,传输到服务器时,服务器反序列化经常会出现不同的结果。

API接口版本控制

一般解决接口更新变化问题,我们采取的做法是,每个API接口,都会带有协议的版本,若是协议发生改变,则版本号相应改变,在处理数据请求时,则可以根据不同协议的版本进行处理,解决了版本的兼容性问题。

架构分层

架构设计,主要的目的就解决功能和代码的复用,减少重复开发,方便功能扩展,降低功能和代码层级的耦合。
目前移动设计框架,主流的有三种:MVC、MVP、MVVM三种方式。
任何的框架设计都是在满足开发需求为前提,千万不能为了设计而设计,不要问我这三种设计,哪种最合适开发?如果你还这样去问,那只能说你还不是一个成熟的产品设计者。三种框架都有各自的利弊,是应该在不同的阶段和不同人员的配备情况下,选择更合理的方式。我曾经参与一个创业团队开发视频项目,前期只有两个移动开发人员,项目时间紧的情况下。项目负责人就只会天天在那里修改需求,谈项目架构。初期的项目,在产品验证功能阶段,在项目需要快速迭代阶段,应该使用最有效的框架,才是合理的选择。而且项目的发展,一定是随着项目功能的确立,产品的定型和需求完善,对项目本身的稳定性和性能的要求,才是一个逐步提高的过程。想要一步达到完美的产品,不仅是在设计上很难做到,而且在目前所有的产品中,都是很难达到的。

任何框架都是在此三层数据模型上。View,Model,Controller/Presenter/ViewModel。上层View:用户行为操作,数据结果显示。底层Model:数据处理,提供显示数据。中间的就是业务逻辑层。

Android项目设计,重在对项目的理解,重在对需求功能的划分,重在对团队合理分配。高效的产出,快速的迭代,才是移动项目的生存之道。

Android测试

移动开发,为保证质量产出,需要进行必须要逻辑测试。而在项目框架设计中,简单的mvc模式,若view和model中混有业务逻辑,则不利于接口测试。所以,在后续版本的迭代中,需要逐渐使用mvp或mvvm框架设计,让view和model与业务逻辑实现完整的解耦合。

Android环境

自从Android提供了更高效稳定的android studio之后,对于开发者来说是更便捷,更方便了。在android gradle多平台打包。proguard代码优化,混淆。随着android studio的越来越强大,越来越稳定,相信开发android项目也会变得越来越so easy了。

总结在最后

一个合格的移动项目架构师,必须是在不断的项目开发中成长的。不仅仅懂得项目的高效快速部署,也懂得怎样合理优化团队,才能有更优质的产品产出。移动产品,是一个快速产出的产品,怎样做出适合团队产出的产品,才是移动架构师的学习之道。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android系统架构,android系统结构
  • Android系统默认对话框添加图片,
  • Android 的系统架构,Android系统架构
  • Android系统的五种数据存储形式(二),android数据存储
  • Android系统的五种数据存储形式(一),android数据存储
  • 【架构篇】Android移动app架构设计浅谈
  • Android系统input设备的插拔和事件监听
  • Android系统四层架构分享,android四层架构

相关文章

  • 2017-05-26Android 反编译和混淆,android反编译混淆
  • 2017-05-26Android学习笔记-TextView(文本框)(二),android-textview
  • 2017-05-26二维码Zxing&Zbar,zxing
  • 2017-05-26Android 面试题总结(二)
  • 2017-05-26Android 5.0 Settings源码简要分析
  • 2017-05-26andriod ==和equals,andriodequals
  • 2017-05-26x11vnc无法识别大写状态键的解决方法
  • 2017-05-26Android群英传笔记系列二view的绘制(一),android群英
  • 2017-05-26android插件开发-就是你了!启动吧!插件的activity(二)
  • 2017-05-26Android中自定义视图View之---进阶篇(Canvas的使用)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • android 在5.0以后不允许使用隐式Intent方式来启动Service,androidintent
    • golang错误处理之error
    • 源码解析Android中AsyncTask的工作原理
    • Android中SimpleAdapter的使用—自定义列表,自定义simpleadapter
    • location of the android sdk has not been setup in the preferences,androidpreferences
    • Xamarin.Forms跨平台开发入门-第二部分:深入解析,
    • onTouch和onTouchEvent,ontouch
    • Postgresql通过fdw_JDBC连接查询DB2\Oracle表
    • andriod 动态显示当前时间,andriod当前时间
    • 从零开始怎么写android native service?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有