2012-08-27 8 views

답변

4

이벤트 구독자 관점에서 볼 때 EventAggregator에서 볼 때 응용 프로그램에서 발생하는 특정 이벤트에 대한 알림을 얻는 것이 좋습니다. 이렇게하면 수동으로, 즉 다른 사람이 일정을 게시 할 때마다 작업을 수행합니다. 애플리케이션에서 발생하는 문제에 대응해야하는 경우 EventAggregator을 사용하고 싶습니다.

한편 공유 서비스를 사용하면 작업을 적극적으로 수행하고 데이터를 요청할 수 있습니다. 예를 들어 GetData() 방법을 제공하는 공유 서비스를 사용할 수 있으며이 서비스를 해결하고 언제든지 데이터를 요청할 수 있습니다.

1

다른 사용법은 어떻게되는지 모르지만 제 앱의 모듈성을 위해 많이 사용했습니다. 예를 들어 보안상의 이유로 Silverlight 응용 프로그램에서는 OpenFileDialogStream을 파일로 반환 할 수 있습니다. 그래서 나는 IOpenFileService 서비스를 만들고 생성자에 파일 스트림을 열어야하는 ViewModel에 연결했습니다. 다양한 로거 및 심지어 데이터베이스 레이어에도 적합합니다.

서비스의 또 다른 유용한 부분은 다른 모듈과 독립적으로 빌드하고 테스트 할 수 있다는 것입니다. MEF/Unity는 준비 객체를 생성자 내부에 삽입하거나 다른 객체의 속성을 삽입하는 데 필요한 모든 접착제를 제공합니다.

서비스 클래스 자체가 MEF/Unity 매직을 사용하고 다른 서비스를 스스로 삽입 할 수 있다는 것을 잊지 마십시오.

EventAgregator의 경우 : 사용자 코드에 다양한 Event 정의가 매우 빠르게 오버로드 될 수 있습니다. 예 : Resize 이벤트. Silverlight 앱 초기화시 PRISM Region 컨트롤은 느린 프로세스이므로 RegionsVisualTree에 매우 늦게 붙었으며 어쨌든 초기 Resize 이벤트가 누락되었습니다. (EventAgregator을 통해) Region에 대한 내부 Resize 이벤트를 제공 한 다음 각 Region 컨트롤이 컨트롤 경계로 Region 컨트롤의 크기를 조절하기 위해 보낼 다른 Resize 이벤트를 제공했습니다. 그것은 우리는 기능이 단순한 통지 이상의 경우 공유 서비스를 사용하십시오 일반적으로 모두를 사용하지만, 한

1

단지 크기 조정 2 개 Event 클래스를 ...입니다 - 우리는 또한 어떤 경우에는 우리의 서비스 내에서 EventAgregator를 사용합니다.

public interface IDocumentScannerService 
{ 
} 

public class DocumentScannerService : IDocumentScannerService 
{ 
} 

이 시도하고 EventAggregator로 이것을 구현하는 아주 나쁜 디자인이 될 것입니다 :

예를 들어 우리는 문서의 스캐닝을위한 서비스가있다.