2017-11-23 3 views
0

SignalR과 함께 ASP .NET MVC를 사용하는 실시간 알림 시스템에서 작업하고 있습니다.ASP .NET MVC 및 SignalR 푸시 알림 클린 아키텍처

enter image description here

이 내 모든 응용 방법을 이미 구축하고 노력하고 나는 현재 SignalR을 사용하여 알림 시스템을 추가 해요됩니다

내 응용 프로그램은 다음과 같이 세 개의 레이어로 구성되어 있습니다.

내가 직면 한 문제는 통지 할 사용자 배열, 비어있을 수있는 배열 (해당 작업에 대한 알림이 해제 될 수 있기 때문에)을 반환하기 위해 알림을 보내는 것을 의미 할 수있는 모든 메서드를 수정해야한다는 것입니다.).

SignalR 허브가 MVC 계층에 설치되어 있으므로 BAL (Business Logic Layer)에서 호출 할 수 없습니다. SQL Dependencies를 사용하여 깨끗한 방법으로 문제를 해결할 수 있지만 옵션이 아닙니다.

예는 (의사) 다음과 같습니다

AddComent(Comment){ 
NotificationHub notifHub; 
int error = BALComments.AddComment(Comment,UserArray); 
notifHub.notify(UserArray); 
return View(); 
} 

문제는 방법을 수정하는 것입니다

Controler.cs (통지없이)

AddComent(Comment){ 
int error = BALComments.AddComment(Comment); 
return View(); 
} 

Controler.cs (notificacions 포함) 명시 적으로 모든 메소드를 변경하지 않고 비즈니스 로직 계층의 모든 "주목할만한"메소드를 사용하여 선택적 사용자 배열 목록을 반환합니다.

답변

0

아마도 BAL과 MVC 사이에는 일종의 의사 소통이 필요합니다. 아마도 관찰자 패턴 일 것입니다. 어떤 것을 감지 할 수있는 BAL 클래스가 변경되면 이벤트를 관찰하는 모든 항목에 '변경'을 적용해야합니다. 기본적으로 BAL에서 이벤트 및 위임을 만들고 MVC 계층에서 이러한 이벤트를 연결하여 signal/r에 전달합니다.