带你读《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开发 移动开发 前端开发
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(1)
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(1)
104 1
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(8)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(8)
|
存储 iOS开发 MacOS
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(2)
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(2)
129 0
|
缓存 小程序 前端开发
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(5)
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(5)
104 0
|
JavaScript Android开发 C++
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(3)
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(3)
|
开发框架 开发工具 Windows
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(1)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(1)
|
ARouter 微服务 Windows
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(2)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(2)
112 0
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(10)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(10)
|
监控 测试技术
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(9)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(9)
|
测试技术 C++ Windows
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(7)
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(7)