知识卡片
序列化器插件把类型知识挪出核心存储层
内容
要让存储层对新数据类型的增加保持开放而不改动核心代码,一种做法是把某种类型数据如何转成二进制、如何从二进制还原回内存对象这件事,交给一个运行时可加载的插件(序列化器)去做,核心存储层只管理不透明的二进制块,完全不需要理解具体类型的内部结构。这样,支持一种新数据格式只需新增一个序列化器插件加一个负责获取该格式数据的资源进程,不需要触碰存储层和访问协议的任何代码,扩展点和核心系统被彻底解耦。
参考来源
- 位置:《架构之美》第12章《当集市开始构建教堂》12.3.3节《Akonadi的架构》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0247.xhtml)
- 结论依据:原文明确"通过2007年4月的会议,它明确了对访问程序库进行扩展以支持新类型的方法,也就是被称为序列化器(serializer)的插件……能够将某种特定格式的数据……转化为二进制表示,以便以BLOB类型字段存储在服务器上……它与添加新的存储层后台支持是正交的"。
- 原始内容:这是运行时可载入的程序库,它能够将某种特定格式的数据(以mime类型标识)转化为二进制表示,以便以BLOB类型字段存储在服务器上,同时也能将二进制表示的数据转成特定格式的数据……它与添加新的存储层后台支持是正交的。