0

我目前正在研究一個嚴重依賴外部組件的項目 - 主要是物理設備,如路由器,交換機,NVT及其與SNMP(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); 
    } 

} 
+0

我認爲你缺少意圖在域的邊界顯示命令。 – JefClaes

回答

0

問自己一個問題,確實我的服務包含與不自然地聚合或值對象所屬的域業務邏輯?如果是,那麼它是一個域服務,並且屬於該域。如果你想要做的是與外部系統進行通信(ping,ftp),那麼它可能是和應用程序服務甚至更遠,並在六角形體系結構的端口/適配器環中。請參閱http://alistair.cockburn.us/Hexagonal+architecture