Share via


Windows 10 개발자 가이드

Windows 10 개발자 가이드 Part. 1

 
 

이 문서는 Windows 10 개발자를 위해서 관련된 내용들을 정리한 문서로 현재 Windows 10 Preview 버전을 기준으로 작성되었으며 따라서 최신 정보와 차이가 있을 수 있다. 항상 최신의 정보는 MSDN(Microsoft Developer Network https://msdn.microsoft.com)을 참조하기 바란다.

 
 

Windows 10 Overview.

Windows 10은 2015년 출시 예정으로 있는 새로운 버전의 Windows 이다. 사용자 입장에서는 다시 돌아온 시작 메뉴, 고해상도 모니터의 지원과 액션센터와 타블릿과 데스크탑에서 각각 맞는 인터페이스 그리고 변경된 참바 등등을 본다면 변화가 작지않은 것도 사실이다.

<그림1> 진화되어 돌아온 시작 메뉴

 하지만 정작 변화의 폭이 큰 기존의 버전과는 변화의 폭이 크다는 말이 적절하지 않을 정도로 처음부터 다시 쓴 클라이언트 플랫폼이다. Windows 10의 가장 큰 특징은 하나의 Windows Core로 PC, Phone, XBox 그리고 IoT에 사용되는 디바이스 등 다양한 디바이스를 지원하게 된 점이다.

 
 

<그림2>Windows 10에서는 하나의 동일한 Windows Core가 다양한 디바이스에 사용된다.  

Wiindows Core를 공통으로 사용할 수 있게 되면서 Windows 10은 다음과 같은 특징을 갖게 되었다.

- PC, Mobile, XBox 이외에도 IoT나 기타 장비를 동일한 Windows Core를 기반으로 하고 있다.
- 동일한 커널위에 동일한 API 집합인 UAP(Universal App Platform)가 제공된다.
- 모든 디바이스들이 하나의 스토어에 연결된다.

<그림3>One Windows Platform

 

Universal App Platform 

디바이스와 관계없이 동일한 Windows Core를 사용하면서 동일한 API집합이 제공되는 데 이 부분이 UAP(Universal App Platform)이다.  UAP를 기반으로 개발된 앱들은 동일한 앱 모델을 가지고 있고 바이너리 수준의 호환성을 가지고 있다. 
 기존 Windows 8.1에서도 제한적으로 Windows와 Windows Phone 사이에 Universal App이 제공되었지만 Windows 10에서는 더 넓게 Universal App이 적용된다.

 Windows 10에서 제공하는 UAP는 최소한의 노력으로 다양한 디바이스를 지원하는데 큰 이점을 제공해 줄 뿐만 아니라 사용자의 입장에서는 디바이스 간의 연결된 사용자 경험을 제공 할 수 있다.

UAP에 대해서 자세한 내용은 Windows Blog에 올라와 있는 글 (https://blogs.windows.com/buildingapps/2015/03/02/a-first-look-at-the-windows-10-universal-app-platform/)을 참조 할 수 있다.

여기서 중요한 점은 앞으로는 Windows의 버전이 아니라 UAP 버전을 중심으로 호환성이 제공된다. 즉 OS 버전과는 상관없이 UAP 버전이 앱의 호환성의 기준이 된다. 그래서 UAP의 최소, 최대 버전을 프로젝트에서 명시 하도록 되어 있다.

<TargetPlatform Name="Microsoft.Universal" minVersion="2.0.0.0" maxVersionTested="3.5.0.0" />

 여기서 중요한 점은 앞으로는 Windows의 버전이 아니라 UAP 버전을 중심으로 호환성이 제공된다. 즉 OS 버전과는 상관없이 UAP 버전이 앱의 호환성의 기준이 된다. 그래서 UAP의 최소, 최대 버전을 프로젝트에서 명시할 수 있다.

<그림4>Platform.xml 파일의 내용

 

Extension SDK

UAP에서 모든 기능을 다 제공할 수는 없다. 디바이스 독립적으로 설계되어 있기 때문에 디바이스들이 가지고 있는 고유한 특징은 제공되지 않는다. Windows Phone의 백 버튼이나 진동 기능 혹은 Xbox에서 제공하는 아바타와 같은 요소들은 해당 디바이스에만 존재하는 기능들이다. 그래서 각각의 디바이스 별로 고유한 기능을 제공하는 방법이 필요하다.

이럴 때 사용하는 것이 바로 Extension SDK이다. Extension SDK는 각 디바이스 별 특징을 담고 있는 컴퍼넌트로 프로젝트에 참조 추가를 통해서 추가할 수 있다. <그림5>에서는 스토어 앱 프로젝트에 데스크탑과 모바일의 Extension SDK가 추가되어 있는 것을 볼 수 있다.

<그림5> Extension SDK가 추가되어 있는 프로젝트

 이렇게 Extension SDK가 추가되어 있는 상태에서 상황에 따라 각 디바이스에 해당하는 기능을 호출하면 하나의 앱으로 다양한 디바이스의 특징을 모두 살릴 수 있는 Universal App을 만들 수 있다.

Extension SDK의 활용 방법에 대한 소개와 발표자료는 아래 링크를 참조 할 수 있다.
https://channel9.msdn.com//Series/Developers-Guide-to-Windows-10-Preview/04?wt.mc_id=player

UAP에 대한 전반적인 내용은 아래 동영상을 참조 할 수 있다.
https://channel9.msdn.com/Shows/Inside-Windows-Platform/A-First-Look-at-Building-Windows-10-Universal-Applications

 
 

Visual Studio 2015 CTP6 

Windows Insider Program 

을 위해서는 Visual Studio 2015와 Tools for Windows 10 Technical Preview 가 필요하다. Microsoft는 Windows Insider Program을 통해서 Windows 10 Technical Preview와 Tools for Windows 10 Technical Preview를 제공하고 있다. 그래서 Windows 10을 미리 체험해 보기 위해서는 Insider Program에 가입하는 것이 필요하다.

Windows Insider Program 가입 https://insider.windows.com/
 

 
 

당연한 이야기 이지만 Windows 10 개발을 위해서는 Windows 10을 먼저 설치해야 한다.

Windows 10 Technical Preview Download
https://windows.microsoft.com/ko-kr/windows/preview-faq

개발도구는 Visual Studio 2015 버전을 설치해야 하는데 아래와 같이 세가지 버전 중 하나를 선택해서 설치하면 된다.

Visual Studio Editions

- Ultimate (Architecture Modeling, Diagnostics, VSO/ALM & Release Management
- Premium (Architecture Validation, VSO/ALM & Feedback Management
- Community Edition (Visual Studio Professional Edition)  

현재는 아래 링크에서 Visual Studio 2015 Preview 버전을 다운받아 설치 할 수 있다.

https://www.visualstudio.com

 

Tools for Windows 10 Techinical Preview Visual Studio 2015 만 설치해서는 개발을 바로 시작할 수 없다. Windows 10과 관련된 기능들은 Tools for Windows 10 Techinical Preview를 설치해야 가능하다. 설치 용량은 5기가 정도이며 시간이 다수 걸릴 수 있다.

Tools for Windows 10 Techinical Preview Download
https://dev.windows.com/en-US/windows-10-developer-preview-tools

 
 

Windows 10 개발자 가이드 Part. 2

 
 

Windows 10 개발자 가이드 1/2에서 Windows 10 Overview와 Universal App Platform그리고 개발 환경에 대해서 알아보았다. 여기에서는 UAP 앱을 개발하기 위해서 새롭게 추가되거나 변경된 컨트롤과 기능 그리고 웹 플랫폼에 대해서 MVA의 Windows 10 Preview 개발자 가이드 강좌의 내용을 기반으로 Adaptive UI, Communication, Platform Features 그리고 Web Platform에 대해서 살펴보겠다. 추가로 윈도우 개발자 센터의 Windows Universal 앱 가이드 문서도 같이 참고하길 바란다.

   
 

Adaptive UI

 
 

UAP는 다양한 크기의 디바이스를 지원해야 하고, 이에 따라 화면에 보여질 수 있는 콘텐트 가로 및 세로 크기가 달라질 수 있다. 디바이스 별로 자연스러운 모습을 보여주는 앱을 만들기 위해서 구동 시에 해당 디바이스에 대한 정보를 가져와서 그에 맞는 UI를 구성할 수 있다.

 
 

먼저SplitView
컨트롤을 사용하면 스크린 크기에 따라 유연하게 콘텐트 레이아웃 형태를 변경할 수 있다. 컨트롤은 아래 이미지에서처럼 왼편의 네비게이션 바와 우측의 콘텐트 영역으로 나누어진다. 네이게이션 바는 화면 크기가 작아졌을 때는 내용 없이 아이콘만 나타나며, 상단의 세 줄로 된(햄버거 모양의) 버튼을 클릭하면 메뉴가 펼쳐진다. 반응 형으로 작성된 웹 페이지에서와 유사한 방식이다.

<그림 1> SplitView 컨트롤 예제

 

그리고RelativePanel컨트롤은새로운 레이아웃 컨트롤이며 다른 컨트롤이나 컨테이너에 맞춰서 콘텐트를 배치할 수 있게 한다. 다양한 스크린 크기나 방향에서 동작하는 맞춤형(Adaptive) 페이지를 개발 시에 특히 잘 활용될 수 있다. Panel자체나 sibling에 대해서 왼쪽, 오른쪽, 중앙, 위아래 등으로 위치를 맞출 수 있다. 아래 이미지는 파란색 사각형의 아래, 왼쪽으로 맞춤을 한 것이다.

<그림 2> Relative Panel 구성 및 XAML 예제

또한 기존에XAML에서 자동으로 스크린 크기 같은 환경적인 요인을 감지하기 위해 사용된 Adaptive Triggers 는UAP에서는 Visual State부분에서 향상된 것으로 Setters는 Properties와 분리해서 설정할 수 있고, Triggers는 특정 state가 적용 되는 시점을 선언할 수 있게 되었다. Adaptive Triggers는 RelativePanel 컨트롤과 같이 사용해서 UAP에서 맞춤형(Adaptive) UI를 만드는 게 쓰이는 강력한 도구이다.

 
 

Communication

 
 

UAP에서는 앱 간에 통신을 하는 새로운 방법들이 추가 되었다. App-to-App Communication을 통해서URI Activation을 통해서 특정 앱을 불러내거나 파일을 보낼 수 있고, 해당 URI를 처리할 앱의 설치 여부를 확인할 수 있다. 또한 다른 앱으로 부터 결과 값을(Results) 받아오는 동작을 할 수도 있다. 그리고 같은 퍼블리셔가 배포한 앱 간에는 저장소 폴더를 공유할 수도 있다.

 
 

<그림 3> Windows 10의 App 간 통신 방식

 
 

App Services는 어떤 스토어 앱이 다른 스토어 앱에게 서비스를 제공하는 것이다. 이는 내장된 플랫폼 앱 뿐만 아니라 일반 개발자가 만든 앱 간에도 가능하다. 동작 시 클라이언트 앱이 요청을 하면, 서버 역할을 하는 앱에 있는 Background Task가 응답한다. 클라리언트와 서버 모두 메시지를 주고 받을 수 있다.

<그림 4> Windows 10 의 App Service 동작 방식

 
 

앱 서비스는 클라이언트가 요청한 서비스가 활성화 되어 있는 동안 시스템에서 동작하게 된다. 클라이언트가 연결을 끊거나 중지하는 메시지를 보낼 수 있으며, 디바이스의 리소스가 부족해도 서비스가 중지 될 수 있다. 그리고 앱서비스는 REST 웹 서비스 모델에 기반해서 디자인되어 있다.

 
 

Platform Features

   
 

많은 앱에서 지도 서비스를 사용한다. 모든 UAP에서 기본적으로 탑재된 Maps 컨트롤과 Maps 서비스 API를 사용할 수 있다. MapControl에서는 이미지나 텍스트 등을 지도 상에 표시할 것이 (아래 이미지의 오른편 같이) 많을 경우 MapIcon을 사용할 수 있고, 몇몇 개의 위치를 표시 하거나 할 때에는 MapItemsControl을 쓸 수 있다. 그리고 TileSource를 이용해서 기본 맵에 타일화된 이미지를 겹쳐서 보여주거나 다른 소스들을 같이 사용할 수 있다.

 
 

<그림 5> Windows 10의 Maps 컨트롤

 
 

Windows 10은 디바이스에 따라서 Pen으로 정교한 입력을 할 수도 있고, 혹은 터치스크린을 통해 손가락 터치를 인식할 수 있다. Windows 10에서 Pen & Ink 기능은 모든 디바이스에서 빠르게 반응하며 압력 센서 및 손바닥 감지 그리고 손가락 글쓰기 등을 제공한다. XAML에서 InkCanvas 를 사용하며, InkPresenter API로 Ink Stoke 속성 설정, 저장 및 복구, 선택 및 편집, 손글씨 인식 등을 처리한다.

 
 

<그림 6> 메일 앱에서 Ink 사용 예

 
 

Windows 8.x 에서 앱에 대한 알림 메시지는 앱 타일을 통해서 표시할 수 있었다. 그리고 Windows Phone 8.1부터는 Action Center에서도 이 같은 알림을 확인할 수 있게 되었고, 이제 PC용 Windows 10 에도 액션 센터가 생겼다.

 
 

<그림 7> Windows 10 Phone 및 PC에서의 Action Center

   
 

알림 내용에 접근하는 방식이 늘어남에 따라서 앱, 액션센터 그리고 타일에서 일관된 형태로 정보를 주고 동작하는 것이 필요하다. 이를 위해 알림 메시지에 태그를 달거나 그룹을 지정 할 수 있고, 혹은 알림 시간을 지정하거나 임의로 알림을 제거할 수도 있다. 또 타일에는 표시되지 않고 액션 센터에만 나오도록 하는 Ghost Toast를 활용할 수도 있다.  

    
 

이 외에 플랫폼 적인 측면에서 앱과 앱 간에 드래그앤 드랍이 지원되게 되며, 데이터바인딩 성능 향상을 위해 컴파일 시점에 바인딩을 할 수 있다. 그리고 Transform3D를 통해 GPU를 사용하여 move, size, angle, shape 등을 변형할 수 있다. 아래는 scene의 구성 예이다.

 
 

<그림 8> Transform3D 구성

 
 

Web Platform

   
 

웹과 관련해서 플랫폼 간 더 높은 상호 운용성을 제공하기 위해서 Windows 10에서는 EdgeHTML 렌더링 엔진만을 탑재한 Project Spartan 브라우저를 제공한다. Spartan 브라우저는 모든 Windows 10 디바이스에서 동일하게 동작한다.

 
 

<그림 9> Project Spartan의 EdgeHTML 랜더링 엔진

 
 

그리고 PC용 Windows 10에 같이 포함된 Internet Explorer의 경우는 기본은 EdgeHTML 렌더링 엔진으로 동작하지만, ActiveX나 BHO가 필요한 사이트의 경우 호환성 모드로 동작할 수 있다.

<그림 10> Windows 10의 Internet Explorer의 기본 및 호환성  모드

 
 

EdgeHTML 랜더링 엔진에는 HTML5 관련한 새롭고 업데이트된 기능들이 포함되어 있다. 아래 표의 내용 외에도 2000개가 넘는 상호 운용성 관련한 개선 사항이 포함되어 있다.

<그림 11> HTML5 관련하여 적용된 향상된 기능들

 
 

이 외에도 웹을 앱 형태로 동작하게 하는 부분들에 대한 향상이 많이 이루어질 예정이다.