.NET
.NET SDK 用 SQLite 保存草稿和待发送的版本
.NET 运行环境中的 Observer 共用 .NET SDK。SDK 是一个类库,代码在 src/Observers/Orisumi.Observer.Sdk/;它用 SQLite 保存草稿和待发送的版本,版本的状态、发送和确认遵循 Submission 的约定。
本地保存
每个程序实例使用自己的 SQLite 文件,路径由业务代码提供。
- 业务代码交来的版本先写入 SQLite。形成草稿、合并、冻结和通知结束,可以在同一个本地事务中完成,例如结束当前时段并开始新的时段。
- SQLite 还保存每个实体在本地最新的 VersionId。版本确认后移出发送队列,这个 VersionId 仍然保留,供之后的版本作为
previousVersionId或引用。 - 后台任务按冻结的顺序读取待发送的版本,分批提交,并按 Submission · 确认 处理响应。
- 程序重启后,SDK 从 SQLite 恢复草稿、待发送的版本和待处理的被拒绝版本。
运行
网络中断时采集照常进行,下次运行或网络恢复后继续发送。SDK 统一处理后端地址、请求和响应,并向业务代码报告待发送的数量、已确认的数据和被拒绝的原因,见 Submission · 连接后端 和 发送状态。
业务代码的职责
- 启动时提供程序实例和所需的 EntitySchema,由 SDK 先登记。
- 按业务类型选择及时提交或结束后提交。
- 把新形成或补全的实体和观测交给 SDK,并明确通知何时结束。
- 处理 SDK 交来的被拒绝版本,见 Submission · 被拒绝的版本。
读取来源、判断应用是否切换、确定事实时间、识别内容身份和保留历史,都由业务代码完成;发送和重试由 SDK 完成。前台状态 Observer 使用 .NET SDK,见 Foreground State · 提交。