Share via


플랫폼 간 애플리케이션 빌드 개요

이 가이드에서는 먼저 Xamarin 플랫폼을 소개합니다. 코드 재사용을 최대화하기 위해 플랫폼 간 애플리케이션을 설계하는 방법을 설명합니다. 그런 다음 마지막으로 iOS 및 Android 모바일 플랫폼에서 고품질의 네이티브 환경을 제공하는 방법을 설명합니다.

이 문서에서 사용되는 접근 방식은 생산성 앱과 게임 앱 모두에 사용할 수 있지만 생산성과 유틸리티(비게임 애플리케이션)에 중점을 두고 있습니다. 플랫폼 간 게임 개발 지침은 Visual Studio Tools for Unity를 참조하세요.

"쓰기-한 번, 모든 곳에서 실행"이라는 문구는 종종 여러 플랫폼에서 수정되지 않은 상태로 실행되는 단일 코드베이스의 장점을 찬양하는 데 사용됩니다. 코드 재사용의 이점이 있지만 이 접근 방식에는 단점이 있습니다. 두 가지 일반적인 단점은 가장 낮은 공통 분모 기능 집합이 있는 애플리케이션과 대상 플랫폼에 잘 맞지 않는 일반 사용자 인터페이스입니다.

Xamarin의 장점 중 하나는 각 플랫폼에 대해 특별히 네이티브 사용자 인터페이스를 구현하는 기능이므로 Xamarin은 "모든 곳에서 쓰기- 한 번 실행" 플랫폼이 아닙니다. 그러나 신중한 디자인으로 대부분의 비 사용자 인터페이스 코드를 공유하고 두 가지 세계를 모두 최대한 활용하는 것은 여전히 가능합니다. 데이터 스토리지 및 비즈니스 논리 코드를 한 번 작성하고 각 플랫폼에 네이티브 UI를 제공합니다. 이 문서에서는 이 목표를 달성하기 위한 일반적인 아키텍처 접근 방식에 대해 설명합니다.

Xamarin 플랫폼 간 앱을 만들기 위한 주요 사항에 대한 요약은 다음과 같습니다.

  • C# 사용 - C#에서 앱을 작성합니다. C#으로 작성된 기존 코드는 Xamarin을 사용하여 iOS 및 Android로 쉽게 이식할 수 있으며 Windows 앱에서 사용할 수 있습니다.
  • MVC 또는 MVVM 디자인 패턴 활용 - 모델/보기/컨트롤러 패턴을 사용하여 애플리케이션의 사용자 인터페이스를 개발합니다 . 모델/뷰/컨트롤러 접근 방식 또는 "Model"과 나머지 부분 사이에 명확한 구분이 있는 Model/View/ViewModel 접근 방식을 사용하여 애플리케이션을 설계합니다. 각 플랫폼(iOS, Android, Windows, Mac)의 네이티브 사용자 인터페이스 요소를 사용할 애플리케이션 부분을 결정하고 이를 지침으로 사용하여 애플리케이션을 "Core" 및 "User-Interface"의 두 구성 요소로 분할합니다.
  • 네이티브 UI 빌드 - 각 OS별 애플리케이션은 다른 사용자 인터페이스 계층(네이티브 UI 디자인 도구의 도움으로 C#에서 구현됨)을 제공합니다.
  1. iOS에서 UIKit API를 사용하여 Xcode에서 만든 프레젠테이션 계층에 대한 Storyboard를 사용하여 네이티브 애플리케이션을 만듭니다.
  2. Android에서 Android.Views를 사용하여 Xamarin의 UI 디자이너를 활용하여 네이티브 애플리케이션을 만듭니다.
  3. Windows에서는 Visual Studio 또는 Blend의 UI 디자이너에서 만든 프레젠테이션 계층에 XAML을 사용합니다.
  4. Mac에서는 Xcode에서 만든 프레젠테이션 계층에 Storyboard를 사용합니다.

Xamarin.Forms 프로젝트는 모든 플랫폼에서 지원되며 Xamarin.Forms XAML을 사용하여 플랫폼에서 공유할 수 있는 사용자 인터페이스를 만들 수 있습니다.

코드 재사용의 양은 주로 공유 코어에 유지되는 코드의 양과 사용자 인터페이스별 코드 양에 따라 달라집니다. 핵심 코드는 사용자와 직접 상호 작용하지 않고 대신 이 정보를 수집하고 표시하는 애플리케이션의 일부에 대한 서비스를 제공합니다.

코드 재사용의 양을 늘리려면 다음과 같은 모든 시스템에서 공통 서비스를 제공하는 플랫폼 간 구성 요소를 채택할 수 있습니다.

  1. 로컬 SQL 스토리지용 SQLite-net ,
  2. 카메라, 연락처 및 지리적 위치를 비롯한 디바이스별 기능에 액세스하기 위한 Xamarin 플러그 인
  3. Xamarin 프로젝트와 호환되는 NuGet 패키지 (예: Json.NET)
  4. 네트워킹, 웹 서비스, IO 등에 .NET Framework 기능을 사용합니다.

이러한 구성 요소 중 일부는 Tasky 사례 연구에서 구현됩니다.

재사용 가능한 코드를 핵심 라이브러리로 분리

애플리케이션 아키텍처를 계층화한 다음 플랫폼에 구애받지 않는 핵심 기능을 재사용 가능한 핵심 라이브러리로 이동하여 책임을 분리하는 원칙에 따라 아래 그림과 같이 플랫폼 간에 코드 공유를 최대화할 수 있습니다.

By following the principle of separation of responsibility by layering your application architecture and then moving core functionality that is platform agnostic into a reusable core library, you can maximize code sharing across platforms

사례 연구

이 문서와 함께 제공되는 한 가지 사례 연구인 Tasky Pro가 있습니다. 각 사례 연구는 실제 예제에서 이 문서에 설명된 개념의 구현에 대해 설명합니다. 코드는 오픈 소스 github에서 사용할 수 있습니다.