2013-10-31 5 views
0

N 계층 웹 응용 프로그램 (UI/Service/DAL)을 개발 중입니다.N 계층 .Net 메시지 관리

특정 서비스를 호출 할 때 서비스 레이어 내부에서 사용자 알림이 필요한 이벤트가 발생하는 경우가 있습니다.

서비스 계층에서 UI 계층으로 메시지를 전달하는 방법은 무엇입니까?

이러한 메시지는 오류가 아니라 특정 이벤트에 대한 알림 일뿐입니다.

+0

서비스 호출이 완료된 후 또는 그 동안 이러한 이벤트가 발생합니까? 전자의 경우 반환 값에 메시지를 넣을 수 있습니다. 어떤 유형의 메시지를 표시 하시겠습니까? _ "X를 삭제 하시겠습니까?"와 같은 확인 메시지 인 경우 UI가 서비스를 해결해야합니다. 실제 예를 들어 설명하고 원하는 코드를 작성하십시오. – CodeCaster

+0

메시지 유형이 다소 어둡습니다. '첫 번째 기사를 만들었습니다. 축하합니다!' 왜 그런지 모르지만 내 서비스 호출의 반환 유형으로 BOOLEAN을 사용하고 있습니다 ...이 점에 대해서도 제발. –

+0

ViewModel을 '문자열 ResultMessage'와 함께 사용할 수 있습니다. UI 레이어 (예 : MVC 컨트롤러)는 리소스 파일을 사용하여 'result.Success' 부울을 문자열 메시지로 변환하고이를 viewmodel에 지정합니다. 이렇게하면 서비스를 변경하지 않고도 UI 언어를 변경할 수 있습니다. – CodeCaster

답변

1

의존성 주입으로 얻을 수 있습니다. 이 같은 일을

interface IUserNotificator{ 
    //message type can be Warning, Success, Error or Confirmation 
    void Notify(string message, MessageType messageType); 
} 

그리고 당신의 서비스 클래스 :

class Service{ 
    // construtor injection of IUserNotificator 

    void DoSomething(){ 
     // doing something 
     if(error){ 
      IUserNotificator.Notify("There is error", MessageType.Error); 
     } 
     else{ 
      IUserNotificator.Notify("Operation success", MessageType.Success); 
     } 
    } 
} 

이 방법, 당신은 UI 레벨에서 다른 구현을 가질 수 있습니다 당신은 일반적인 같은 IUserNotificator의 인터페이스를 말한다. 클래스가 하나 개의 작업에 여러 notificator에 장식을 사용하여 확장 할 수 있습니다 더 많은 유연성을

class MessageBoxUserNotificator : IUserNotificator{ 
    void Notify(string message, MessageType messageType){ 
     if(messageType == MessageType.Error){ 
      MessageBox.Show(message, "Notification", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
     else{ 
      MessageBox.Show(message, "Notification"); 
     } 
    } 
} 

: 당신은 C#에서의 WinForm 응용 프로그램을 가지고 있다고 말한다.

+0

이 경우 서비스와 UI 계층 간의 종속성을 주입하는 것이 안전합니까? –

+0

종속성 주입의 목적은 UI에서 서비스 계층으로 종속성을 주입하는 것입니다. 서비스 계층에서는 인터페이스와 관련된 코드를 수행하며 해당 인터페이스는 UI 계층에 구현됩니다. UI 계층 자체에서 서비스가 사용되므로 UI ​​계층에 종속성을 주입하는 것이 안전합니다. – Fendy