优酷客户端组装式应用开发设计与实践

简介: “组装式应用”是连续两年入选Gartner技术趋势报告,被列入技术领域的重要战略技术趋势,该技术的发展并非技术炒作,而是市场的真实需求。我理解组装式应用体现了快速交付,极致复用,稳定安全的技术理念,使技术和业务团队可以更敏捷、更有效地重用代码,大幅降低产品的开发门槛。本文将介绍一下优酷客户端在组装式开发上的设计和实践。根据组装式开发的定义,其核心是被称为“封装的业务能力(Packaged Busi

“组装式应用”是连续两年入选Gartner技术趋势报告,被列入技术领域的重要战略技术趋势,该技术的发展并非技术炒作,而是市场的真实需求。我理解组装式应用体现了快速交付,极致复用,稳定安全的技术理念,使技术和业务团队可以更敏捷、更有效地重用代码,大幅降低产品的开发门槛。

本文将介绍一下优酷客户端在组装式开发上的设计和实践。

根据组装式开发的定义,其核心是被称为“封装的业务能力(Packaged Business Capability,PBC)” 的一种软件定义的最小化业务功能。其考量维度包括了模块化、可发现、自治、可编排四个方面。

优酷客户端是一个面向消费者的视频类应用,业务流程可以分为分发和消费两个主要环节。而这些环节从交互的角度上看,又可以分为有交互界面和无交互两种。优酷客户端在组件化封装业务能力的时候,从设计上采取了分而治之的思想。对于有交互界面组件(本文中又称为UI组件),使用了标准化渲染架构来进行组件的模块化,可发现,自治和可编排。对于无交互界面组件(本文中又成为服务组件),则使用了标准化服务框架来完成组装式开发。

对有交互界面组件,UI的变化通常会非常频繁,布局、颜色、流程、交互方式都可能发生变化,而这一部分往往是应用开发过程中重头戏。所以如何进行组件化,并形成能复用又好用的组件池来快速搭建有自己产品或设计特点的应用,需要精巧的架构设计。优酷客户端将这部分组件设计拆分为设计标准化,容器标准化,协议标准化,组件开发标准化等部分来进行组装式开发的打磨。

设计标准化要解决的核心问题是单产品场景下视觉风格不统一,和在多产品/多模式下视觉适配成本高的问题。我们当时对优酷几百个组件产品进行了梳理,归纳形成了有限的集合,并对这些集合进行了命名,即Design Token。Design Token分为静态,动态,语义化,三个阶段,分别适合不同的需求。Design Token涵盖了属性,控件,组件多个维度,图中这些都是Design Token。在设计侧,我们通过形成设计规范,将Design Token与标准化对应起来。设计在开发时,只能进行符合规范的设计,而开发在开发时,也只能通过Design Token去获取值和对象。这就形成一种统一的设计研发语言。在实际工作中,为了保证这个标准化过程,我们还开发了专门的设计平台来工程化。而一整套Design Token对应的值,就是一个策略。我们可以在页面启动时切换策略,从而整体改变呈现的效果。结合不同平台的响应式SDK进行产品化后,就对应了优酷车机,优酷pad等多种产品形态。

组件是存在于容器中的,所以标准化组件,必须标准化容器。我们对容器的核心流程进行了抽象,对关键能力进行了封装,同时也对容器级别的业务需求进行规范。核心流程则是组件配置的读取,组件的各种布局,组件中各模块的创建,以及组件的渲染上屏。对上述过程涉及的通信,数据存储,局部刷新和分页加载,错误状态处理等也进行了封装。

协议标准化则是将组件的数据输入进行了规范化,优酷将页面进行领域模型的建模,对每一级领域涉及的各类数据进行规范化的定义,领域模型节点的无限嵌套可以适配各种场景,而每一级相同的规范保证了逻辑的可预期可复用性。

通过将组件外部依赖的插脚逐一打磨,可复用又好用的组件池就是水到渠成的了。优酷客户端将UI组件按产品形态进行了划分,内部使用MVP结构,做到了比组件更细粒度的复用,也更好适应不同场景的定制化需求。组件功能完整性,体现在任何一个组件在容器中都可以完成交互,并且和其所在的容器在视觉上完美适配。组件自身完美自洽,可以独立接收数据源,也能够独立完成交互背后的功能实现。UI组件采用了json注册的方式进行发现,可用根据编排结果进行展示。

标准化服务框架将某一类服务封装为一个组件,使用协约的方式对外暴露能力,并在模块内部将协约和实现分离,即协议可以实现也可以不实现,随时可以替换不同的实现。通过自注册方式来进行服务组件的注册,服务组件之间,服务组件和UI组件之间都通过协约来进行调用,一个组件不会直接去查另一个组件的数据,也不会直接去调用另外一个组件的内部方法,确保组件自治。在编排上,设计了自动化编排的方式,即根据调用关系,自动将组件打包集成。

伴随组装式应用而来,往往还有低代码/无代码开发这一流行概念。可以让程序设计者及一般用户不用传统程序设计语言即可以开发应用程序的开发平台,使用的是图形用户界面以及配置。优酷的组装式应用开发体系也向运营提供了图形化的页面组装平台。

好的经验是可以复制的。优酷客户端组装式应用开发架构已经在阿里的淘票票,大麦,小小优酷,来疯等多个应用进行了复用,形成了公共组件池,提高了整体的组件化水平。

目前该架构已经完成外部接入准备,也希望借助云巧等平台可以让更多的开发者了解到。

相关文章
|
自然语言处理 安全 前端开发
基于云巧进行组装式应用开发
本文将介绍什么是组装式应用开发,以及基于阿里云云巧实现组件化开发在政务行业的实践经验。
29478 18
基于云巧进行组装式应用开发
|
3月前
|
安全 IDE Java
从0到1探索淘宝短视频流的架构再设计和工程重构
随着视频流业务的发展,业务的复杂性越来越高,视频流老工程在架构设计、代码质量、工程能力等方面的问题也逐渐凸显。本次重构是一次对大型业务工程进行架构再设计和重构的探索,本文是对这次探索的一次梳理与总结。
|
3月前
|
数据可视化 Cloud Native API
低代码音视频工厂vPaaS平台问题之平台简化音视频开发如何解决
低代码音视频工厂vPaaS平台问题之平台简化音视频开发如何解决
29 0
|
存储 边缘计算 负载均衡
直播APP源码搭建:核心的服务器系统
这就是直播APP源码平台的服务器系统,拥有着管理用户、数据、直播流质量与带宽等优秀的能力,是直播APP源码平台正常运行提供服务和用户优质体验的重要支撑,服务器系统可以说是直播APP源码平台的重要核心。
直播APP源码搭建:核心的服务器系统
|
自然语言处理 UED
直播平台搭建开发知识:连接世界,多语言功能!
语言差异成为了限制用户体验与参与度的一道壁垒,为了打破这一障碍,直播平台纷纷引入多语言功能,以便更好地满足全球不同语言用户的需求。下面就进入我们今天的内容:直播平台搭建技术多语言功能!
直播平台搭建开发知识:连接世界,多语言功能!
|
新零售 人工智能 大数据
即时通讯丨即时聊天开发案例,即时通讯丨即时聊天系统开发功能逻辑/详细案例/逻辑项目/源码版
什么是零售?   零售在经济活动中是实现商品销售的最后环节,承担的主要功能就是满足消费者的需求,提供消费者需要的商品。产品在生产者手中或批发者手中,只是一种观念上的使用价值,只有进入消费领域才能更具备现实维度的使用价值,而零售就是将商品从流通领域进入消费领域的最后一个环节。
|
存储 机器学习/深度学习 Kubernetes
前端设计走查平台实践(后端篇)
设计师在进行走查的过程中,肉眼的比对偶尔会忽略一些细微部分,同时也会耗费设计师大量的精力,为了辅助设计同学能够更高效的进行设计走查,本文旨在通过设计走查平台在后端侧的实践总结下对于视觉稿还原程度比对的一些思路。
125 0
|
人工智能 开发框架 算法
【视频】低代码音视频工厂产品与 vPaaS 架构学习|学习笔记
快速学习【视频】低代码音视频工厂产品与 vPaaS 架构学习。
【视频】低代码音视频工厂产品与 vPaaS 架构学习|学习笔记
|
小程序 前端开发 IDE
百度小程序第三方平台开发,一整套流程
百度智能小程序第三方平台开发着力于解决百度生态体系内的小程序管理问题,一套模板,随处部署。能尽可能地减少系统服务商的开发成本,系统服务商只用开发一套小程序代码作为模板就可以快速批量的孵化出大量的商家小程序。
226 0
百度小程序第三方平台开发,一整套流程
下一篇
无影云桌面