我目前正在从事一个严重依赖外部组件的项目——主要是物理设备,如路由器、交换机、NVT 及其各自的通信协议(SNMP、Ping、RTSP ......)。我需要监视这些设备(它们是否在线?它们的状态如何?)并向它们发送操作消息。(启动该任务,启用此端口...)
不出所料,这是我真正需要的唯一域实体:
public class Device {
public long IpAddress { get; set; }
...
}
但我确实有很多服务。就像 ISnmpService、IPingService、IFtpService,... 现在我问自己:DDD 在这里如何帮助我?我必须在哪一层实现这些服务?这些甚至是“真正的”域服务吗?它们属于基础设施层还是在域层中实现服务是否可以?
以及这样的实现如何解决这样的问题:
public HorribleController : ApiController {
public HorribleController(
ISnmpService snmpService,
IRtspService rtspService,
IPingService pingService,
IOnVifService onvifService)
{
...
}
public AddDevice(Device device) {
snmpService.Add(device);
rtspService.Add(device);
rtspService.Connect(device);
pingService.Watch(device);
onvifService.Add(device);
}
}