2013-05-01 2 views
1

로그인 화면이있는 응용 프로그램이 있습니다. 상당히 일반적인 시나리오입니다. 사용자가 인증을받은 후에는 그 사람을 저장해야합니다. 왜냐하면 그 사람의 권한에 따라 행동해야하기 때문입니다. 물론 저장할 자산이 더 많습니다.WPF에 현재 로그인 한 사용자를 저장하는 방법

best 달성 방법 이? 저는 현재 두 가지 옵션을 평가하고 있습니다 :

1.) 내 viewmodels

2

) App.Current.Properties를 사용하고 거기에 저장에있는 싱글 톤 (또는 정적 속성)와 참조를 사용합니다. 그런 다음 일부 정적 도우미 메소드를 사용하여 앱 전체에서 사용자를보다 쉽고 일관성있게 검색 할 수 있습니다.

또는 다른 옵션을 고려할 수 있습니까? 제안 해 주셔서 감사합니다.

+0

세션 기간 동안 메모리에 사용자를 저장하는 것에 대해 이야기하는 것처럼 보입니까? 그렇다면 왜 필요한 모든 속성을 가진 User 클래스를 만들고 기본 뷰 모델에서이 사용자 클래스의 인스턴스에 대한 참조 (싱글 톤일 수 있음)를 저장하지 않는 것이 좋습니다. 사용자 속성에 액세스해야하는 다른보기 모델에서 기본보기 모델로 메시지를 보내지 않고 기본보기 모델이 해당 사용자 클래스의 인스턴스에 대한 참조를 사용하여 메시지를 다시 보낼 수 있습니다. –

+0

@DeanKuga, 어쩌면 좀 더 구체적인 예를 들자면 asp.net에서 세션을 사용하여 사용자 별 데이터를 저장할 수 있습니다. 그런 다음이 세션 변수를 참조하여 개별 페이지에서 필요한 항목을 검색하기 만하면됩니다. WPF에서 대안은 무엇입니까? 싱글 톤은 단위 테스트와 관련해서는 다소 문제가 있기 때문에 불가능하다고 생각하기 시작했지만 가능한 한 피하려고 노력하고 있습니다. 때로는 가장 쉬운 솔루션이 최고의 솔루션이라고 생각합니다. – walther

+0

MEF에 의존성을 추가하는 것은 과잉이라고 생각합니다. 왜 싱글 톤이되어야하는지 알지 못합니다. 로그온 할 때 User 클래스의 인스턴스를 필요에 따라 다른보기 모델에 대한 참조를 보내려면 ...보기 모델 간의 통신에 대한이 대답을 확인하십시오. http://stackoverflow.com/a/14361984/229930 –

답변

2

MEF를 사용하고 인증 된 사용자 인터페이스를 [보기] 모델로 가져옵니다. 이렇게하면 리소스를 관리하는 코드가 아니라 개체와 프레임 워크에서 사용할 수있는 전역 리소스가 있습니다. 이렇게하면 제안 된 솔루션 중 하나보다 결합력이 낮아지며, 다른 장점 중 하나가 단위 테스트에 도움이됩니다.

Prism framework for Silverlight은 MEF를 기반으로하며 WPF에 적합해야합니다.

MEF는 의존성 주입입니다. 필수 인터페이스를 구체적인 클래스의 인스턴스에 매핑하여 MEF가 의존성을 해결할 책임이 있습니다. ID를 설정하고 검색하는 메서드를 사용하여 IAuthenticatedUser 인터페이스를 만듭니다. 인터페이스를 구현하고 MEF로 내보내는 모델 클래스를 만듭니다. 귀하의 로그인 ViewModel과 ID를 필요로하는 다른 ViewModel은 인터페이스를 가져옵니다. MEF는 뷰 모델을 생성 할 때 구현 클래스의 인스턴스에 뷰 모델을 연결합니다. ViewModel은 필요에 따라 인터페이스를 사용합니다.

+0

나는 이것에 대해 궁금합니다. 나는 (정말로) 게으르지 않지만, 아마 당신은 당신의 대답과 som 링크를 제공 할 수 있습니까?:) – Silvermind

+0

@ silvermind-- 링크를 사용하여 답변을 확장했습니다 – antlersoft

+0

내가 잘못하면 정답을, 실제로 MEF를 사용하지는 않았지만 MEF는 의존성 삽입과 같은 것입니까? 당신은 어떤 의존성을 지정하고 그것은 "마술처럼"정확하게 연결합니다. 내 상황에서 어떻게 보일까요? 사용자가 로그인하여 로그인하는 중 ...? MEF를 사용하여 ViewModel에서이 데이터를 x-click 할 수 있습니까? 실제로'수출'은 무엇입니까? 아마 바보 같은 질문에 대해 미안하지만, 지난 몇 주 동안 나는 너무 많은 아키텍처 패턴에 대한 연구를했고 머리는 아마도 곧 폭발 할 것입니다. 좀 더 구체적인 예를 들어 주시면 감사하겠습니다. 감사. – walther

관련 문제