그간 네트워크 관련 작업은 인디(Indy)에 의존하고 있었다. 하지만, 멀티플랫폼 환경(Android, Bada, iOS 등)에서 이식성을 생각하자면 아무래도 부족한 점이 많다. 하여 개인적으로 사골처럼 우려먹을 수 있는 네트워크 프레임워크를 구현하기로 마음 먹었다. 일단, 1차 결과물로 기본적인 뼈대 정도를 뽑아보았다.(델파이의 내장된 투게더의 결과물이 마음에 들지않아 자바용 UML 툴로 다이어그램을 그렸다. ㅠㅠ 덕분에 Object Pascal 과 Java 가 뒤섞인 다소 이상한 형태의 클래스 다이어그램이다.)
최초 작업은 Delphi XE2 로 윈도우즈 기반 환경이다. 대용량 접속 처리를 위해 IOCP 기반으로 하였고 demulitiplexing 및 dispatch 처리를 위하여 Asynchronous 기반의 Proactor 패턴을 사용하였다.
쓰레드풀은 Leader-Followers 패턴으로 구현하였고 Unbound thread set 이다. Proactor 는 싱클턴(Singleton) 처리하였다. 다른 OS 환경에서의 지원을 위하여 Proactor 에 Bridge 패턴을 적용할 계획이다. 물론, ACT 패턴도 적용하였다.
포인터 기반이고, TIOContext 의 Overlapped 는 IOCP 와의 연계를 위한 구조체이다. ACT 를 통하여 demultipexing 및 dispatch 가 용이하게 되었는데~ 이때 연결되는 핸들러는 Template Method 로 구현하여, 특정 서버 동작에 해당하는 핸들러를 쉽게 추가할 수 있도록 하였다.
샘플로 간단한 TCP 서버와 UDP Multicast Listener 를 구현하여 동작 점검하였다.
앞으로 Mac OS 및 Bada 에서 작동할 수 있도록 작업하며 살을 붙여나갈 생각이다. 리눅스의 epoll 을 붙여보고 싶긴 한데 아마도 가장 마지막에 시도해보지 않을까 싶다.
최초 작업은 Delphi XE2 로 윈도우즈 기반 환경이다. 대용량 접속 처리를 위해 IOCP 기반으로 하였고 demulitiplexing 및 dispatch 처리를 위하여 Asynchronous 기반의 Proactor 패턴을 사용하였다.
쓰레드풀은 Leader-Followers 패턴으로 구현하였고 Unbound thread set 이다. Proactor 는 싱클턴(Singleton) 처리하였다. 다른 OS 환경에서의 지원을 위하여 Proactor 에 Bridge 패턴을 적용할 계획이다. 물론, ACT 패턴도 적용하였다.
포인터 기반이고, TIOContext 의 Overlapped 는 IOCP 와의 연계를 위한 구조체이다. ACT 를 통하여 demultipexing 및 dispatch 가 용이하게 되었는데~ 이때 연결되는 핸들러는 Template Method 로 구현하여, 특정 서버 동작에 해당하는 핸들러를 쉽게 추가할 수 있도록 하였다.
샘플로 간단한 TCP 서버와 UDP Multicast Listener 를 구현하여 동작 점검하였다.
앞으로 Mac OS 및 Bada 에서 작동할 수 있도록 작업하며 살을 붙여나갈 생각이다. 리눅스의 epoll 을 붙여보고 싶긴 한데 아마도 가장 마지막에 시도해보지 않을까 싶다.
반응형
'개발일지 > 아키텍트' 카테고리의 다른 글
FPC 에서 Leader-Follower 패턴 구현 (0) | 2012.03.09 |
---|---|
POSA, 패턴 시스템 (0) | 2012.02.14 |
POSA2, ACT 패턴 (0) | 2012.02.08 |
GoF, Command 패턴 (0) | 2012.02.08 |
POSA, Forwarder-Receiver 패턴 (0) | 2012.01.31 |
댓글