当前位置: 首页 > 网络应用技术

TAOBAO本地研发模型| DX R&D模型的演变和思考

时间:2023-03-07 22:24:13 网络应用技术

  DX的全名是Dinamicx,目前在TAOBAO甚至整个Ali组中广泛使用。核心优势是性能和稳定性。在过去的几年中,TAOBAO/Group涉及DX的其他外部文章,但DX从未对外界进行完整的介绍。对于外界来说,这两个字母非常神秘。此系列文章“ DX R&D模型”将拉下其神秘的面纱,看看DX在过去两年中所做的事情。

  DX从主页孵化,以解决业务两端的一致性和动态性问题。经过几次升级和迭代后,基本链接的动态计划 - 基本链接动态解决方案的组co构建动态计划 - 组的CO -Sonstruction动态解决方案。组移动组标准本机RESS的多级跳跃D模型。随着访问业务和开发人员的增加,以及越来越复杂和多样化的使用方案,技术类别也已从末端SDK扩展到动态技术系统,然后扩展到本机R&D模型。

  这可能是地球上最复杂的淘宝技术选择标准。我们将所有淘宝的业务分为三个主要类别:核心域,购物指南域和开放式域。不同的方案对性能经验,稳定性和交付效率的需求不同。这里没有“技术银炸弹”,只有适合目标场景的最佳解决方案。

  核心领域标准技术的挑战是什么?

  首先看大型业务背景:

  这三个主要的业务背景深远影响了每个业务和潜在的新业务访问DX。因此,在过去的两年中,我们的工作主要集中在R&D模型的升级和体验升级上。

  首先,R&D模型升级,起初有两个主要问题:

  然后是体验升级。尽管我们无法确定特定业务场景的视觉互动和经验设计,但是为了获得出色的体验,我们可以做一些事情:

  首先,严格来说,原始的DX平台不称为IDE,只能说是编辑。从关系的角度来看,IDE包含编辑器,借用VSCODE图来说明两者之间的差异:

  其次,尽管DX平台上的原始Web编辑器(摩纳哥)也支持大多数LSP API,但没有能力理解和调试项目/项目系统,文件系统,代码上下文和调试的环境。本地环境,RICH扩展功能和插头可以提供完整的研发生命周期支持。

  因此,在Procode模式下,我们的技术选择基于Katian IDE(与VSCODE API兼容),以获得更多的查看功能。将来,我们还可以通过灵活的部署方法(远程开发,云部署)实现更高效/更高效/更高效/的效率/更快,以实现更高效/快速开发和协作。

  目前,DX IDE可以使用包括TAOBAO在内的许多重要业务,包括TAOBAO。这些开发人员在使用IDE之后大大提高了研发效率,尤其是多人协作和调试效率已提高。对于DX IDE的更详细介绍,您可以期待并阅读本系列文章的第二篇文章。

  第二个是列表容器。过去,基于内置的容器的容器具有特征。集装箱/页面布局由数据协议描述,即集成数据布局。Quickly将地板从地板上配置出来以通过协议启动侧面渲染,并且服务器不需要感知业务结构(默认值是一个单个列表布局)。但是,在复杂的页面结构(例如多层和多键式嵌套容器)中,尤其是在复杂的交互的情况下,整个数据结构都太复杂了,Paylaod太复杂了数据协议的数据将增加。少于业务数据。

  在这种情况下,将两者结合在一起显然是不合适的。因此,对于单个责任原理和“静态分离的分离”,我们重新考虑和设计,统一描述了模板XML(包括容器/页面布局)中的布局,让数据返回到纯数据结构。同时,我们在DX中的新功能列表容器中构建了 - 如下:

  目前,仪表容器涵盖了淘宝和该组的多个重要业务方案,并支持嵌套容器/链接框架/动态模板/插槽的容量。第二年,我们还将促进更多业务。

  第三是事件链。过去,DX仅支持UI的动态。有限的逻辑控制只能通过表达来实现。其他逻辑上的更改依赖于该版本。对逻辑动态的需求变得更加强烈。面对这种需求,经过重复的讨论和思想,我们全面考虑了苹果的合规性,性能,稳定性,稳定性和发展效率,并提供了事件链计划。

  在事件链方案中,开发人员在EventChain.json中使用与XML相对应的原子能力和表达。在研发期中,IDE提供了事件链jsonit的智能感知能力,可用于显示事件链通过事件链的事件链执行的过程,并通过事件链通过事件链来显示函数链。开发完成后,在编译阶段,DX编译服务将将JSON汇编为二进制,并将使用模板二进制发行以确保性能和一致性。末端有一个事件链引擎负责二进制分析,以及原子能力的安排

  如果您想了解列表容器和事件链的更多技术细节,则可以期待并阅读下一篇文章。

  在过去的两年中,DX的功能变得越来越强大,功能变得越来越丰富(动画动态,事件链,复杂的嵌套,实时广播/视频组件,3D组件等)。还是拒绝?我们如何继续添加新功能,同时持续进行性能?面对越来越复杂的模板,如何帮助开发人员有一个起点来调查和优化在面对性能问题时而不是压倒性?

  这就是说DX的渲染管线已描述。如果Flutter是一所革命学校,接管了整个系统渲染,那么DX是基于本机系统渲染的改进主义者。DX的主要设计思想是基于平台首先改善本机渲染管道/本机渲染管道的性能瓶颈和问题系统的机制,并达到两端的统一性。

  从DX管道的耗费分布来看,主要的大头是负载和渲染,因此我们主要通过异步管道解决了耗时的负载问题,并解决了通过异步图和高 - 高 -绩效组件。计算资源以尽可能控制资源的合理分配。

  异步管道和异步图主要是为了允许更多任务在子线程中执行,或者安排并行计划,减少主线程的负担,并合理地使用多核计算资源。在DX列表容器中,我们已经构建了功能,我们可以实现它。它用于打开框,在业务容器中,业务团队需要根据时间/业务来调用相应的API我们的建议要获得异步调度。

  就高性能组件而言,我们主要优化图片组件和自我开发的文本组件,尤其是丰富的文本组件。基于系统TextKit/textlayout,我们已经实现了自我检验和自我绘制,并提供了textSpan/images -pan/explant和其他能力。20%Android 10%)。

  在计算资源控制方面,我们主要设计并实现了出发计算资源控制框架,以实现视频/实时/动态图的广播控制问题,并提供了规则配置功能。在多个视频条件下,iOS CPU职业率降低了66%/android的降低率降低了25%,并且已经启动了一些有关淘宝的重要信息流场。

  在绩效工具方面,过去,我们主要在运行时执行了各种基础和编译的性能警告技巧。在遇到模板性能问题时,商业党和DX学生通常会玩日志,以查看时间消耗和定位问题。DX和天然的组合更高。在渲染过程中,有大量的DX内部代码和业务方定制代码,这将导致快速,精确的定位问题;另一个原因是,另一个原因是DX的渲染过程对业务党来说是相对较黑的框,并且商业党没有进行调查和优化的有效起点。

  为了摆脱这种情况,我们必须让整个模板渲染过程在开发阶段执行一定数量的白色拳击,以在所有阶段以视觉图形方式显示模板的渲染时间(内部)DX是业务团体的定制部分。小部件的阶段是/dataparser/eventHandler),同时,通过累积的常见性能问题,模板会自动分析并提供某些优化建议。

  关于绩效优化的思维和实践,请继续期待并阅读稍后的文章。

  总而言之,这是当前DX技术系统的全局。同时,它引入了某些动态逻辑功能。通过共同建设原子能图书馆和商业框架,我们还与TAOBAO团队合作,将复杂的州管理,过程安排和其他功能引入DX Technology Ecosystem.Access。

  从技术进化的角度来看,我们认为必须实现DX的下一个阶段:

  当然,要实现这些目标,有许多技术挑战等待着我们。欢迎有兴趣的学生与我们交流技术交流。

  原始:https://juejin.cn/post/7111242730616913933