Orisumi

.NET

.NET SDK 用 SQLite 保存草稿和待发送的版本

.NET 运行环境中的 Observer 共用 .NET SDK。SDK 是一个类库,代码在 src/Observers/Orisumi.Observer.Sdk/;它用 SQLite 保存草稿和待发送的版本,版本的状态、发送和确认遵循 Submission 的约定。

本地保存

每个程序实例使用自己的 SQLite 文件,路径由业务代码提供。

  1. 业务代码交来的版本先写入 SQLite。形成草稿、合并、冻结和通知结束,可以在同一个本地事务中完成,例如结束当前时段并开始新的时段。
  2. SQLite 还保存每个实体在本地最新的 VersionId。版本确认后移出发送队列,这个 VersionId 仍然保留,供之后的版本作为 previousVersionId 或引用。
  3. 后台任务按冻结的顺序读取待发送的版本,分批提交,并按 Submission · 确认 处理响应。
  4. 程序重启后,SDK 从 SQLite 恢复草稿、待发送的版本和待处理的被拒绝版本。

运行

网络中断时采集照常进行,下次运行或网络恢复后继续发送。SDK 统一处理后端地址、请求和响应,并向业务代码报告待发送的数量、已确认的数据和被拒绝的原因,见 Submission · 连接后端 和 发送状态。

业务代码的职责

  • 启动时提供程序实例和所需的 EntitySchema,由 SDK 先登记。
  • 按业务类型选择及时提交或结束后提交。
  • 把新形成或补全的实体和观测交给 SDK,并明确通知何时结束。
  • 处理 SDK 交来的被拒绝版本,见 Submission · 被拒绝的版本。

读取来源、判断应用是否切换、确定事实时间、识别内容身份和保留历史,都由业务代码完成;发送和重试由 SDK 完成。前台状态 Observer 使用 .NET SDK,见 Foreground State · 提交。

贡献者

页面历史