跳到主要内容

Rime 整体设计

基本概念

  • 客户程序:需要输入文本的程序
  • 上下文 Context:每个客户程序里输入的内容是不同的,需要为客户维护输入法状态
  • 前端 Frontend:输入法在客户程序中的部分,自身只关注与操作系统交互,并且向服务转发
  • 后端 Backend:负责运算的 librime 本身
  • 服务 Service:运行起来的后端
  • 会话 Session:服务给每个客户建立一个输入法会话。会话就是把一系列按键消息变成文字的问答过程
  • 引擎 Engine:会话中为客户程序分配的资源
    • 引擎与会话直接交互
    • 引擎中包含上下文、输入方案 Schema 和按键 KeyEvent 等对象
    • 引擎对外实现封装,对内通过组件化的方式实现可扩展、可配置的目的
  • 组件 Component:完成特定功能的对象;为了达到可以在运行时动态配置的目的,采用抽象工厂模式
    • 如果只有一种实现方式,就写 C++ 类
    • 如果有多种实现方式,就写 Rime 类
      • 这个类中包含了一个它的工厂类,可以用于创建
      • 在运行时,先通过类别类(如 Processor)获得它的工厂类,然后通过工厂类的获得对象
    • 由引擎直接创建并调用的称为框架级组件,分 Processor, Segmentor, Translator 和 Filter,并且需要为每一类组件定义明确的接口。这些框架级组件的工作方式参见 Rime 框架级组件
    • 其他组件称为基础组件