动机和原则

下面是控制自适应卡片格式演变的动机和原则。

格式后面的动机

2016 年初,Microsoft 的数个团队(包括 Outlook、Windows 和 Bot Framework)开始认识到,他们都需要某个特别类似的功能(“卡片”),于是开始独立设计自己的解决方案:

  • Windows 有了自己的动态磁贴和通知格式
  • Bot Framework 使用一组预定义的卡片模板,供开发人员在发送机器人消息时从中进行选择
  • Outlook 使用自己的适合可操作邮件功能的 MessageCard 格式

同时,其他平台(例如 LINE、FaceBook Messenger、Slack 等)也在定义其自己的专用“卡片”格式。 因此,一些 Microsoft 员工决定共同定义一个符合以下条件的单一开放式卡片格式和一组 SDK:

  • 方便在主机之间交换卡片
  • 允许每个主机控制卡片的样式设置,确保视觉一致性
  • 尽量方便主机应用程序通过易用的 SDK 轻松显示卡片
  • 此外还要方便第三方使用,这样才能最终被业界广泛采用

控制自适应卡片的原则

  1. 自适应卡片是一种简单的声明性卡片格式

    1. 它不是用来替代 HTML 或 XAML,也不充当其备用选项
    2. 自适应卡片没有“代码隐藏”
      1. 卡片作者不能在有效负载中嵌入自定义代码/任意代码,因此自适应卡片主机不需运行第三方代码
      2. 只需使用声明性标记即可实现动态性和交互性
    3. 这样可确保不用太费劲即可为新平台构建自适应卡片 SDK
  2. 自适应卡片格式不能强制要求使用任何特定的基础技术

    1. 自适应卡片格式不依赖于 JavaScript、C#、Python 或任何其他语言
    2. 同样,它不依赖于 HTML、XAML 或任何其他图形/UI 框架
    3. 这样,只要存在呈现器,自适应卡片就可以在任何平台上进行本机呈现
  3. 自适应卡片格式是一种共享属性

    1. 此格式及其 SDK 都是开源的,由社区推动其发展
    2. 因此,此格式不由任何单一团队拥有,其发展不由任何单一团队推动
  4. 自适应卡片格式不是“专为 Microsoft”而设计

    1. 相反,我们在设计它时已考虑到要让它满足各种应用程序和用例的需求
  5. 自适应卡片工作组负责控制格式的演变

    1. 此工作组的成员是许多对格式的成功做出了很大贡献的 Microsoft 员工
    2. 工作组每周召开一次会议(目前的会议时间为周一),审核功能建议、讨论和会审未决问题,并会对 vNext 工作项目的总体进展进行跟踪
    3. 工作组会根据社区(包括 Microsoft 内部团队)的普遍反馈来决定格式如何改进
      1. 任何人都可以在 GitHub 中提出问题,以这种方式参与工作组的工作(见下)
      2. 植根于自适应卡片框架的实际使用的问题/功能请求(不管你是以主机用户身份还是以卡片作者身份提出此类请求)将会对格式的未来造成最深远的影响
    4. 若要获得工作组的批准,建议的新功能要符合以下条件:
      1. 必须满足实际使用需求
      2. 必须有一个功能规范
    5. 批准的新功能会添加到积压工作中,考虑用于 vNext
      1. 用于确定新功能优先级的标准包括:此功能支持的方案的广泛性、其复杂性/可维护性,等等
      2. 疑则不用! 与其始终忍受某个错误,不如晚一点推出设计完善的功能。
    6. 所有新功能都是在所有受支持的 SDK 中实现的
    7. 所有新功能都会进行记录,并与在 Samples 文件夹中发布的测试卡片相关联
    8. 新版格式和 SDK 都会经历一个 Beta 阶段
    9. 自适应卡片架构和 SDK 版本的发布计划取决于质量而不是日期
  6. 互操作性

    1. 遵循记录的格式(例如,不使用任何特定于主机的扩展)创作的卡片可以在任何支持自适应卡片的主机中正确呈现
    2. 此原则的唯一例外是:
      1. 某些主机可能不允许交互操作,因此不呈现输入和操作
      2. 是否执行 Action.Submit 操作取决于主机,并非所有主机都必然能够正确处理所有 Action.Submit 有效负载。 另外,某些主机可能根本就不支持 Action.Submit
  7. 格式必须能够扩展

    1. 主机应该能够自由地添加对自定义元素或自定义操作的支持,这超出了格式的功能范畴
    2. 这对于操作来说尤其重要,因为不同的主机不一定支持同一组操作
    3. 是否进行此类添加操作取决于主机
      1. 它们不是根据实际使用情况添加到自适应卡片规范中的
      2. 因此,使用它们的有效负载会与主流的自适应卡片格式不兼容
      3. 不过,可以将它们提供给工作组,作为适合未来版本格式的新功能进行提交,详见第 5 条原则中的说明
  8. 卡片作者提供内容,主机应用呈现外观

    1. 主机应用强制实施其样式设置,因此卡片的外观给人的感觉就像应用体验的自然延伸
    2. 卡片作者仍然可以指定样式设置,但只能通过颜色、大小等方面的语义表达式来进行。
  9. 将会为最常用的开发人员平台提供 SDK

    1. 有了 SDK,就可以方便地在任何主机中呈现自适应卡片有效负载
    2. 这样可确保尽量降低第三方开发人员和 Microsoft 团队的进入门槛