MVVMCross와 함께 CSLA.NET을 사용하면 두 프레임 워크의 강점을 활용하여 비즈니스 로직 분리가 달성됩니다. CSLA.NET은 비즈니스 오브젝트 내에서 비즈니스 로직을 캡슐화하도록 설계되어 유효성 검사 규칙, 인증 검사 및 데이터 액세스 로직이 프리젠 테이션 계층과 명확하게 분리되어 있는지 확인합니다 [2] [3]. 반면 MVVMCross는 여러 플랫폼에서 UI 및 응용 프로그램 수준 논리를 관리하기위한 강력한 MVVM 프레임 워크를 제공합니다 [1].
csla.net의 비즈니스 로직
CSLA.NET는 모든 비즈니스 논리가 포함 된 비즈니스 객체의 사용을 강조함으로써 명확한 책임 부서를 촉진합니다. 이 객체는 데이터 컨테이너가 아닌 동작에 중점을 둔 정통 객체 지향 설계 개념을 사용하여 설계되었습니다 [3]. 이 접근법은 응용 프로그램 전체에서 비즈니스 규칙이 균일하게 시행되도록하여 응용 프로그램을보다 쉽게 유지하고 확장 할 수 있도록합니다 [2].
MVVMCross와의 통합
MVVMCross는 주로 응용 프로그램 및 UI 수준과 관련이 있으며 비즈니스 서비스 및 모델의 선택을 개발자에게 개방합니다 [1]. CSLA.NET을 MVVMCross와 통합 할 때 CSLA의 비즈니스 객체를 MVVM 패턴의 모델 레이어로 활용할 수 있습니다. MVVMCross의 뷰 모델은 이러한 비즈니스 객체를 소비하여 UI 상태를 구동하고 사용자 이벤트를 처리 할 수 있습니다.
분리를위한 모범 사례
1. CSLA 비즈니스 객체를 모델로 사용하십시오 : CSLA의 비즈니스 객체는 MVVM 패턴의 모델 레이어로 사용해야합니다. 이를 통해 비즈니스 논리가 이러한 객체 내에서 캡슐화되도록합니다.
2. 얇은 뷰 모델 : UI 특이 적 논리 및 상태 관리에 중점을 두어 뷰 모델을 얇게 유지합니다. 코드 복제와 불일치로 이어질 수 있으므로 복잡한 비즈니스 논리를 뷰 모델 내에 배치하지 마십시오 [4] [8].
3. ViewModelbase 상속 : 필요한 경우 CSLA의`viewModelBase`에서 상속을 받으려면 CSLA의 비즈니스 객체를 MVVMCross의 뷰 모델 요구 사항과 통합합니다. 그러나 이것은 우려의 명확한 분리를 유지하기 위해 신중하게 수행되어야한다 [1] [7].
4. 데이터 액세스 계층 : 데이터 액세스 로직이 비즈니스 로직과 분리되어 있는지 확인하십시오. CSLA는 MVVMCross와 통합 할 때 유익 할 수있는 데이터 액세스 논리 추상화를 지원합니다 [2] [6].
이러한 관행을 따르면 MVVMCross와 함께 csla.net을 사용할 때 UI 논리에서 비즈니스 로직을 효과적으로 분리하여 유지 가능하고 확장 가능한 크로스 플랫폼 응용 프로그램 아키텍처를 보장 할 수 있습니다.
인용 :[1] https://stackoverflow.com/questions/17373587/how-well-would-mvvmcross-and-csla-net-work-in-amulti-platform-strategy
[2] https://ironpdf.com/blog/net-help/csla-net/
[3] https://github.com/marimerllc/csla/blob/main/docs/what-is-csla-.net.md
[4] https://www.reddit.com/r/androiddev/comments/13djgfv/business_logic_in_viewmodel_mvvm/
[5] https://blog.lhotka.net/2019/09/04/uno-platform-and-webassembly-with-csla-v5
[6] https://marcduerst.com/2017/07/07/layer-architecture-separation-of-business-logic-and-physical-data-access/
[7] https://cslanet.com/old-forum/8575.html
[8] https://github.com/marimerllc/csla/discussions/1987