1

많은 설명서에서 계층화 된 아키텍처에서 계층은 그 아래의 계층에서 제공하는 서비스 만 사용해야한다고 설명했습니다. 일반적으로 사용되는 층은 엔터프라이즈 응용 프로그램에는 다음과 같습니다계층화 된 아키텍처의 공통 서비스

  1. 프리젠 테이션
  2. 비즈니스
  3. 지속성이

이 (비즈니스 로직을 포함) 비즈니스 계층에서 서비스를 의미에만 액세스 서비스에 액세스해야 지속성 계층에 의해 제공됩니다.

메시지를 사용자에게 보내는 MessageService가 있습니다. 개체의 상태가 크게 변경 될 때마다 관련된 모든 사용자에게 변경 사항에 대한 알림을 보내야합니다. 즉, 변경을 식별 한 비즈니스 계층의 서비스는 MessageService를 사용하여 메시지를 보내야합니다. 그러나 messageService 자체는 비즈니스 계층에 있으므로, 동일한 계층의 다른 서비스는 액세스하지 않아야합니다.

그래서 코드 아키텍처를 위반하지 않고 MessageService를 어떻게 사용할 수 있습니까?

+0

Amit, '모든 관련 사용자'는 무엇을 의미합니까? –

+0

개체 상태의 변경에 관심이있는 모든 사용자를 의미합니다. 예를 들어, 그룹에 새로운 사용자가 추가되어 모든 그룹 구성원에게 MessageService를 사용하여이 사실을 통보해야합니다. –

+0

나중에 프레젠테이션을 통해 변경된 개체가 있습니까? 그렇다면 비즈니스 계층에서 변경 내용을 프레젠테이션 계층에 전달한 다음 지속성 작업이 완료 될 때 메시징 서비스를 호출하지 않는 것이 좋습니다. –

답변

0

프리젠 테이션 레이어 (또는 상위 레이어)는 UI 만 의미하는 것은 아니며 시스템에서 서비스를 사용하는 모든 것일 수 있습니다. 즉, 예약 된 작업이 최상위 레이어에있을 수 있습니다 (프레젠테이션 레이어로 이름을 지정하지 않을 수도 있음). 귀하의 경우에는 MessageService가 시스템의 다른 서비스를 사용하므로 최상위 레벨에 있어야한다고 생각합니다. 예를 들어 웹 서비스를 작성하는 경우 서비스 계층 위에 있어야하지만 다르게 이름을 지정하고자 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 여러 프리젠 테이션 레이어가있을 수 있으므로 프리젠 테이션 레이어의 일부가되어서는 안된다고 생각합니다. MessageService가 프리젠 테이션 레이어에 추가되면 복제해야하는데, 좋은 해결책은 아닌 것 같습니다. –

관련 문제