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

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

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

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

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

相关文章
|
7月前
|
敏捷开发 监控 Java
服务设计思考:平台化
服务设计思考:平台化
60 0
|
自然语言处理 安全 前端开发
基于云巧进行组装式应用开发
本文将介绍什么是组装式应用开发,以及基于阿里云云巧实现组件化开发在政务行业的实践经验。
29521 18
基于云巧进行组装式应用开发
|
JSON 前端开发 JavaScript
开源表单方案 Formily 的核心设计思路
Formily 是一个数据+协议驱动的表单解决方案,它站在Reactive响应式编程巨人的肩膀上,构建出了从基础表单到低代码领域的高性能通用基础能力,同时其配套的跨框架+跨终端组件生态体系,也能让用户更高效的开发日常业务表单,尽可能的减少了重复冗余的逻辑实现。本篇内容来自白玄在第十六届D2前端技术论坛的分享,将为你介绍如何在高复杂业务场景下提高我们的表单性能与表单开发效率。
4690 1
开源表单方案 Formily 的核心设计思路
|
中间件 API 开发者
组装式架构重构未来平台研发模式
企业数字化转型如火如荼的进行中,快速响应市场需求变化,低成本进行数字化改造时每个企业追求的目标。而组装式架构可以完美解决B段客户对于软件平台的高质量要求。
组装式架构重构未来平台研发模式
|
数据采集 机器学习/深度学习 监控
mPaaS 核心组件:支付宝如何为移动端产品构建舆情分析体系?
移动舆情分析 MMA(Mobile Media Analysis)通过采集应用内、应用市场反馈及外部媒体等内容,经过机器学习、自然语言处理等大数据技术,为企业的产品进化、运营、营销、公关提供实时、有效的舆情监控-分析-预警-处理的闭环能力,帮助企业发现与跟踪产品问题,收集产品建议,危机公关,辅助市场调研、产品营销与竞争分析。
2705 0
|
4月前
|
数据可视化 Cloud Native API
低代码音视频工厂vPaaS平台问题之平台简化音视频开发如何解决
低代码音视频工厂vPaaS平台问题之平台简化音视频开发如何解决
34 0
|
存储 网络协议 调度
淘宝移动端统一网络库的架构演进和弱网优化技术实践
本文将介绍淘宝 APP 统一网络库演进的过程,讲述如何围绕体验持续构建南北向从监测到加速一体化的终端网络架构,通过构建 NPM 弱网诊断感知能力,落地原生多通道技术/多协议择优调度手段,贴合厂商附能网络请求加速,实现去 SPDY 及规模化 IPv6/H3 协议簇的平滑过渡,为用户提供弱网更好、好网更优的 APP 加载浏览体验,支撑业务创造更多的可能性。
374 0
|
小程序 前端开发 Java
【平台开发】技术整合思考(四)前后端不分离
【平台开发】技术整合思考(四)前后端不分离
239 0
|
存储 小程序 前端开发
《智能前端技术与实践》——第 2 章 前端开发基础 ——2.7 微信小程序开发——2.7.4 逻辑层文件
《智能前端技术与实践》——第 2 章 前端开发基础 ——2.7 微信小程序开发——2.7.4 逻辑层文件
119 0
|
存储 机器学习/深度学习 Kubernetes
前端设计走查平台实践(后端篇)
设计师在进行走查的过程中,肉眼的比对偶尔会忽略一些细微部分,同时也会耗费设计师大量的精力,为了辅助设计同学能够更高效的进行设计走查,本文旨在通过设计走查平台在后端侧的实践总结下对于视觉稿还原程度比对的一些思路。
126 0