OneCoin战队——个人总结(真·终章)

写在前面的话

虽然在很久之前,我就写过一篇终章了,但是因为比赛延期,所以我才有时间多写了几篇划划水,眼下又到了最后的提交时间,不出意外的话,这次是真正的终章了。
最后这一篇,我想对我这几个月的努力进行一个总结,也对我所做的工作进行一个收尾和归纳。
那么在正文开始之前呢,我想给大家介绍一下我们的战队名字——OneCoin的由来(凑字数):
战队的名字顾名思义,就是一枚硬币的意思,取名的灵感来源于去年上映的一部由鹿晗和吴磊主演的网剧——《穿越火线》,主角在比赛前总会用抛硬币的方式来预测自己今天的游戏胜败,虽然有些玄学,但是这种信仰在比赛中给予了他们很强大的力量。
而我对我们战队的名字的理解,也正如那一枚硬币,一枚硬币有两个面,对应着任何事物都有好坏两个面,我们在做一件事情的时候,同样会进行不同的抉择:

  • 比如早上八点半要上课,现在是八点整,是选择立刻起床洗漱出发上课,还是选择偷懒赌一把老师不会点名。
  • 比如比赛快要截止了,是选择随便混混划个水,亦或是好好努力,尽己所能去做到最好。
  • 比如大学四年,是每天课上玩手机,课下打游戏,还是抓紧每一分每一秒好好学习、丰富阅历、锻炼身体,过上充实的大学生活。

硬币的两面对应着不同的图案,事物的两面也对应着不同的结局,我不知道自己的选择是对是错,过去的不计较,未来的不知道,至少当下,就让我像花火一样盛开。

正片开始

OpenHarmony整体预览

鸿蒙系统是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于物联网,特点是低时延,甚至可到毫秒级乃至亚毫秒级。
简单来说,鸿蒙系统是一款面向未来的全方位开放分布式的操作系统,OpenHarmony从整体遵从分层设计,从上到下依次为:内核层、系统服务层、框架层和应用层。
在这个开源项目中学习了几个月了,最基础的知识,就是鸿蒙系统分为三个基础模块:

  1. 分布式软总线(communication_softbus_lite)
  2. 系统框架(distributedschedule_samgr_lite)
  3. 安全模块(security_huks)

三个模块的构建成就了一个强大的鸿蒙系统,每个模块内又实现了许多各种各样的功能。
总的来说,OpenHarmony提供用户程序框架、Ability框架以及UI框架,能够保证开发的应用在多终端运行时保证一致性。一次开发、多端部署。
多终端软件平台API具备一致性,确保用户程序的运行兼容性。

三个模块的具体分析介绍,在前面的博客中有详细谈到,欢迎查阅:
初识OpenHarmony三大模块
OpenHarmony相关知识学习
最终篇——终末的博客

接下来我将从模块二——框架模块入手,对整体的系统框架进行一个分析总结

系统框架模块的基本内容

系统服务框架基于面向服务的架构,提供了服务开发、服务的子功能开发、对外接口的开发、以及多服务共进程、进程间服务调用等开发能力。
而鸿蒙的系统框架主要分为两种:M核和A核
两者的区别如下:
M核:包含服务开发、服务的子功能开发、对外接口的开发以及多服务共进程的开发框架
A核:在M核能力基础之上,包含了进程间服务调用、进程间服务调用权限控制、进程间服务接口开发等更高级的开发能力
具体介绍在前面的博客中也提到,系统框架中的线程和进程之间的关系也有过相关介绍,欢迎查阅:
OpenHarmony模块二初分析

系统框架中的主角

鸿蒙系统的服务架构由三个角色组成:

  1. Provider(生产者):架构中各种服务的提供者,为系统提供对外的接口,同时接收消费者的请求并执行。能够将自己的服务和接口发布到服务管理中心,以便服务的消费者可以发现和访问该服务。
  2. Consumer(消费者):构中各种服务的使用者,通常为了实现某种结果而调用生产者提供的各种功能。它可以是一个应用程序、一个软件模块或者另一个服务,它发起对服务管理中心的服务查询、绑定服务, 然后执行服务提供的能力。
  3. Samgr(服务中介处):服务管理中心是一个中介者,它管理着Provider提供的能力,同时帮助Consumer发现Provider的能力。

在之前的博客中有相关具体介绍,欢迎查阅:
OpenHarmony模块二初分析(2)

所谓的生产者其实就是系统的服务端接口(Server),消费者则是系统的客户端接口(Client),接下来逐个进行总结介绍。

客户端(Client)的秘密

该端口主要在samgr_client文件下进行实现,主要是serviceApi的注册相关函数以及g_remoteRegister初始化函数。
其功能实现流程主要是依靠客户端代理通过g_remoteRegister进行管理和操作,服务端代理通过g_server管理,实际上都是在其中的endpoint中,proxy作为接口API为服务直接提供了通信的接口,并通过router、policy和endpoint的协作进行IPC通信

文件下的代码函数的构造和功能流程的剖析在之前的博客中同样有过介绍,这里推荐两篇文章,欢迎查阅:
客户端的那些事儿
客户端的那些事儿(2)

服务端(Server)的秘密

对于服务端,我们将三大主角中的两位——Provider和Samgr放在一起进行统一讲解:

  • 其实对于Server来说,该端口包括了服务端endpoint的创建和初始化,通过g_server对endpoint进行统一管理和消息的处理,并通过结构体sa_Store管理服务和feature的信息,通过三个Proc函数来具体处理request并返回reply和应答resp
  • 而对于Samgr而言,一个服务的启动三步走:服务注册,服务初始化,服务Api的注册和初始化;整个Samgr系统的启动三步走:系统服务注册、用户APP服务注册、所有服务的初始化。

关于服务端的函数构成和功能搭建也曾做过具体介绍,这里同样推荐两篇相关博客,欢迎查阅:
服务端的那些事儿
服务端的那些事儿(2)

在鸿蒙的框架系统中,还有一个十分重要的模块——IPC通信和消息处理的任务机制模块
学到现在,我们认识了系统构架的构成,也了解了客户端和服务端之间的功能实现,接下来我们将两者联系起来,细谈客户端与服务端之间的IPC通信往来和它们之间的消息处理。

客户端与服务端的联动机制与消息处理

在之前的博客中我有做过介绍,该模块的IPC通信机制主要是从listen出发到invoke调用处理函数,从QUEUE进入Thread完成处理后将reply再通过Dispatch沿着router按照policy返回通信endpoint的整个过程;消息处理主要是通过taskPool中的队列和线程进行处理调度,并由三个Proc函数进行功能实现

在这里我们需要注意g_server这个函数封装,所有的一切都是从其中的Invoke函数引出的。
简单总结一下,服务端与客户端之间的联动机制,也就是IPC通信往来流程主要分为如下三个步骤:

  1. Dispatch()接收消息,然后转发消息
  2. HandleIpc()对消息进行处理
  3. 最后由消息接收者EP通过调用token指定的router->proxy->invoke()来处理

消息处理则是由之前提到过的服务端中的三个Proc函数进行处理

  • 对EP注册类消息,调用ProcEndpoint()来处理
  • 对Feature类消息,调用ProcFeature()来处理,又分为注册和查询两种,通过参数分别调用ProcPutFeatur()和ProcGetFeature()来处理。
  • 对于SysCap类的IPC消息,调用ProcSysCap()来处理,分为三类:添加一项SysCap、获取一项SysCap、获取所有SysCap。分别对应的三个函数为ProcAddSysCap()、ProcGetSysCap()、ProcGetAllSysCap()。

其中的主要流程在之前的博客中同样做过具体介绍,这里同样推荐两篇文章,欢迎查阅:
细谈客户端与服务端的联动机制
揭露Client和Server之间联动机制的本质和消息处理的幕后黑手

以上就是我对鸿蒙系统几个月内的学习总结。

写在后面的话

2021.7.21,我和我的同学组建了OneCoin战队
2021.7.28,在经过了几天的对OpenHarmony的分布式模块的学习后,我战战兢兢的写下了第一篇博客
十月中旬,初赛截止,而我们的初赛成绩,在鸿蒙赛道获得了第一名(被队友带飞)
2021.10.30,这是原本的比赛截止日期,那天晚上我写下了最后一篇博客——《最终篇——终末的博客》,结果比赛延长到了11.20
2021.11.20,也就是今天,我写下了这最后一篇博客,是对我这四个月来对OpenHarmony学习的总结,也是对我四个月的努力的一种认可,画上一个句号。

古人有云:古之成大事者,不惟有超世之才,亦必有坚忍不拔之志。
四个月的努力,上千条的代码评注,在这个过程中,我常常因为长时间注视屏幕而感到头晕目眩,也常常因为代码中的名字缩写而弄得头昏脑胀,在经历了一次又一次的折磨——痛苦——放弃——坚持的反复过程之后,我在写博客方面找到了一些技巧,在代码评注和学习方面也找到了乐趣与方法,慢慢地如鱼得水,渐渐地学有所成。

感谢华为和平台为我们提供了优秀的开源项目供我们进行学习,在这个过程中,我们不仅学习到了编程和计算机的相关知识,更是培养了一种刨根问底的主动学习能力,我想这就是国内优秀项目进行开源的意义。希望能有越来越多的优秀项目进行开源,走进校园和课堂,丰富我们的校园生活,为国家培养优秀人才出力,也希望华为一直秉承着“中华有为”的初心,变得越来越好。

借用尼采的一句话,作出最后的总结:“谁终将声震人间,必长久深自缄默;谁终将点燃闪电,必长久如云漂泊。”
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值