带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(5)

简介: 带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(5)

带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(4)https://developer.aliyun.com/article/1340323?groupCode=taobaotech


事件订阅

事件订阅派发,依赖base::event实现,是典型的观察者模式。当事件触发时,按照注册顺序挨个调用观察者的base::callback,可以非常容易的完成复杂流程串联。这里的event是实例级别的,配合prg的账号隔离能力,可以很好的解决多账号业务的事件派发问题。但目前base::event暂不支持按优先级注册派发。

 

class IxxxService : public prg::IPrgCOMRefCounted
{
public:
base::event<void()> onDataChanged; public:
virtual bool GetData(const std::string& data) = 0;
}
// 获取组件
scoped_refptr<IxxxService> spInterface; prg::PrgCOMGetInstance(c_uuidof(xxxService), instanceName, spInterface);
// 订阅组件事件
CBaseEventHelper::RegisterEvent(spInterface->onDataChanged, callback);
// 取消订阅组件事件
CBaseEventHelper::UnRegisterEvent(spInterface->onDataChanged);
prg框架的组件约束

 

prg::com组件要遵循什么约束条件?

不同类型的组件,标准是不一样的,要说组件标准,首先要对组件进行分类。

 

以阿里旺旺应用为例,跨端旺旺包含的组件,大致可以分成以下几类:

 

框架层:

  1. ali系pc应用基础组件
  2. 平台相关基础组件

框架和基础组件,是阿里系pc应用基座,这些组件由prg框架内置,从而实现快速搭建pc跨端应用的能力。

 

应用层:

  1. 旺旺业务-非UI组
  2. 旺旺业务-UI组件

应用层组件,主要用来实现业务功能,这部分组件经常要进行扩展和修改,是我们要重点关注的。应用层组件,根据其技术实现,又可以分成ui相关和ui无关两种,ui组件会相对更加复杂。

 

 

(ps:UI组件上采用pv分层,p层负责控制界面逻辑,使用纯c++实现,view层只负责绘制和操作输入,这样在最 大程度复用代码,提高效率的同时,保证业务双端一致。我们的ui组件都遵从这个标准。我们选用了Qt作为跨端UI 框架,我们发现,Qt并不能做到UI功能完全跨端,考虑到后续替换UI框架或适配新平台的可能性,我们把Qt的使用范围收敛在UI渲染部分,即view层。)

image.png

 

带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(6)https://developer.aliyun.com/article/1340321?groupCode=taobaotech

相关文章
|
Web App开发 测试技术
使用Selenium模拟鼠标滚动操作的技巧
本文介绍了使用Selenium进行Web自动化测试时如何模拟鼠标滚动操作。模拟滚动对于处理动态加载的内容至关重要。通过`ActionChains`类,可以实现向下滑动1000像素的操作。示例代码展示了如何结合滚动来截取长页面的完整图片。总结来说,Selenium的`ActionChains`使得模拟用户行为,如滚动,变得简单,便于执行自动化任务。
|
存储 分布式计算 数据管理
基于 Apache Hudi + dbt 构建开放的Lakehouse
基于 Apache Hudi + dbt 构建开放的Lakehouse
442 3
|
3月前
|
人工智能 监控 数据挖掘
智能体来了(西南总部)拆解:AI Agent 指挥官 如何通过 Coze 工作流调度 AI 调度官
随着大模型深入业务执行层,AI Agent亟需系统化协同。本文提出“指挥官+调度官”分层机制:指挥官负责目标拆解与策略决策,调度官专注执行编排与资源管控,依托COZE工作流实现解耦协同,提升可控性、可解释性与跨场景扩展能力。
195 1
|
3月前
|
传感器 SQL 人工智能
Qoder NEXT 来了:补全功能全新升级,AI 代码采纳率提升 65%
Qoder智能补全全面升级,推出全新品牌NEXT。基于自研模型,Qoder NEXT可感知代码库与编辑历史,预测开发意图,实现跨文件联动、多点位自动补全,突破传统补全局限。通过ActionRL算法构建“训练-反馈-优化”闭环,代码采纳率提升65%,助力AI编程“最后一公里”。
|
3月前
|
数据采集 存储 监控
显存不够?16G显卡驾驭13B模型的计算与优化全指南
显存不够也能玩转大模型!本文详解如何用16G显卡成功微调13B参数模型,从显存精准计算、INT8量化、LoRA低秩适配到激活检查点优化,手把手教你规避OOM风险。结合实战代码与监控技巧,显存占用压至14.5GB内,效果显著优于7B模型。低成本实现高效大模型微调,个人开发者和小团队必备指南!
|
Oracle 安全 关系型数据库
【赵渝强老师】PostgreSQL的参数文件
PostgreSQL数据库的四个主要参数文件包括:`postgresql.conf`(主要配置文件)、`pg_hba.conf`(访问控制文件)、`pg_ident.conf`(用户映射文件)和`postgresql.auto.conf`(自动保存修改后的参数)。视频讲解和详细说明帮助理解各文件的作用。
426 19
|
前端开发 安全 开发者
【通义灵码实践】实现经典手机游戏推箱子
本文介绍了使用通义灵码辅助实现经典推箱子游戏的过程。首先,通过输入“用Python写一个推箱子游戏”,灵码生成了基本的终端版本代码,包括地图渲染、玩家移动和胜利检测等功能。然而,终端版本交互体验不佳。为了解决这一问题,再次输入“不要在终端上运行,希望可以在页面上运行”,灵码生成了基于Flask的后端代码和HTML前端代码,实现了网页版推箱子游戏。最终结果展示了游戏的完整实现,包括前后端交互和用户界面。总结中提到,该方法具有快速生成代码、代码质量高、易于扩展等优点,但也存在功能简单、样式和用户体验有限、错误处理不足等问题,适合快速原型开发和教学演示。
569 2
|
数据采集 Java Python
爬取小说资源的Python实践:从单线程到多线程的效率飞跃
本文介绍了一种使用Python从笔趣阁网站爬取小说内容的方法,并通过引入多线程技术大幅提高了下载效率。文章首先概述了环境准备,包括所需安装的库,然后详细描述了爬虫程序的设计与实现过程,包括发送HTTP请求、解析HTML文档、提取章节链接及多线程下载等步骤。最后,强调了性能优化的重要性,并提醒读者遵守相关法律法规。
549 0
|
存储 Kubernetes 调度
【赵渝强老师】K8s的有状态控制器StatefulSet
在Kubernetes中,StatefulSets用于部署有状态应用程序,提供持久存储和唯一标识符。与Deployment不同,StatefulSets确保Pod的标识符在重新调度后保持不变,适用于需要稳定网络标识符和持久存储的场景。本文介绍了StatefulSets的创建、扩容与缩容、更新与回滚等操作,并提供了具体示例和视频讲解。
592 0

热门文章

最新文章