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 会顺带完成:

  1. MAC 去重检查。
  2. 分配宿主可读编号。
  3. 写入注册表文件。
  4. 创建运行时 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.

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