ReactiveUI and the MVVM Pattern in WPF


관련 자료

 

https://reactiveui.net/

 

An advanced, composable, reactive model-view-viewmodel framework

Declarative Describe what you want, not how to do it & rejoice in the increased readability of your code. Code is communication between people, that also happens to run on a computer. If you optimise for reading by humans, then over a long time your projec

reactiveui.net

https://github.com/reactiveui

 

ReactiveUI

Use the Reactive Extensions for .NET to create elegant, testable user interfaces that run on any mobile or desktop platform. - ReactiveUI

github.com

https://www.toptal.com/wpf/reactiveui-and-mvvm-in-wpf

 

ReactiveUI and the MVVM Pattern in WPF Applications

I will implement a WPF app using ReactiveUI with the MVVM pattern, and uses it to access a REST API. This app will be able to track cars and their locations, take information pulled from a simulated source, and display this information to the user in a Bin

www.toptal.com

 

 



 

[그림1] ReactiveUI

 

 Reactive Extensions for .NET을 사용하여 모바일 또는 데스크톱 플랫폼에서 실행되는 우아하고 테스트 가능한 사용자 인터페이스를 만들 수 있다. 

 

[그림2] ReactiveUI code example

 "그림2"에서와 같은 코드로 이벤트를 잡아내고, 처리 로직을 세울 수 있다.

 

 

[그림3] example

 

 

[그림4] MVVM flow

 

 "그림4"는 MVVM의 흐름을 나타낸것이다. MV-VM으로서 처리 로직과, UI의 분리를 통해 디자이너와의 협업성을 향상 시킬 수 있다. MV* 아키텍처의 아류로서 MS에서 발표 하였지만, 대부분은 WPF에서 사용중이다. 하지만 javascript 진영이나, 기타 프레임워크에서 MV*와 바인딩 엔진 개념을 도입해서 사용하는 프로젝트가 늘어나고 있는 추세이긴 하다.

 

 

아래는 각 언어와 플랫폼별로 라이브러리를 추가하는 정보를 나열하였다. 참고하여 프로젝트에 추가하면 되겠다.

Platform ReactiveUI Package Package
.NET Standard ReactiveUI None
  ReactiveUI.Fody None
Unit Testing ReactiveUI.Testing None
Universal Windows ReactiveUI ReactiveUI.Events
WPF ReactiveUI.WPF ReactiveUI.Events.WPF
Windows Forms ReactiveUI.WinForms ReactiveUI.Events.WinForms
Xamarin.Forms ReactiveUI.XamForms ReactiveUI.Events.XamForms
Xamarin.Essentials ReactiveUI ReactiveUI.Events.XamEssentials
Xamarin.Android ReactiveUI.AndroidSupport ReactiveUI.Events
Xamarin.iOS ReactiveUI ReactiveUI.Events
Xamarin.Mac ReactiveUI ReactiveUI.Events
Tizen ReactiveUI ReactiveUI.Events
Avalonia Avalonia.ReactiveUI None

[표1] 참조 라이브러리

+ Recent posts