Fuchsia:万物皆实体

Fuchsia简述的更多文章:
Googel的Fuchsia OS到底是什么
Fuchsia的APP变革

之前在文章《Fuchsia的APP变革》中介绍过,Fuchisa的交互单位是story,而story是由一系列来自不同APP的module组合而成的。这些不同的module之间自然的就会涉及到通信问题。所以实体(entities)就应用而生了。Entity就如同胶水一般将各个module粘合在一次,从而构成story来供用户使用。同时这些从数字世界中抽象出的一个个实体,将作为数据单元被Google Assist读取使用,从而让Assistant获得理解用户使用上下文的能力。

Entity概述

Fuchsia的官方文档对Entity的描述如下:

1
2
3
An entity is an identifiable person, place, thing, event, or concept
which is represented within the Fuchsia platform as a structured data
object which can be referenced, retrieved, presented, manipulated, or shared.

大体可以理解为,实体就是在Fuchsia平台上可操作、在不同进程间可分享的一种数据结构,这个数据对象可用来表示一个实际的物体信息,也可以用来表示一个抽象的概念相信。
根据文档的描述,实体的表示使用JSON格式。JSON格式不仅可读性很高,而且在不同变成语言中的解析方式都相同,这为Fuchsia的多语言编程打下了接触。同时,用来作为跨设备使用的支撑的Ledger被设计为用来处理JSON对象,这将有利于Ledger在设备之间更好的分享和追踪Entity对象。
举例来讲,一个典型的Entity使用场景是复制和粘贴,可以在Story一个module复制entity,然后粘贴到另一个entity中,例如复制联系人、待办事项、或者从一个播放器复制一个歌曲列表到另一个播放器等。然后,分享的实体中的信息可以被APP或者Google assistant读取,利用其中的关键信息做出对该实体的操作或者是根据这些信息可以更进一步的推荐其他信息,推荐的其他信息又是另外的一个个实体。甚至,根据官方文档的介绍,Fuchisa 不仅用在APP中,在浏览器中也可以根据网页的内容生成对应的实体,该实体同样可以在其他APP中被处理。

Entity特征

  • types: 指示实体的类别范围,使用schema的方式进行表示
  • content: 实体中包含的数据,使用二进制或者是指定类型的数据结构表示
  • provider: 实体的提供者
  • reference: 实体的token,可使用它来找到并使用该实体。

    Entity分为两类

  • 瞬时实体:在运行时作为传输对象存在,例如
    • 复制到剪切板上的一段文字
    • 从文本内容中抽取出来的一个电话号码
    • 没有被保存的截图
  • 永久实体:可通过Provider获取到的实体,例如
    • 邮件会话
    • 在相册中的照片
    • 联系人卡片
    • 日历中的事件提醒
robot wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!