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); 
    } 

} 
+0

나는 당신이 당신의 도메인의 경계에서 의도를 드러내는 명령을 놓치고 있다고 생각합니다. – JefClaes

답변

0

가 자신에게 질문을 내 서비스가 자연적으로 집계 또는 값 객체에 속하지 않는 도메인에 관련된 비즈니스 로직을 포함하지 ? 그럴 경우 도메인 서비스이고 도메인에 속합니다. 당신이하려고하는 것이 외부 시스템 (ping, ftp)과 의사 소통하는 것이라면 아마 육각형 구조의 포트/어댑터 고리와 응용 서비스 또는 더 멀리 그리고 밖으로 나올 것입니다. http://alistair.cockburn.us/Hexagonal+architecture을 참조하십시오.