动机和原则
下面是控制自适应卡片格式演变的动机和原则。
格式后面的动机
2016 年初,Microsoft 的数个团队(包括 Outlook、Windows 和 Bot Framework)开始认识到,他们都需要某个特别类似的功能(“卡片”),于是开始独立设计自己的解决方案:
- Windows 有了自己的动态磁贴和通知格式
- Bot Framework 使用一组预定义的卡片模板,供开发人员在发送机器人消息时从中进行选择
- Outlook 使用自己的适合可操作邮件功能的 MessageCard 格式
同时,其他平台(例如 LINE、FaceBook Messenger、Slack 等)也在定义其自己的专用“卡片”格式。 因此,一些 Microsoft 员工决定共同定义一个符合以下条件的单一开放式卡片格式和一组 SDK:
- 方便在主机之间交换卡片
- 允许每个主机控制卡片的样式设置,确保视觉一致性
- 尽量方便主机应用程序通过易用的 SDK 轻松显示卡片
- 此外还要方便第三方使用,这样才能最终被业界广泛采用
控制自适应卡片的原则
自适应卡片是一种简单的声明性卡片格式
- 它不是用来替代 HTML 或 XAML,也不充当其备用选项
- 自适应卡片没有“代码隐藏”
- 卡片作者不能在有效负载中嵌入自定义代码/任意代码,因此自适应卡片主机不需运行第三方代码
- 只需使用声明性标记即可实现动态性和交互性
- 这样可确保不用太费劲即可为新平台构建自适应卡片 SDK
自适应卡片格式不能强制要求使用任何特定的基础技术
- 自适应卡片格式不依赖于 JavaScript、C#、Python 或任何其他语言
- 同样,它不依赖于 HTML、XAML 或任何其他图形/UI 框架
- 这样,只要存在呈现器,自适应卡片就可以在任何平台上进行本机呈现
自适应卡片格式是一种共享属性
- 此格式及其 SDK 都是开源的,由社区推动其发展
- 因此,此格式不由任何单一团队拥有,其发展不由任何单一团队推动
自适应卡片格式不是“专为 Microsoft”而设计
- 相反,我们在设计它时已考虑到要让它满足各种应用程序和用例的需求
自适应卡片工作组负责控制格式的演变
- 此工作组的成员是许多对格式的成功做出了很大贡献的 Microsoft 员工
- 工作组每周召开一次会议(目前的会议时间为周一),审核功能建议、讨论和会审未决问题,并会对 vNext 工作项目的总体进展进行跟踪
- 工作组会根据社区(包括 Microsoft 内部团队)的普遍反馈来决定格式如何改进
- 任何人都可以在 GitHub 中提出问题,以这种方式参与工作组的工作(见下)
- 植根于自适应卡片框架的实际使用的问题/功能请求(不管你是以主机用户身份还是以卡片作者身份提出此类请求)将会对格式的未来造成最深远的影响
- 若要获得工作组的批准,建议的新功能要符合以下条件:
- 必须满足实际使用需求
- 必须有一个功能规范
- 批准的新功能会添加到积压工作中,考虑用于 vNext
- 用于确定新功能优先级的标准包括:此功能支持的方案的广泛性、其复杂性/可维护性,等等
- 疑则不用! 与其始终忍受某个错误,不如晚一点推出设计完善的功能。
- 所有新功能都是在所有受支持的 SDK 中实现的
- 所有新功能都会进行记录,并与在 Samples 文件夹中发布的测试卡片相关联
- 新版格式和 SDK 都会经历一个 Beta 阶段
- 自适应卡片架构和 SDK 版本的发布计划取决于质量而不是日期
互操作性
- 遵循记录的格式(例如,不使用任何特定于主机的扩展)创作的卡片可以在任何支持自适应卡片的主机中正确呈现
- 此原则的唯一例外是:
- 某些主机可能不允许交互操作,因此不呈现输入和操作
- 是否执行 Action.Submit 操作取决于主机,并非所有主机都必然能够正确处理所有 Action.Submit 有效负载。 另外,某些主机可能根本就不支持 Action.Submit
格式必须能够扩展
- 主机应该能够自由地添加对自定义元素或自定义操作的支持,这超出了格式的功能范畴
- 这对于操作来说尤其重要,因为不同的主机不一定支持同一组操作
- 是否进行此类添加操作取决于主机
- 它们不是根据实际使用情况添加到自适应卡片规范中的
- 因此,使用它们的有效负载会与主流的自适应卡片格式不兼容
- 不过,可以将它们提供给工作组,作为适合未来版本格式的新功能进行提交,详见第 5 条原则中的说明
卡片作者提供内容,主机应用呈现外观
- 主机应用强制实施其样式设置,因此卡片的外观给人的感觉就像应用体验的自然延伸
- 卡片作者仍然可以指定样式设置,但只能通过颜色、大小等方面的语义表达式来进行。
将会为最常用的开发人员平台提供 SDK
- 有了 SDK,就可以方便地在任何主机中呈现自适应卡片有效负载
- 这样可确保尽量降低第三方开发人员和 Microsoft 团队的进入门槛