Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross의 핵심 프로젝트와 UI 프로젝트 간의 상호 작용을 설명해 주시겠습니까?


MVVMCross의 핵심 프로젝트와 UI 프로젝트 간의 상호 작용을 설명해 주시겠습니까?


MVVMCross는 MVVM (Model-View-ViewModel) 패턴을 사용하여 응용 프로그램의 개발을 용이하게하는 크로스 플랫폼 프레임 워크입니다. 이를 통해 개발자는 응용 프로그램 논리를 핵심 프로젝트와 UI 프로젝트의 두 가지 주요 부분으로 분리하여 느슨하게 결합하고 유지 관리 가능하며 테스트 가능한 모바일 솔루션을 만들 수 있습니다.

핵심 프로젝트

핵심 프로젝트는 일반적으로 다음을 포함하여 모든 공유 코드를 포함하는 .NET 표준 라이브러리입니다.
- ViewModels : 사용자 상호 작용 및 비즈니스 로직을 처리하는 일이 있습니다.
- 모델 : 애플리케이션 전반에 걸쳐 사용되는 데이터 구조를 나타냅니다.
- 서비스 : 데이터, 웹 서비스 또는 기타 외부 리소스에 대한 액세스를 제공합니다.
- 변환기 : 데이터 유형 변환에 사용됩니다.
- 앱 클래스 : 응용 프로그램의 비즈니스 논리 및보기 모델을 초기화하는 것이 좋습니다. 또한 IOC (Control) 컨테이너에서 사용자 정의 객체 등록을 처리합니다.
- AppStart : 선택적으로 응용 프로그램이 시작될 때 먼저 존재할 뷰 모델을 결정하는 데 사용됩니다.

UI 프로젝트

UI 프로젝트는 플랫폼 별이며 사용자 인터페이스 요소 및 플랫폼 별 코드를 포함합니다. 각 대상 플랫폼 (예 : iOS, Android)마다 별도의 UI 프로젝트가 있습니다. 이 프로젝트에는 다음이 포함됩니다.
-보기 : 각보기는 해당보기 모델을 제시하는 책임이 있습니다. 보기는 기본 플랫폼 도구 (예 : Xamarin.forms 용 XAML, Android 용 AXML)를 사용하여 설계되었습니다.
- 기본 응용 프로그램 핸들러 : 이것은 기본 수명주기 이벤트를 처리합니다. 예를 들어, Android에서는 'Mainactivity'또는 'Mainapplication'클래스이며 iOS에서는 'AppDelegate'클래스가됩니다.
- 설정 클래스 : MVVMCross 부트 스트랩 및 플랫폼 별 서비스 등록을 담당합니다. MVVMCross 프레임 워크를 초기화하고 플랫폼 별 구현으로 IOC 컨테이너를 설정합니다.

코어와 UI 프로젝트 간의 상호 작용

MVVMCross의 핵심 프로젝트와 UI 프로젝트 간의 상호 작용은 MVVM 패턴과 프레임 워크의 IOC 컨테이너에 의해 촉진됩니다. 그들이 상호 작용하는 방법은 다음과 같습니다.
- ViewModel 바인딩 : UI 프로젝트는 MVVMCross를 사용하여 뷰를 바인딩하여 모델을 봅니다. 이것은 일반적으로 이름 지정 컨벤션을 사용하거나`[mvxviewfor (homeViewModel))]`와 같은 속성으로보기를 장식하여 수행됩니다.
- 서비스 주입 : 핵심 프로젝트는 각 플랫폼에서 다르게 구현되는 서비스의 인터페이스를 정의합니다. 이러한 서비스는 IOC 컨테이너에 등록되어 있으며 뷰 모델에 주입되어 코드를 복제하지 않고 플랫폼 별 기능을 허용합니다.
- 내비게이션 및 프레젠테이션 : MVVMCross는 뷰 모델 사이를 탐색하고 뷰를 제시하는 메커니즘을 제공합니다. 프레임 워크는 발표자 (예 :`imvxiosviewpresenter`,`imvxAndroidviewPresenter`)를 사용하여 각 플랫폼에 뷰가 표시되는 방법을 관리합니다.

MVVMCross는 응용 프로그램 로직을 Core 및 UI 프로젝트로 분리함으로써 플랫폼 별 플랫폼 간의 코드 재사용을 극대화하면서도 플랫폼 별 사용자 정의 및 최적화를 허용 할 수 있습니다 [1] [3] [5].

인용 :
[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/