2010년 9월 9일 목요일

Programming Model for Developers - 들어가기...

Programming Model for Developers
                             
개발자를 위한 프로그래밍 모델에 대한 내용은 아래처럼 구성되어 있다.

 Brew MP architecture
 Coding
 Brew MP APIs
 Brew MP application files

How Brew MP relates to BREW

BREW는 전통적으로 번들(application platform, SDK, 배포 시스템)형태로 End-to-end 형태로 서비스를 제공해 왔다. 사업자는 BDS(BREW Distribution System) 를 배치하여 어플리케이션을 배포해 왔으며 Qualcomm uiOne SDK, uiOne HDK, BREW UI Widget을 포함하는 다수의 제품을 릴리즈해 오고 있다.

반면에, Brew MP는 오픈 어플리케이션, 오픈 서비스 플랫폼으로서 디바이스 능력을 확장 시키는데 포커싱 하고 있다. Brew MP는 디바이스의 전 레이어에 걸쳐 더 많은 더 세세한 APIs를 제공 한다. 전통적인 BREW의 요소(uiOen, Widgets)들을 융합하고, OS 기능, Flash 그리고 Window Management 관련된 기능을 추가로 제공한다.

User 모드의 경우 Brew MP1.1+ 까지는 Full Support가 되지 않으므로 주의 하기 바란다.

Brew MP SDK tool BREW Tool과의 관계는 Tools for Veteran Developers Tools for Newbies를 참고 하기 바란다.

Applications and extensions

Brew MP 어플리케이션은 적어도 하나의 Applet 클래스(IApplet 인터페이스의 구현되며, BREW Shell 또는 쓰레드에 로드 되고 실행 될 수 있는) 독립적인 소프트웨어 패키지이다.

Brew MP 익스텐션은 하나 혹은 그 이상의 non-Applet 클래스 인터페이스(확장된 기능을 사용하는 어플리케이션이 사용하는) 이다. 익스텐션의 개념은 PC 어플리케이션에서의 소프트웨어 플러그 인 과 유사한 개념이다. 더 자세한 사항은 in-process classes 에서 다룰 것이다.

어플리케이션과 익스텐션의 관계



익스텐션과 어플리케이션과의 가장 큰 차이점은 익스텐션내의 클래스는 가상 펑션 테이블 (virtual function table)을 다른 외부 클래스를 위해 반드시 노출 시켜야 한다. 익스텐션내의 클래스는 UI가 없이 구현 될 수 있는 이는 익스텐션을 호출하는 어플리케이션의 UI를 사용하기 때문이다.

어플리케이션은 IShell_CreateInstance() 또는 IEnv_CreateInstance를 통해 익스텐션의 클래스 인스턴스를 생성 할 수 있다. 인스턴스가 생성된 이후 각 클래스의 펑션들은 헤더에 선언되어 있는 매크로를 통해 억세스 할 수 있다.

어플리케이션은 특별한(?) 어플리케이션 프로세스내에서 호스팅되고 아래에 기술 되어 있는 어플리케이션 라이프 사이클을 관장하는 어플리케이션 디스패처 메커니즘에 의해 제어된다.
-       Startup
-       Event & Notification processing
-       Suspend/resume
-       Shutdown

익스테션은 non-applet 클래스를 포함하는 소프트웨어 패키지 또는 모쥴로 정의된다. 그 의미는 이런 클래스들은 in-process 클래스 혹은 service 클래스가 된다는 것이다. In-process, service 클래스 둘 다 public APIs(interfaces)를 노출하여야 한다. In-process 클래스는 콜러 (caller) Code 확장이라 생각 할 수 있고, service 클래스는 고유의 기능을 제공하는 백그라운드 시스템 프로세스로 생각 할 수 있다.

Brew MP는 시스템 서비스 형태로 고유의 기능들을 노출 하도록 되어 있다. Stub, Skeleton 전송(transport) 모델을 강화 함으로서, 아래 그림처럼 service class는 커널 프로세스 또는 고립된 유저 모드 프로세스에서 실행될 수 있다.


Service 클래스 및 in-process 클래스에 대한 자세한 내용은 Classes 절에서 다룰 것이다

댓글 없음:

댓글 쓰기