37
Visual Studio 2012 를 를를를 를를를를를 를를 를를를를를를 를를 . - iOS, 를를를를를 , Windows, HTML5 를를를를를를 를를를 를를를 를를를 를를 | http://blogs.msdn.com/jspark 를를 를를를를를를 | 를를를를를를를를를

Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

Embed Size (px)

DESCRIPTION

서론: 현재의 다양한 플랫폼 상황 본론: 마이크로소프트 플랫폼 관점의 멀티플랫폼 접근 방법 1. C#과 VS로 이기종 플랫폼 개발: Mono 2. MVVM 로 공통 모듈을 재활용한 크로스 플랫폼 개발: MonoCross 3. 마이크로소프트 멀티 플랫폼 솔루션 개발: Portable Class Library 4. 서버 쪽도 클라이언트 개발처럼: Azure Mobile Service & ASP.NET Web API 결론: 마이크로소프트 솔루션 확장으로 멀티 플랫폼 대응

Citation preview

Page 1: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

Visual Studio 2012 를 활용한 멀티플랫폼 대상 애플리케이션 개발.

- iOS, 안드로이드 , Windows, HTML5 애플리케이션 개발을 한번에

박중석 과장 | http://blogs.msdn.com/jspark기술 에반젤리스트 | 한국마이크로소프트

Page 2: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

기존의 사용자 플랫폼 환경(Windows)다양한 윈도우 버전Windows 95, Windows 98, Windows MEWindows NT, Windows 2000, Windows XPWindows Vista, Windows 7, Windows 8Window Mobile, Windows Phone,

Page 3: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

다양한 플랫폼의 등장아이폰

스마트폰 활성화 견인앱스토어 생태계 구축멀티터치 UI 발전 …

안드로이드다양한 제조사의 다양한 디바이스 ( 화면 크기 등 )현재 세계 시장 점유율 1 위 … .

윈도우폰기존 Windows OS 시장의 장점을 활용

마이크로소프트는 운영체제 개발 및 관리HW 디바이스는 여러 제조사가 만듦

기존 Windows 개발자가 편리한 개발 환경Visual Studio 개발툴 .NET Framework 활용

Page 4: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

앱 개발 시에 멀티 플랫폼을 고려한다면…개발언어 다름

Objective C, Java, C++, C#, HTML5

개발도구 다름xcode (on Mac), Eclipse, Visual Studio

사용자 UI 다름Back 버튼 & 메뉴 버튼 유무 등

Page 5: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

멀티 플랫폼 문제의 해결을 위한 시도PhoneGap 과 같은 웹 앱 솔루션

Hybrid 형태로 HTML5 를 이용한 웹 앱을 구현

단점HTML5 를 활용해야 하므로 기존 개발 언어에 비하면 생산성이 떨어짐 Native 앱에 비하면 성능이 떨어질 수 있음 ( 최적화 어려움 ) e.g. facebook app

Page 6: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

같은 언어와 도구로 멀티 플랫폼용 Native 앱을 만들 수는 없을까 ?

자바와 이클립스 ?

C/C++ 과 컴파일러 ?

Page 7: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

1. 같은 언어와 도구를 사용해서 멀티 플랫폼 Native 앱을 만들려면 ?

Page 8: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

모노 (mono)크로스 플랫폼 , 오픈 소스 .NET 개발 프레임 워크

Page 9: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

모노 Touch & 모노 for Android – Xamarin

monofor Android

for

Page 10: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

Mono(Xamarin) 의 기능과 성능iOS 와 Android UI 와 API 에 완벽히 접근Native 바이너리를 통한 높은 반응성

앱 개발 사례

Infinite Flight TouchDraw Rdio

게임 분야에서는 MonoGame, Unity 등에서 활발히 사용 중

Page 11: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

개발 도구 편의성UI 구성 편리C# 언어로 iOS 와 Android API 로 코드 완성 디바이스나 시뮬레이터에서 쉽게 디버깅Visual Studio 나 자체 (Xamarin) 크로스 플랫폼 IDE 활용

Page 12: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

Xamarin.iOSMono Touch

C# 으로 아이폰 , 아이패드 앱 개발높은 성능 (Native 바이너리로 컴파일 됨 )애플의 API 와 UI 컨트롤에 완벽히 접근.NET 프레임워크 활용

Xcode 활용한 디자인 가능(C# 으로 직접 그리는 것도 가능 )

Page 13: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

Xamarin.AndroidMono for Android

C# 으로 안드로이드 앱을 개발안드로이드 API 와 UI 컨트롤에 완벽한 접근.NET 프레임워크 활용

안드로이드 디자이너Visual Studio 에서 컨트롤 드래그앤 드롭 가능스크린 크기 지정 , 회전 , 버전 타겟 가능표준 안드로이드 XML 저장

Page 14: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

Visual Studio 플러그인을 통한 개발C# 언어를 최우선으로 지원

자동 완성 , 디버깅 , UI 디자인 가능

Page 15: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

데모

Page 16: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

같은 언어와 도구로 개발 할 수 있지만…여전히 멀티 플랫폼 용으로 솔루션을 각각 만들어야 하는가 ?

공유할 코드 (e.g., Data 관련 Business 로직 ) 를 만들면 될 것 같은데 각각 알아서 해야 할까 ?

Presentation Layer 에서도 각 플랫폼에 특화된 내용의 코딩을 줄일 수 있는 방법은 없을까 ?

Page 17: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

2. 멀티 플랫폼에서 개발한 코드를 최대한 재 활용 하려면 ?

Page 18: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

모노크로스 (Monocross)C# .NET 그리고 모노를 사용하는 오픈 소스 크로스 플랫폼 모바일 프레임워크

대상 : 아이폰 , 아이패드 , 안드로이드 , 윈도우폰 , 웹킷 기반의 폰

Page 19: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

특징비즈니스 로직을 쉽게 공유 할 수 있도록 프레임워크 제공Native 와 HTML5 앱 모두에 활용 가능

Page 20: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

구조MVC(Model-View-Controller) 패턴을 활용

Page 21: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

iFactr (from ITR Mobility)iFactr – 모토크로스를 기반으로 엔터프라이즈 급 UI 추상화와 데이터 동기화를 제공할 수 있도록 만든 프레임 워크

Page 22: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

데모

Page 23: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

3. 마이크로소프트의 플랫폼 사이의 개발에서는 어떻게 할까 ?

Page 24: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

.NET 플랫폼마이크로소프트 플랫폼 간에도 유사한 접근이 필요할 수 있음

Page 25: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

포터블 클래스 라이브러리 (Portable Class Libraries)

하나의 소스하나의 프로젝트하나의 바이너리

멀티 플랫폼 지원 가능

Page 26: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

Model-View-View Model (MVVM)ViewsXAML 로 작성된 정보를 보여줌

View Models어떤 정보를 보여줄 지정보 교류의 흐름 관리

Models데이터 객체 (Data objects)비즈니스 로직 (Business logic)그 외 .

Model

View Model

View 플랫폼 특화 부분

재활용 가능한 부분(Portable)

참조 (References)

데이터바인딩 (Databinds)

Page 27: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

마이크로소프트 멀티 플랫폼 앱 구조 예

Startup

Views

윈도우스토어 앱

플랫폼 특화 기능

View Models

Models

포터블 클래스 라이브러리

플랫폼 특화 기능

Startup

Views

윈도우폰 앱

플랫폼 특화 기능

참조 참조

Page 28: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

데모 : PCL

Page 29: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

4. Server 쪽도 Client 와 같은 언어와 도구로 개발하려면 ?

Page 30: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

멀티 플랫폼 앱에서 서버 접근

iOSAndroid

Windows

Cloud

Windows Phone

Page 31: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

모바일 앱 관련 서버 쪽에서 필요한 작업들

데이터 저장

알림 ( 푸시 등 )

사용자 인증

서버 로직 ( 웹 서비스 등 )

서버 용량 확장

로깅 ( 서버 기록 조사 )

진단 ( 상태 값 확인 )

Page 32: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

윈도우 애저 모바일 서비스모바일 클라이언트에서 자주 사용 되는 서버 쪽 개발에 최적화 된 클라우드 서비스

Page 33: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

멀티 플랫폼과 통신할 서버를 직접 구축하고자 한다면…‘ASP.NET Web API’ 고려

닷넷을 활용해서 HTTP 서비스를 쉽게 개발할 수 있는 프레임워크

브라우저 , 모바일 기기를 포함한 광범위한 클라이언트 대상닷넷 프레임워크 기반에서 RESTful 앱을 개발시에 최적

Page 34: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

데모 : 윈도우 애저 모바일 서비스 & ASP.NET Web API

Page 35: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

결론마이크로소프트 플랫폼의 확장을 통하면 멀티 플랫폼에서 구동되는 Native 앱 개발을 한번에 하기 용이 !

멀티 플랫폼 대상 앱을 개발 시엔 마이크로소프트의 플랫폼과 도구를 적극 고려 !

Page 36: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

관련 링크Xamarin

http://xamarin.com/

Monocrosshttp://monocross.net/

IFactrhttp://ifactr.com/

Portable Class Libraryhttp://msdn.microsoft.com/en-us/library/vstudio/gg597391(v=vs.110).aspx

Azure Mobile Servicehttp://www.windowsazure.com/en-us/develop/mobile/

ASP.NET Web APIhttp://www.asp.net/web-api

Page 37: Visual Studio를 활용한 멀티플랫폼 대상 애플리케이션 개발

감사합니다 .박중석 | 한국마이크로소프트[email protected] http://blogs.msdn.com/jspark