본문 바로가기
Education/Bit 18th

윈도우 모바일 어플리케이션 개발

by ★용호★ 2009. 12. 9.

.NET 컴팩트 프레임워크의 특징

C# 과 VB.NET 언어는 사실 언어만으로써 장점을 가지지 않는다. 바로 .NET CLR 이라는 메인 런타임을 가진 .NET 프레임워크가 있어야 함께 동작한다. 다시 말해 .NET CLR이 C# 과 VB.NET 언어로 생성한 응용 프로그램을 실행시켜 준다.

한편 윈도우 모바일 어플리케이션도 이와 같이 .NET CLR에서 동작되는 데, 이러한 것을 담당하는 것이 바로 .NET 컴팩트 프레임워크 이다. .NET 컴팩트 프레임워크(이하 .NET CF로 표기)는 데스크탑/서버의 .NET 프레임워크의 모바일 버전으로써 윈도우 모바일에 필요한 기능만 탑재되어 있다.

그러나 닷넷CF의 가장 큰 장점은 기존의 비관리형 코드에서 CPU에 종속되어 컴파일 하던 것이 ‘추상 플랫폼 레이어(APL)’을 통하여 .NET CF만 설치되어 있으면 CPU에 관계 없이 모바일 응용 프로그램을 개발 및 배포를 할 수 있다. 따라서 이러한 것은 플랫폼 탈피를 해서 포켓PC용으로 만든 코드를 간단히 UI만 변경하여 스마트 폰 이나 커넥트 카 시스템과 같은 다른 윈도우 모바일 응용 프로그램으로 발전시킬 수 있는 큰 장점을 가진다.

결론적으로 이제 윈도우 모바일 응용 프로그램은 하나의 플랫폼만 설정하는 것이 아니라 .NET CF가 지원하는 모든 플랫폼을 지원하기 위해 화면 UI 와 비즈니스 데이터 처리 등을 별도로 분리해서 개발하는 것이 당연시 된다. 결국은 개체 지향 기법(OOP)으로써 컴포넌트의 재활용성을 십분 발휘하게 되는 모습이다.

.NET 컴팩트 프레임워크의 UI
지난 2004년 1월에 필자는 마이크로소프트 .NET Advisor 컬럼에서 ‘.NET CF를 기업에서 사용해야 하는 10가지 이유’에 대해 역설했다. IT 개발 현장에서 속칭 ‘삽질’이라 불리우는 처음부터 끝까지 응용 프레임워크 도움 없이 비즈니스 로직을 파악하여 작성하는 것과 응용 프레임워크에서 솔루션을 가지고 개발하는 것은 차이가 크다고 설명했다.

이것은 2002년도 하반기에 필자가 L사의 영업/물류/생산 PDA 시스템을 개발하면서 체험했던 결과이다. 그 당시 .NET CF 바탕으로 시작된 프로젝트는 국내 최초로써 다른 회사들은 아직 EVC++의 MFC로 UI를 개발하며 CDB이나 ISAM 파일을 모바일 데이터 베이스 으로 사용하고 있을 시점에서, 필자와 필자 회사에서는 과감히 VS 2003의 .NET CF와 SQLCE 를 도입해서 윈도우 모바일 응용 프로그램을 개발했던 것이 오늘날 모바일 개발 업체 들에서 간에서 기술적 경쟁 우위를 점유하지 않았나 싶다.

그림에서는 .NET CF에서 대표적으로 사용할 수 있는 사용자 인터페이스(UI) 프로그램이다. 실행 파일과 소스는 부록으로 제공하겠으니 VS 2003을 가지고 있는 독자라면 실행 해보기 바란다. 또한 .NET CF에서 지원하는 사용자 인터페이스 컨트롤은 기본적으로 윈도우 공통 컨트롤이 지원하는 것과 비슷하다.

그러나 윈도우 모바일에서는 데스크탑의 메모리와 기능을 모두 사용할 수 없으므로 몇 가지 메서드들이 누락된 것이 있다. 이러한 것들은 반드시 MSDN 문서에서 찾아서 확인 해보기 바란다. 처음 .NET CF 으로 프로그래밍 하는 독자들이 가끔 그 기능성이 너무 제약이 많아 쓰기가 불편하다고 호소하는 사람들이 있다.

.NET CF 가 버전 1.0 밖에 안되니 기본적인 기능 외 에는 모두가 WinCE API의 힘을 빌려올 수 밖에 없다. 혹은 .NET CF 가 윈도우 모바일 응용 프로그램을 개발하는 데 있어서 만병 통치 약(?)쯤 생각하는 사람들도 있다.

앞써 필자가 이야기 했듯이 .NET CF의 주 목적은 공통적인 UI로 인한 빠른 생산성과 더불어 CPU나 플랫폼에 종속하지 않고 배포하여 사용할 수 있는 장점을 가진다고 했다. 따라서 바코드 스캐너와 프린터, MSR과 같은 장치에 의존되는 SDK들은 WinCE API에 기반할 수 밖에 없다.

이런 한계점을 관리형 코드로써 프레임워크로 미국 Embedded MVP들 주측으로 OpenNETCF 프로젝트를 2003년에 시작하기 되었다. .NET CF 가 부족한 Open 소스 코드들을 확장적으로 잘 연결시켜 놓았다. OpenNETCF 사이트는 http://www.opennetcf.org 로 접속해서 Smart Device Framework 1.2 버전을 다운로드 받기 바란다.

OpenNETCF 프로젝트의 영향을 받아 대거 소스 코드들이 관리화된 형태로 된 것을 볼 수 있다. 이것은 .NET CF 2.0이 들어있는 VS2005(Windows Mobile 5.0 SDK 포함)에서도 마찬가지이다. 예를 들어 VS2003 에서는 하나의 프로그램을 실행시키는 것은 WinCE API의 CreateProcess 함수를 DllImport 시키는 과정을 거쳐야 하지만 VS2005은 EnableApplicationLauncher 함수 한 번만 호출하면 쉽게 해결 할 수 있으니 얼마나 개발자의 생산성을 도와주는가를 알 수 있다.

참고로 VS2005 에는 더 추가된 내역은 UI적인 컨트롤이야 말로 WinCE API로 제공했던 여러가지 컨트롤을 모두 다 지원해주고 있다. 그동안 오픈 소스 또는 써드 파티 컨트롤로 지원하던 LinkLabel, DateTimePicker, MonthCaledar, WebBrowser 와 Notification 컨트롤 등을 VS2005 에서는 기본적으로 제공해 준다. 특히 HTMLView 컨트롤을 관리형 코드로 지원함으로써 PDA에서 웹과 같은 인터페이스나 컬러를 원하는 분들에게는 더욱더 유연한 코드를 생성하지 않을까 한다.

그리고 내부 프로토콜적으로 웹 서비스가 WSE 2.0을 지원함으로써 명실 상부하게 웹 서비스의 모든 기능을 지원한다. 또한 XML 직렬화(Serialization) 기능으로써 그동안 XML 문서를 읽고 DOM 방식으로 운영하는 데 있어서 불편하고 속도가 느린 점을 한층 더 개선했다. 또한 MQ와 같은 비동기화적인 프로토콜을 지원하므로 메시지 상호 방식에 좀더 성능을 향상 시키는 기능이 더 추가 되었다.

댓글