카테고리 없음

Windows 8 - COM의 역습

wafe 2011. 9. 22. 17:09

"윈도우 8, PC와 태블릿 SW 호환안돼"라는 블로터닷넷 기사를 보고 관심이 생겨 살짝 구글링 하다가 Win 8에 추가되는 Windows Runtime(WinRT) 라는 녀석에 대해 기술적으로 설명한 글이 있어서 공유합니다.

원문 : Microsoft's high-risk Windows 8 .NET switch - Revenge of COM, or something like it


원문을 쓴 사람은 MS가 태블릿 환경에서 아이패드를 따라잡는 것을 가장 중요한 목표로 잡고 있다고 보고 있네요. 그래서 모든 에너지를 WinRT 기반의 메트로 앱과 클라우드 환경에 쏟고 있다고 보고 있습니다. (닷넷과 실버라이트는 뒷전이라는 얘기죠.)

아래 내용은 제가 요약한 버전입니다.



WinRT : COM으로의 회귀(혹은 아주 비스무레한 새로운 녀석)

MS는 터치 인터페이스에 잘 어울리는 기반이 필요했다. 윈폰7에서 닷넷 기반 XNA나 실버라이트를 시험해 봤지만, 결국 새 API 모델을 만든 셈이다.

WinRT는 닷넷에 의존하지 않는다. 닷넷이 등장하기 이전에 윈도우를 구성하던 COM 스타일의 런타임이다. 거기에 닷넷에서 가져온 메타데이터 시스템을 채용하여, .winmd 라는 파일에 메타데이터를 저장한다. 그 덕분에 닷넷, C++, IE 엔진에서 모두 호출할 수 있는 런타임이 되었다. UI는 WPF/Silverlight에서 사용하던 XAML 을 채용했지만, 닷넷 기반이 아니라 Native 로 재작성한 것이다.

메트로 스타일 앱 환경 자체는 실버라이트와 비슷한 보안 모델을 사용하고 있어서 굉장히 제한적이다. 네이티브 DLL을 만들 수 있지만, 역시나 허용한 기능만 사용할 수 있다. 다른 앱과 공유된 익스텐션을 만들 수 없게 되어 있다.  파일 I/O 도 앱 전용 Isolated Storage에 대해서만 허용된다. (거의 애플 iOS 의 어플리케이션 모델과 비슷하게 보이네요.)

메트로 스타일 앱을 위한 UI 시스템은 프로그래머들이 사용하기 쉬우면서도 높은 성능을 제공한다. 모든 화면은 DirectX로 렌더링된다. 또한 비동기 프로그래밍 기능이 아주 쉬워졌다. await 라는 새로운 키워드가 제공되어, 프로그래머는 동기적인 것처럼 간단히 프로그래밍하면 내부적으로는 콜백을 써서 비동기적으로 동작한다.



추가로 InfoQ의 WinRT: An Object Orientated Replacement for Win32 라는 포스트도 참고할 만 합니다.