eBook을 사용하는 Xamarin.Forms 엔터프라이즈 애플리케이션 패턴

적응 가능하고, 기본, 테스트 가능한 Xamarin.Forms 엔터프라이즈 애플리케이션을 개발하기 위한 아키텍처 지침

Enterprise Application Patterns using Xamarin.Forms eBook

참고 항목

이 전자책은 2017년 봄에 게시되었으며 그 이후로 업데이트되지 않았습니다. 이 책에는 귀중한 기본 많이 있지만 일부 자료는 구식입니다.

이 전자책에서는 느슨한 결합을 기본 동안 MVVM(Model-View-ViewModel) 패턴, 종속성 주입, 탐색, 유효성 검사 및 구성 관리를 구현하는 방법에 대한 지침을 제공합니다. 또한 IdentityServer를 사용하여 인증 및 권한 부여를 수행하고, 컨테이너화된 마이크로 서비스에서 데이터에 액세스하고, 단위 테스트를 수행하는 방법에 대한 참고 자료도 있습니다.

서문

이 장에서는 가이드의 목적과 범위, 그리고 가이드의 목적에 대해 설명합니다.

소개

엔터프라이즈 앱 개발자는 개발 중에 앱의 아키텍처를 변경할 수 있는 몇 가지 문제에 직면해 있습니다. 따라서 시간이 지남에 따라 수정하거나 확장할 수 있도록 앱을 빌드하는 것이 중요합니다. 이러한 적응성을 고려한 디자인은 어려울 수 있으며 다만 일반적으로 앱에 쉽게 통합할 수 있는 느슨하게 결합된 개별 구성 요소로 앱을 분할하는 작업이 필요합니다.

MVVM

MVVM(Model-View-ViewModel) 패턴을 사용하면 애플리케이션의 비즈니스 및 프레젠테이션 논리를 UI(사용자 인터페이스)와 클린 구분할 수 있습니다. 애플리케이션 논리와 UI 간의 클린 분리를 유지 관리하면 수많은 개발 문제를 해결하는 데 도움이 되며 애플리케이션을 더 쉽게 테스트, 기본, 발전시킬 수 있습니다. 또한 코드 재사용 기회를 크게 향상시킬 수 있으며 개발자와 UI 디자이너가 앱의 각 부분을 개발할 때 보다 쉽게 공동 작업할 수 있습니다.

종속성 주입

종속성 주입을 사용하면 이러한 형식에 종속된 코드에서 구체적인 형식을 분리할 수 있습니다. 일반적으로 인터페이스와 추상 형식 간의 등록 및 매핑 목록을 포함하는 컨테이너와 이러한 형식을 구현하거나 확장하는 구체적인 형식을 사용합니다.

종속성 주입 컨테이너는 클래스 인스턴스를 인스턴스화하고 컨테이너의 구성에 따라 수명을 관리하는 기능을 제공하여 개체 간의 결합을 줄입니다. 개체를 만드는 동안 컨테이너는 개체에 필요한 모든 종속성을 삽입합니다. 해당 종속성이 아직 만들어지지 않은 경우 컨테이너는 먼저 해당 종속성을 만들고 확인합니다.

느슨하게 결합된 구성 요소 간 통신

이 클래스는 Xamarin.FormsMessagingCenter 게시-구독 패턴을 구현하여 개체 및 형식 참조로 연결하는 데 불편한 구성 요소 간의 메시지 기반 통신을 허용합니다. 이 메커니즘을 사용하면 게시자와 구독자가 서로 참조하지 않고도 통신할 수 있으므로 구성 요소 간의 종속성을 줄이는 동시에 구성 요소를 독립적으로 개발하고 테스트할 수 있습니다.

Xamarin.Forms 에는 내부 논리 기반 상태 변경의 결과로 일반적으로 사용자가 UI와 상호 작용하거나 앱 자체에서 발생하는 페이지 탐색에 대한 지원이 포함됩니다. 그러나 탐색은 MVVM 패턴을 사용하는 앱에서 구현하기 복잡할 수 있습니다.

이 장에서는 뷰 모델에서 모델 우선 보기 탐색을 수행하는 데 사용되는 클래스를 제공합니다 NavigationService . 보기 모델 클래스에 탐색 논리를 배치하면 자동화된 테스트를 통해 논리를 실행할 수 있습니다. 또한 뷰 모델은 특정 비즈니스 규칙이 적용되도록 탐색을 제어하는 논리를 구현할 수 있습니다.

유효성 검사

사용자의 입력을 수락하는 모든 앱은 입력이 유효한지 확인해야 합니다. 사용자는 유효성 검사 없이 앱 실패를 야기하는 데이터를 제공할 수 있습니다. 유효성 검사는 비즈니스 규칙을 적용하고 공격자가 악의적인 데이터를 삽입하지 못하도록 합니다.

MVVM(Model-View-ViewModel) 패턴의 컨텍스트에서 뷰 모델 또는 모델은 종종 데이터 유효성 검사를 수행하고 사용자가 오류를 수정할 수 있도록 뷰에 유효성 검사 오류 신호를 보내야 합니다.

구성 관리

설정을 사용하면 코드에서 앱의 동작을 구성하는 데이터를 분리할 수 있으므로 앱을 다시 빌드하지 않고도 동작을 변경할 수 있습니다. 앱 설정은 앱이 만들고 관리하는 데이터이며, 사용자 설정은 앱의 동작에 영향을 주며 자주 다시 조정할 필요가 없는 앱의 사용자 지정 가능한 설정입니다.

컨테이너화된 마이크로 서비스

마이크로 서비스는 애플리케이션 개발 및 배포에 대한 접근 방식을 제공하는데, 이 접근 방식은 최신 클라우드 애플리케이션의 민첩성, 규모 및 안정성 요구 사항에 적합합니다. 마이크로 서비스의 기본 장점 중 하나는 독립적으로 스케일 아웃할 수 있다는 것입니다. 즉, 수요가 증가하지 않는 애플리케이션의 영역을 불필요하게 확장하지 않고 수요를 지원하기 위해 더 많은 처리 능력 또는 네트워크 대역폭이 필요한 특정 기능 영역을 확장할 수 있습니다.

인증 및 권한 부여

ASP.NET MVC 웹 애플리케이션과 통신하는 앱에 Xamarin.Forms 인증 및 권한 부여를 통합하는 방법에는 여러 가지가 있습니다. 여기서 인증 및 권한 부여는 IdentityServer 4를 사용하는 컨테이너화된 ID 마이크로 서비스를 사용하여 수행됩니다. IdentityServer는 전달자 토큰 인증을 수행하기 위해 ASP.NET Core ID와 통합되는 ASP.NET Core에 대한 오픈 소스 OpenID Connect 및 OAuth 2.0 프레임워크입니다.

원격 데이터에 액세스

많은 최신 웹 기반 솔루션은 웹 서버에서 호스트되는 웹 서비스를 사용하여 원격 클라이언트 애플리케이션의 기능을 제공합니다. 웹 서비스가 노출하는 작업은 웹 API를 구성하며, 클라이언트 앱은 API가 노출하는 데이터 또는 작업이 구현되는 방식을 모르는 상태에서 웹 API를 활용할 수 있어야 합니다.

단위 테스트

MVVM 애플리케이션에서 모델 및 뷰 모델을 테스트하는 것은 다른 클래스를 테스트하는 것과 동일하며 동일한 도구와 기술을 사용할 수 있습니다. 그러나 모델 클래스를 모델링하고 보는 데 일반적인 몇 가지 패턴이 있으며 특정 단위 테스트 기술을 활용할 수 있습니다.

커뮤니티 사이트

이 프로젝트에는 질문을 게시하고 피드백을 제공할 수 있는 커뮤니티 사이트가 있습니다. 커뮤니티 사이트는 GitHub있습니다. 또는 전자책에 대한 피드백을 전자 메일로 보낼 dotnet-architecture-ebooks-feedback@service.microsoft.com수 있습니다.