Broker IPC 方案对比

Named Pipes  vs  COM Interop  |  TapProject V3.0 MVP 架构评估

评估维度 Named Pipes 推荐 COM Interop 备选
部署复杂度 低 — 只需管道名约定,无需注册组件 高 — 需 RegAsm / regsvr32 注册 COM 组件,配置 DCOM 权限
强类型体验 弱 — 需手动序列化/反序列化(JSON / Protobuf) 强 — .NET 自动生成 RCW,接口调用如同本地对象
跨机器扩展 天然支持 — 可平滑切换到 TCP / gRPC 需 DCOM,防火墙与网络配置复杂
权限要求 低 — 同机管道访问即可,无需特殊权限 需 DCOM 权限配置,企业安全策略常受限
未来 .NET 兼容性 完全兼容 .NET 6 / 7 / 8+ Microsoft 已逐步弱化 COM 投入,.NET Core 支持有限
性能 JSON 有序列化开销,但管道本身高效;可换 Protobuf 优化 二进制 marshaling 开销小,但有额外 proxy/stub 层
调试 / 运维 管道状态易排查,日志直观 COM 注册问题、权限问题是常见故障源
与现有代码集成 需编写连接管理、帧解析逻辑 接口定义后客户端代码简洁,类似本地调用

关键考量因素

COM Interop 适合的场景

✅ 同机通信 + 强类型需求

Broker 与客户端永远在同一台机器,团队熟悉 COM 部署,希望获得透明代理般的调用体验。

✅ 已有 COM 组件资产

项目中已有成熟的 COM 接口定义或第三方 COM 组件,可直接复用。

Named Pipes 更适合的理由

🚀 部署简单

无需注册 COM 组件,管道名约定即可通信,运维成本极低。

🔗 跨机器扩展

未来若 Broker 需部署到远程机器,Named Pipes 可平滑切换到 TCP/gRPC,COM Interop 则需大幅改造。

🛡️ 企业环境友好

DCOM 权限在企业安全策略下经常受限,Named Pipes 无此问题。

📦 现代 .NET 兼容

项目虽当前为 .NET Framework 4.7.2,但 COM Interop 在 .NET 5+ 上支持逐步弱化,Named Pipes 无此顾虑。

结论与建议

保持 Named Pipes 方案。

对于 Broker 跨进程通信场景,Named Pipes 在部署简易性、未来扩展性和平台兼容性上均优于 COM Interop。

当前 MVP 架构中的 IPC 定位

在已完成的 MVP 实施中,跨进程通信分为两层:

层级 机制 状态
仲裁层(arb.db) SQLite WAL 模式 + BEGIN IMMEDIATE 事务 — 进程间仲裁完全依赖数据库事务,无需 IPC ✅ 已实现
Broker 命令通道 Named Pipes 帧协议(4B 长度 + JSON)— 用于客户端向 DeviceBroker.exe 下发设备操作 ⏳ 计划中(P2+)

注:当前 MVP 仅实现了 Local 模式(进程内直驱)和 DbLeaseStore(SQLite 仲裁)。Broker 模式的命令通道属于后续迭代范围,此时选择 Named Pipes 作为 IPC 方案仍有充分调整空间。