Team.Feeder.Host 2.0.1
Team.Feeder.Host
Team.Feeder.Host 是桌面宿主和 CLI 宿主共用的宿主后端包。它不负责具体设备协议,也不负责 UI;它负责的是“宿主如何把设备登记下来、如何持久化、如何在下次启动时恢复成运行时实例、如何把这些实例挂到 IFeederManager 上”。
适用场景
- 你正在写桌面宿主、CLI 宿主或后台宿主,不想自己重写设备注册表。
- 你要把“扫描到的设备”登记到本地配置里,并在重启后恢复。
- 你希望桌面端和 CLI 共用同一套宿主级文件结构和恢复逻辑。
包内提供的核心对象
| 类型 | 作用 |
|---|---|
AppPaths |
统一配置目录和原子写盘策略 |
FeederRegistryEntry |
注册表条目模型 |
FeederRegistryStore |
feeders.json 的读取、保存、查重、编号分配 |
IFeederDeviceFactory |
把注册表条目翻译成运行时 IFeeder |
FFFeederDeviceFactory |
当前默认的 FFFeeder 设备工厂 |
FeederHostService |
注册表与 IFeederManager 之间的桥接器 |
安装
dotnet add package Team.Feeder.Host
安装本包时会自动拉取 Team.Feeder.Abstractions、Team.Feeder.Discovery、Team.Feeder.FFFeeder 和 Team.Feeder.Service。
最小接线示例
using Team.Feeder.Host.Configuration;
using Team.Feeder.Host.Factories;
using Team.Feeder.Host.Management;
using Team.Feeder.Host.Registry;
using Team.Feeder.Service.Management;
var paths = new AppPaths(@"D:\TeamFeeder\config");
var store = new FeederRegistryStore(paths);
store.Load();
var manager = new FeederManager();
var factory = new FFFeederDeviceFactory();
var host = new FeederHostService(manager, store, factory);
host.RestoreFromRegistry();
Console.WriteLine($"Restored: {manager.Feeders.Count}");
这个示例说明了本包最核心的职责分工:
AppPaths决定文件放哪。FeederRegistryStore负责把feeders.json读到内存里。FFFeederDeviceFactory负责把持久化条目变成运行时设备对象。FeederHostService负责把这些对象注册进IFeederManager。
从发现结果新增设备
如果你先用 Team.Feeder.Discovery 扫描到了设备,通常会这样登记:
var entry = host.AddFromDiscovery(result, displayName: "上料机-01");
if (entry is not null)
{
Console.WriteLine($"Added feeder #{entry.Number}: {entry.DisplayName}");
}
AddFromDiscovery 会顺带完成:
- MAC 去重检查。
- 分配宿主可读编号。
- 写入注册表文件。
- 创建运行时
FFFeeder并注册到IFeederManager。
运行时重建与移除
RestoreFromRegistry()适合应用启动时全量恢复。ReloadRuntimeFromRegistryAsync()适合 import 之后整表重建。RemoveAsync(Guid)会尽量先断开设备,再移出运行时和注册表。UpdateMetadata(FeederRegistryEntry)适合只更新展示名、自动连接标记等宿主元数据。
为什么推荐放在 Host 层
如果把这些逻辑散落到桌面程序、CLI 和后台服务里,会很快出现:
- 每个宿主各自维护一份
feeders.json结构。 - 每个宿主各自写一套“注册表条目转运行时设备”的代码。
- 导入导出、重建运行时集合、编号分配这些逻辑变成重复实现。
Team.Feeder.Host 的目的就是把这层共性稳定下来。
与其他包的关系
- 设备实例最终来自
Team.Feeder.FFFeeder。 - 多设备集合和批量操作来自
Team.Feeder.Service。 - 扫描命中通常来自
Team.Feeder.Discovery。 - 如果宿主是 WPF 程序,界面层一般再叠加
Team.Feeder.Controls.Wpf。
边界说明
- 这里不包含任何 WPF/XAML 视图或 ViewModel。
- 这里不直接实现设备协议。
- 这里不替代
IFeederManager,而是把持久化注册表和管理器桥接起来。
如果你的问题属于“宿主如何保存和恢复设备”,优先看本包;如果你的问题属于“设备本身怎么通信”,则应该看 Team.Feeder.FFFeeder。
No packages depend on Team.Feeder.Host.
.NET 8.0
- Team.Feeder.Abstractions (>= 2.0.1)
- Team.Feeder.Discovery (>= 2.0.1)
- Team.Feeder.FFFeeder (>= 2.0.1)
- Team.Feeder.Service (>= 2.0.1)
| Version | Downloads | Last updated |
|---|---|---|
| 2.0.2 | 9 | 09/19/2026 |
| 2.0.1 | 5 | 09/14/2026 |
| 2.0.0 | 6 | 09/02/2026 |
| 2.0.0-alpha2 | 6 | 09/02/2026 |