2008년 05월 29일
Mac OS X FrameWork 살펴보기
08.05.29.목
FrameWork의 리팩토링에 대해 생각하던 중, 예전 IPhone SDK 발표 동영상에서 언 뜻 보았던 Mac OS X Architecture가 생각났다. 상당히 괜찮았던 것 같아서 FrameWork에 대한 아이디어를 얻을 수 있을 까 해서 한번 살펴보았다.
OS X는 크게 4개의 레이어로 구성된다.
Cocoa or CocoaTouch
Media
Core Service
Core OS
음, 상당히 깔끔해 보인다. 각각에 대해 좀더 세부적으로 살펴보자.
Core OS 는 가장 핵심이 되는 레이어로, 어떤 군더더기 없이 가장 기본이 되는 핵심 기능만 모아 놓은 레이어다. Core OS의 세부사항은 다음과 같다.
OS XKernel
Lib System
BSD TCP/IP
Sockets
Security
Power Management
KeyChain
Certificates
FileSystem
Bonjour
Core Service는 사용자를 전혀 고려하지 않고, 기능 위주로 구성된 Core OS를 좀더 편히 사용할 수 있도록 해주는 역할을 하는 듯 보인다. Network나 File Access등은 CoreOS의 기능들을 가져다 구성했을 것이다. 때문에 Core OS와 밀접한 관계를 가졌지만 일방적으로 사용하여 인터페이스를 구성해줄 뿐, Core Service가 Core OS에 어떤 영향을 미치는 일은 없을 것이다. Core Service의 세부적인 사항은 다음과 같다.
Collections
Address Book (DB)
Networking
File Access
SQLite (DB)
Core Location
Net Services
Threading
Preferences
URL Utilities
Media는 그 세부사항을 보면 금방 알 수 있듯이 Audio, Graphic 등 좀더 멀티미디어적인 구현에 중점을 둔 레이어이다. 물론 Media레이어에서도 파일 액세스 등은 Core에서 제공하는 서비스를 이용하겠지만 만일 멀티미디어적인 기능이 필요하다면 Media 레이어 쪽으로 접근해야 할 것이다. 게임등을 만들 때는 가장 중요한 레이어 중 하나다.
Core Audio
OpenAL
Audio Mixing
Audio Recording
Video Playback
JPG, PNG, TIFF
PDF
Quartz(2D)
Core Animation
OpenGL ES
Cocoa Touch는 TouchScreen이 주 입력 매체인 IPhone, IPod Touch를 위한 레이어다. 일반 Mac은 그냥 Cocoa다. 이레이어의 주 임무는 유저 인터페이와 관련이 되어있다. 입력이나 카메라 등등, 유저의 눈과 손이 직접 맞닿는 부분으로, 유저의 입력과 장치들간의 관계를 담당한다.
Multi-Touch Events
Multi-Touch Controls
Accelerometer
View Hierachy
Localization
Alerts
Web View
People Picker
Image Picker
Camera
전체적인 느낌은 상당히 깔끔하고 기능별 분화가 잘되어 있다는 것이다. 이프레임워크를 응용한다면 Core OS 직접적인 OS 커널이므로 아마 Core Service레벨부터 설계하면 될 듯 하다. 또, 일반적으로 인풋 시스템은 CoreService레벨에 붙어 있는 경우가 많은대 그 부분을 분리하여 가장 최하위 단계에 둔 것도 독특하다. 아마도 저 인풋 시스템이 Core Service 쪽에 붙어 있었다면 IPhone SDK를 위해 CoreService를 고쳐야 하는 일이 발생했을 텐데, 재치있게 분리해 놓음으로써 가장 상위레벨인 Cocoa만 고치면 되었다. 상당히 잘 설계된 프레임 워크라 생각한다.
FrameWork의 리팩토링에 대해 생각하던 중, 예전 IPhone SDK 발표 동영상에서 언 뜻 보았던 Mac OS X Architecture가 생각났다. 상당히 괜찮았던 것 같아서 FrameWork에 대한 아이디어를 얻을 수 있을 까 해서 한번 살펴보았다.
OS X는 크게 4개의 레이어로 구성된다.
Cocoa or CocoaTouch
Media
Core Service
Core OS
음, 상당히 깔끔해 보인다. 각각에 대해 좀더 세부적으로 살펴보자.
Core OS 는 가장 핵심이 되는 레이어로, 어떤 군더더기 없이 가장 기본이 되는 핵심 기능만 모아 놓은 레이어다. Core OS의 세부사항은 다음과 같다.
OS XKernel
Lib System
BSD TCP/IP
Sockets
Security
Power Management
KeyChain
Certificates
FileSystem
Bonjour
Core Service는 사용자를 전혀 고려하지 않고, 기능 위주로 구성된 Core OS를 좀더 편히 사용할 수 있도록 해주는 역할을 하는 듯 보인다. Network나 File Access등은 CoreOS의 기능들을 가져다 구성했을 것이다. 때문에 Core OS와 밀접한 관계를 가졌지만 일방적으로 사용하여 인터페이스를 구성해줄 뿐, Core Service가 Core OS에 어떤 영향을 미치는 일은 없을 것이다. Core Service의 세부적인 사항은 다음과 같다.
Collections
Address Book (DB)
Networking
File Access
SQLite (DB)
Core Location
Net Services
Threading
Preferences
URL Utilities
Media는 그 세부사항을 보면 금방 알 수 있듯이 Audio, Graphic 등 좀더 멀티미디어적인 구현에 중점을 둔 레이어이다. 물론 Media레이어에서도 파일 액세스 등은 Core에서 제공하는 서비스를 이용하겠지만 만일 멀티미디어적인 기능이 필요하다면 Media 레이어 쪽으로 접근해야 할 것이다. 게임등을 만들 때는 가장 중요한 레이어 중 하나다.
Core Audio
OpenAL
Audio Mixing
Audio Recording
Video Playback
JPG, PNG, TIFF
Quartz(2D)
Core Animation
OpenGL ES
Cocoa Touch는 TouchScreen이 주 입력 매체인 IPhone, IPod Touch를 위한 레이어다. 일반 Mac은 그냥 Cocoa다. 이레이어의 주 임무는 유저 인터페이와 관련이 되어있다. 입력이나 카메라 등등, 유저의 눈과 손이 직접 맞닿는 부분으로, 유저의 입력과 장치들간의 관계를 담당한다.
Multi-Touch Events
Multi-Touch Controls
Accelerometer
View Hierachy
Localization
Alerts
Web View
People Picker
Image Picker
Camera
전체적인 느낌은 상당히 깔끔하고 기능별 분화가 잘되어 있다는 것이다. 이프레임워크를 응용한다면 Core OS 직접적인 OS 커널이므로 아마 Core Service레벨부터 설계하면 될 듯 하다. 또, 일반적으로 인풋 시스템은 CoreService레벨에 붙어 있는 경우가 많은대 그 부분을 분리하여 가장 최하위 단계에 둔 것도 독특하다. 아마도 저 인풋 시스템이 Core Service 쪽에 붙어 있었다면 IPhone SDK를 위해 CoreService를 고쳐야 하는 일이 발생했을 텐데, 재치있게 분리해 놓음으로써 가장 상위레벨인 Cocoa만 고치면 되었다. 상당히 잘 설계된 프레임 워크라 생각한다.
# by | 2008/05/29 12:24 | dev diary - release | 트랙백(1) | 핑백(1)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : 내 손안의 PC - 자바가 구원투수가 되어야 하지 ..
세상은 카메라/GPS/3G Network을 탑재한 애플의 iPhone, 구글의 Android폰을 기점으로 완전히 새로운 세상으로 바뀌고 있습니다. ...more
... 해야 한다. 그런 의미에서 얼마전에 Mac OS X의 아키텍쳐를 분석해 보았는대, 단순한 듯 하면서도 각 객체를 4단계 레이어로 나눈 것이 매우 합리적이었다. Mac OS X 아키텍쳐 분석 그래서 Mac OS X의 아키텍쳐를 참고하여 한번 프레임 워크를 설계 해보았다. OS와 어플리케이션이라는 근본적인 차이로 인해 똑같이 적용시킬 순 없겠지 ... more