N 계층 웹 응용 프로그램 (UI/Service/DAL)을 개발 중입니다.N 계층 .Net 메시지 관리
특정 서비스를 호출 할 때 서비스 레이어 내부에서 사용자 알림이 필요한 이벤트가 발생하는 경우가 있습니다.
서비스 계층에서 UI 계층으로 메시지를 전달하는 방법은 무엇입니까?
이러한 메시지는 오류가 아니라 특정 이벤트에 대한 알림 일뿐입니다.
N 계층 웹 응용 프로그램 (UI/Service/DAL)을 개발 중입니다.N 계층 .Net 메시지 관리
특정 서비스를 호출 할 때 서비스 레이어 내부에서 사용자 알림이 필요한 이벤트가 발생하는 경우가 있습니다.
서비스 계층에서 UI 계층으로 메시지를 전달하는 방법은 무엇입니까?
이러한 메시지는 오류가 아니라 특정 이벤트에 대한 알림 일뿐입니다.
의존성 주입으로 얻을 수 있습니다. 이 같은 일을
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 응용 프로그램을 가지고 있다고 말한다.
이 경우 서비스와 UI 계층 간의 종속성을 주입하는 것이 안전합니까? –
종속성 주입의 목적은 UI에서 서비스 계층으로 종속성을 주입하는 것입니다. 서비스 계층에서는 인터페이스와 관련된 코드를 수행하며 해당 인터페이스는 UI 계층에 구현됩니다. UI 계층 자체에서 서비스가 사용되므로 UI 계층에 종속성을 주입하는 것이 안전합니다. – Fendy
서비스 호출이 완료된 후 또는 그 동안 이러한 이벤트가 발생합니까? 전자의 경우 반환 값에 메시지를 넣을 수 있습니다. 어떤 유형의 메시지를 표시 하시겠습니까? _ "X를 삭제 하시겠습니까?"와 같은 확인 메시지 인 경우 UI가 서비스를 해결해야합니다. 실제 예를 들어 설명하고 원하는 코드를 작성하십시오. – CodeCaster
메시지 유형이 다소 어둡습니다. '첫 번째 기사를 만들었습니다. 축하합니다!' 왜 그런지 모르지만 내 서비스 호출의 반환 유형으로 BOOLEAN을 사용하고 있습니다 ...이 점에 대해서도 제발. –
ViewModel을 '문자열 ResultMessage'와 함께 사용할 수 있습니다. UI 레이어 (예 : MVC 컨트롤러)는 리소스 파일을 사용하여 'result.Success' 부울을 문자열 메시지로 변환하고이를 viewmodel에 지정합니다. 이렇게하면 서비스를 변경하지 않고도 UI 언어를 변경할 수 있습니다. – CodeCaster