音频后端
音频后端是 Anni
中与实际文件系统接触的抽象层。
对 Anni
而言,需要获取的资源主要分为两类:音频资源和图片资源。其中图片资源作为音频资源的附加而存在,如封面等。
根据 Anni
约定,我们有一个近似唯一的 Catalog
。在很多情况下 Catalog
已经足以作为唯一标识,但实际情况下仍然会出现冲突。因此音频后端需要选取另一个更加独立的值作为专辑索引的主键。因此音频后端约定为每张专辑生成唯一的 UUID
作为 album_id
,充当专辑层面的索引。
由此,我们抽象出一个简单的文件系统,其通过 album_id
、disc_id
和 track_id
访问音频资源,通过 album_id
和可选的 disc_id
访问封面。
音频?后端
之所以命名为音频后端,是因为其核心交付内容还是音频,封面的优先度相对较低。
简单之外的价值
我们最常接触的文件系统是本地的文件系统,其访问延迟相对固定且较短。但对于 Anni
,其设计之初针对的便是 Google Drive
,即远程文件系统。
我们的根本目的是获取音频和封面。我们不一定需要一般文件系统的某些特性,比如随机可读性等,但最基本的是一定要满足的。音频后端的抽象使得我们将所有的请求最终归约到向外暴露的两个接口,从而大大简化了音频后端的实现难度。