MVVMCross는 MVVM (Model-View-ViewModel) 패턴을 구현하여 크로스 플랫폼 앱에서 우려 사항의 분리를 용이하게하며, 이는 본질적으로 응용 프로그램의 다른 구성 요소간에 명확한 책임의 분할을 촉진합니다. MVVMCross가이를 달성하는 방법은 다음과 같습니다.
MVVM 패턴 구현
MVVMCross는 3 가지 주요 구성 요소로 구성된 MVVM 아키텍처를 중심으로 제작되었습니다.
- 모델 : 응용 프로그램의 데이터 및 비즈니스 논리를 나타냅니다. 사용자 인터페이스와 무관 한 데이터 구조 및 작업을 캡슐화합니다.
-보기 : 사용자 인터페이스 및 사용자 상호 작용을 처리합니다. 데이터를 표시하고 사용자로부터 입력을 수신 할 책임이 있습니다.
- ViewModel : 모델과보기 사이의 중개자 역할을합니다. 그것은보기가 모델에서 뷰를 효과적으로 분리하는 데이터와 명령을 노출시킵니다.
이러한 분리를 유지함으로써 MVVMCross는 각 구성 요소가 책임을 겹치지 않고 특정 역할에 초점을 맞추도록합니다. 예를 들어,보기에는 비즈니스 로직이 포함되어서는 안되며 뷰 모델은 UI 요소를 직접 조작해서는 안됩니다.
공유 논리에 대한 휴대용 클래스 라이브러리 (PCL)
MVVMCross는 휴대용 클래스 라이브러리 (PCL)를 사용하여 플랫폼 별 서비스를위한 뷰 모델, 모델 및 인터페이스를 수용합니다. 이 PCL은 공유 비즈니스 로직 및 데이터베이스 처리를 포함하는 핵심 프로젝트 역할을합니다. MVVMCross를 통해 비즈니스 로직을 PCL로 분리함으로써 개발자는 iOS, Android 및 Windows와 같은 다른 플랫폼에서 코드의 상당 부분을 공유 할 수 있습니다. 이 접근법은 코드 재사용을 용이하게 할뿐만 아니라 비즈니스 로직이 플랫폼에서 일관성을 유지하도록 보장합니다.
데이터 바인딩 및 통신
MVVMCross는 해당 뷰 모델로 링크보기에 데이터 바인딩을 사용합니다. 이 메커니즘을 사용하면 뷰 모델이 변경 될 때 뷰가 자동으로 업데이트 될 수 있으며 그 반대도 마찬가지입니다. 데이터 바인딩은 비즈니스 로직의 구현 세부 사항을 알 필요없이 뷰 모델의 변화에 반응 할 수 있기 때문에 문제의 분리를 유지하는 데 중요합니다.
또한 MVVMCross는 명령 및 이벤트와 같은 다양한 커뮤니케이션 기술을 지원하며, 이는 내부 상태에 직접 액세스하지 않고도 뷰 모델에서 조치를 호출 할 수 있도록하여 우려 사항의 분리를 더욱 향상시킵니다.
종속성 주입 및 플러그인 아키텍처
MVVMCross는 종속성 주입 (DI) 및 플러그인 아키텍처를 통합하여 종속성을 관리하고 프레임 워크의 기능을 확장합니다. 종속성 주입은 구성 요소가 느슨하게 결합되도록하여 응용 프로그램을보다 쉽게 테스트하고 유지할 수 있도록합니다. 플러그인 아키텍처를 통해 개발자는 핵심 프레임 워크를 변경하지 않고 새로운 기능을 추가하여 깨끗한 문제를 분리 할 수 있습니다.
라이프 사이클 관리
MVVMCross는 뷰 모델에 대한 수명주기 관리 기능을 제공하며, 이는 뷰의 수명주기에 연결되어 있습니다. 이것은 뷰가 생성되거나 나타나거나 사라지거나 파괴 될 때 뷰 모델에게 알릴 수 있음을 의미합니다. 이러한 수명주기 관리는 리소스가 올바르게 정리되고 뷰 모델의 상태가 올바르게 관리되도록함으로써 깨끗한 우려를 분리하는 데 도움이됩니다.
요약하면, MVVMCross는 공유 로직을위한 PCL을 사용하고 데이터 바인딩 구현 및 종속성 주입 및 수명주기 관리를 통합하여 MVVM 패턴을 시행하고 MVVM 패턴을 시행하여 크로스 플랫폼 앱의 문제의 분리를 용이하게합니다. 이러한 기능은 강력하고 관리 가능하며 확장 가능한 응용 프로그램 아키텍처에 총체적으로 기여합니다.
인용 :[1] https://www.linkedin.com/advice/0/what-best-way-ensure-separation-concerns-mvvm-design-csadc
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[3] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[4] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[5] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[6] https://www.mvvmcross.com/documentation/getting-started/getting-started
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://stackoverflow.com/questions/32220007/what-does-mvvmcross-do- xamarin-doesnt-already
[9] https://github.com/mvvmcross/mvvmcross