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

简介: “组装式应用”是连续两年入选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组件之间都通过协约来进行调用,一个组件不会直接去查另一个组件的数据,也不会直接去调用另外一个组件的内部方法,确保组件自治。在编排上,设计了自动化编排的方式,即根据调用关系,自动将组件打包集成。

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

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

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

相关文章
|
自然语言处理 安全 前端开发
基于云巧进行组装式应用开发
本文将介绍什么是组装式应用开发,以及基于阿里云云巧实现组件化开发在政务行业的实践经验。
29466 18
基于云巧进行组装式应用开发
|
3月前
|
数据可视化 Cloud Native API
低代码音视频工厂vPaaS平台问题之平台简化音视频开发如何解决
低代码音视频工厂vPaaS平台问题之平台简化音视频开发如何解决
29 0
|
6月前
|
XML Java API
一款直击痛点的优秀http框架,让我超高效完成了第三方接口的对接
一款直击痛点的优秀http框架,让我超高效完成了第三方接口的对接
95 0
|
存储 网络协议 调度
淘宝移动端统一网络库的架构演进和弱网优化技术实践
本文将介绍淘宝 APP 统一网络库演进的过程,讲述如何围绕体验持续构建南北向从监测到加速一体化的终端网络架构,通过构建 NPM 弱网诊断感知能力,落地原生多通道技术/多协议择优调度手段,贴合厂商附能网络请求加速,实现去 SPDY 及规模化 IPv6/H3 协议簇的平滑过渡,为用户提供弱网更好、好网更优的 APP 加载浏览体验,支撑业务创造更多的可能性。
357 0
|
API 开发工具 数据库
【国产开发神器】零代码搭建API接口开放/管理平台——YesApi
YesApi 接口大师,是一款国产企业级API接口管理平台,可以零代码、快速搭建API接口开发平台、接口开放平台、接口管理平台。基于PhalApi Pro 接口开发框架专业版软件,通过低代码可视化配置方式帮助企业快速搭建接口开放平台和管理API接口。 所以说:YesApi接口大师 = 接口低代码开发 + 接口零代码开放 + 接口零代码管理 + 接口计费
|
新零售 人工智能 大数据
即时通讯丨即时聊天开发案例,即时通讯丨即时聊天系统开发功能逻辑/详细案例/逻辑项目/源码版
什么是零售?   零售在经济活动中是实现商品销售的最后环节,承担的主要功能就是满足消费者的需求,提供消费者需要的商品。产品在生产者手中或批发者手中,只是一种观念上的使用价值,只有进入消费领域才能更具备现实维度的使用价值,而零售就是将商品从流通领域进入消费领域的最后一个环节。
|
存储 小程序 前端开发
《智能前端技术与实践》——第 2 章 前端开发基础 ——2.7 微信小程序开发——2.7.4 逻辑层文件
《智能前端技术与实践》——第 2 章 前端开发基础 ——2.7 微信小程序开发——2.7.4 逻辑层文件
114 0
|
存储 机器学习/深度学习 Kubernetes
前端设计走查平台实践(后端篇)
设计师在进行走查的过程中,肉眼的比对偶尔会忽略一些细微部分,同时也会耗费设计师大量的精力,为了辅助设计同学能够更高效的进行设计走查,本文旨在通过设计走查平台在后端侧的实践总结下对于视觉稿还原程度比对的一些思路。
121 0
|
消息中间件 API Nacos
【组件开发实践】云巧流程组件对接实践
通过简单的业务场景进行举例,介绍如果通过云巧流程组件的API进行集成对接
31753 1
|
移动开发 JavaScript 前端开发
多页面应用、移动端混合开发H5通信解决方案实践
移动端混合开发,APP中90%的内容均为内嵌H5,由于种种原因,我在客户端内无法使用单页面路由跳转,只能新开窗口跳转页面,于是被迫形成了“多页面”的情形。(即使是连贯的页面)
下一篇
无影云桌面