tutorialspoint 에서 배포한 MVVM PDF 문서를 우리말로 바꾸어 보려고 합니다.
엉망이니 참고만 하시기 바랍니다.
###############################################################################
1. MVVM – 소개
코드를 잘 정리하고 가장 잘 재사용할 수 있도록 조직화 하는 방법은 'MVVM' pattern 을 사용하는 것입니다.
Model, View, ViewModel (MVVM pattern) 은 여러분이 유지보수 가능하고, 테스트가 가능하며 확장가능한 application 을 작성할 수 있도록 코드를 조직화하고 구조하는 방법으로 안내합니다.
Model : data 의 정보를 가지고 있으며 business logic 과는 아무런 작업도 하지 않습니다.
ViewModel : Model 과 ViewModel 사이에서 Link/connection 으로서의 역할을 하며 꽤 멋지게 보이게 합니다.
View : 형식화된 data 를 가지고 있으며 특히나 모든것을 Model 에 위임 (delegate) 합니다.
분리된(Seperated) Presentation
code-behind 나 XAML 의 application logic 에서 야기된 문제들을 피하기 위해서 분리된 presentation 이라고 알려진 기술을 사용하는 것이 최선입니다.
이런 문제점을 피하기 위해서 User interface object 와 직접 작업하는데 필요한 XAML 과 Code-behind 를 최소한으로 할 것입니다.
다음 그림의 왼쪽을 보는 것 처럼 User interface class 들은 복잡한 interaction behaviors, application logic 과 모든 것을 위한 코드를 포함하고 있습니다.
- 분리된 presentation 기술로 User interface class 는 더욱 단순해집니다. XAML 을 가지고 있습니다. 하지만 Code-behind 는 실용적으로 적습니다.
- application logic 이 별도의 class 내에 들어가 있으며 이는 종종 model 로 언급됩니다.
- 하지만 이는 전체 이야기가 아닙니다. 여기서 그만두면 여러분은 data binding 방식을 잃어버리는 매우 흔한 실수를 반복하게 될 것입니다. (However, this is not the whole story. If you stop here, you're likely to repeat a very common mistake that will lead you down the path of data binding insanity)
- 많은 개발자들이 XAML 에서 data binding 을 사용하여 element 를 직접 model 의 properties 와 연결하기를 시도합니다.
- 때때로 이 방법은 괜찮을수 있습니다. 하지만 그렇지 않을 수 있습니다. Model 은 application 의 동작과 관련이 있지 사용자가 application 과 상호작용하는 방법과는 관련이 없다는 것이 문제입니다.
- Data 를 표현하는 방식은 내부적으로 구조화된 방식과 다소 다릅니다. 게다가 대부분의 user interface 는 application model 이 가지고 있지 않은 몇몇 state 를 가지고 있습니다.
- 예를 들어 만약 user interface 가 drag and drop 을 사용한다면 Drag 되는 항목의 현재 위치는 어디인지, drop 할 수 있는 target 의 위로 이동했을 때 모양은 어떻게 바뀌는지, target 또한 어떻게 바뀌어야하는지 같은 것들을 추적해야합니다.
- 이런 state 는 놀라울정도록 복잡할 수 있고 철저한 테스트가 필요합니다.
- 실제로 여러분은 User interface 와 Model 사이에 어떤 다른 class 가 있길 원합니다. 여기에는 두가지 중요한 role 이 있습니다.
- 첫째, 특정 User interface view 를 위한 application model 을 채택합니다.
- 둘째, 자잘한 interaction logic 이 존재하는 곳이며 그 코드는 여러분이 원하는 방식으로 user interface 가 작동하도록 합니다.
######################################################
이상입니다. 우리말이 너무 어렵네요.
머리로는 이해가 가는데 말로 표현하려니...
제가 잘 몰라서겠죠...
영어도 못하고 우리말도 못하고... ㅡㅡ;
행복한 고수되셔요.
woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\