客户端架构 | 青训营笔记

171 阅读5分钟

这是我参与「第四届青训营 」笔记创作活动的第15天

简介

客户端

客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行
   ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~ ——百度百科

架构

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。架构描述语言(ADL)用于描述软件的体系架构。软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。
   ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~    ~~~ ——百度百科

典型的客户端架构

Android OS

Android OS(operating system)是一个移动设备,智能手机和平板电脑的操作系统。它是由Google领衔的手机联盟开发,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。 image.png 分别是应用框架层、Binder IPC、系统服务层、硬件抽象层和Linux内核

  • 应用框架层:App开发者直接使用的接口层,UI的实现、数据的处理、资源的使用,都是利用这一层的API
  • Binder IPC:提供跨进程访问的能力,App可以高效的访问由系统进程暴露的能力。App进程与系统进程之间的通信是典型的C/S模型
  • 系统服务层:提供窗口管理、相机、音视频等重要的系统能力。包含各种子系统,内部逻辑十分庞大,往下调用HAL层封装的硬件能力;往上听过Binder暴露可以远程调用的API
  • 硬件抽象层:屏蔽底层不同驱动的差异,使得系统服务层可以快速适配到不同的硬件设备
  • Linux 内核:CPU、内存、唤醒服务等重要的驱动实现都是基于该层操作系统的核心实现

iOS

  • iOS系统是基于苹果公司自研处理器A系列进行的开发设计;
  • 苹果公司软硬件高度统一,完全闭环,避免了兼容性问题的考虑,软件系统和硬件系统的协同设计得以更好地进行,使得iOS系统更适合A系列处理器的同时,A系列处理器也更适合iOS系统 image.png image.png 分为可触摸层、媒体层、核心服务层、内核层
    每个层级提供不同的服务。低层级结构提供基础服务如文件系统、内存管理、I/O操作等。高层级结构建立在低层级结构之上提供具体服务如UI控件、文件访问等。

Flutter

Flutter 是一个跨平台的 UI 工具集,它的设计初衷,就是允许在各种操作系统上复用同样的代码,例如 iOS 和 Android,同时让应用程序可以直接与底层平台服务进行交互。 image.png

  • 框架(Framework):框架层是纯dart语言实现的一个响应式框架,开发者平常需要通过该层和Flutter系统交互。
  • 引擎(Engine):引擎层绝大部分是用C++实现的,其为Flutter系统的核心。引擎提供了一系列Flutter核心API的底层实现,例如图形(通过Skia),文字布局,文件等,是连接框架和系统(Andoird/iOS)的桥梁。
  • 嵌入层(Embedder):嵌入层基本是由平台对应的语言实现的,例如:在Android上是由Java和C++实现;在iOS是由Objective-C/Objective-C++实现。嵌入层为Flutter系统提供了一个入口,Flutter系统通过该入口访问底层系统提供的服务,例如输入法,绘制surface等。

更多详解请见Flutter 架构概览

常见的架构方式

image.png

MVC

Model-View-Controller

  • V:V在MVC架构中Activity(托管Fragment,View,WebView等)首先充当V的角色。
  • M:业务逻辑层划分出来专门处理数据。例如:数据的http请求,数据解析和储存等逻辑都封装在这一层。Activity 不直接和Http,Dao(数据访问对象层)直接有联系了,视图数据从此为路人。
  • C:接受或控制事件或逻辑层的回调响应。

MVP

Model-View-Presenter

  • V:Activity为代表,只负责UI的绘制和刷新。
  • P:负责传达指令。向上接收V的事件指令并需要的时候传达给M,向下接收M的指令并通知V刷新UI。
  • M:只负责处理出来数据逻辑。

MVVM

Model-ViewModel-View-Controller
MVVM模式解耦了视图和模型。在模式中,每一个视图都有对应的一个ViewModel,同时ViewModel与模型建立联系。当接收到用户请求后,ViewModel获取模型响应数据,并通过数据绑定将相应的视图页面重新渲染。模型层的数据只需要传入ViewModel即可实现视图的同步更新,从而实现了视图和模型之间的松散耦合。

更多详解请见客户端架构-CSDN博客