0

我目前正在从事一个严重依赖外部组件的项目——主要是物理设备,如路由器、交换机、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);
    }

}
4

1 回答 1

1

问自己一个问题,我的服务是否包含与自然不属于聚合或值对象的域相关的业务逻辑?如果是,则它是域服务并且属于域。如果您尝试做的是与外部系统(ping、ftp)通信,那么它可能是和应用程序服务,甚至更远,在六边形架构的端口/适配器环中。请参阅http://alistair.cockburn.us/Hexagonal+architecture

于 2014-03-08T16:41:51.187 回答