정말 최적화를 찾기 위해 노력을 했건만... 국내에는 정말 자료가 없더군요..
(해외에도 없는건 마찬가집니다.)
codeproject, codeguru를 다 뒤져봤지만 시도한 흔적조차 없더군요..쩝..
codeproject에는 한 글이 있는데 멀티 스레드를 이용한 서버제작법이라고 나오는데
동기식 스레드 풀링이라는 어이없는 방법을 사용하고 있더군요..
자신이 추천하는 방법이라고 내놓은것 역시...쩝.. (더이상 이야기하지 않겠습니다 왠지 비방인것 같아서리...)
여하튼 결국에는 Winsock2를 사용할때와 같은 구조로 진행했습니다.
아 그리고 MC++ (Managed C++)에 대해서 약간의 오해가 있으신 분들이 있는데
제가 알기로는 .Net 개발툴의 꽃이라면 C#이겠지만 칼은 역시 MC++이라고 생각합니다.
포인터가 없는 C#에서는 아무래도 최적화된 서버 코딩(제가 하는 작업이 이거다 보니)을
할수 없더군요.. Serialize를 이용해서 구조체가 클래스를 데이터화해서 전송하기는 하지만
다른 소켓과의 호환성이라든지, 데이터 사이즈문제가 크게(?) 문제가 됩니다.
즉 기존의 C++의 기능과 CLR을 이용한 모든 기능을 통합해 놓은것을 MC++이라고 생각하시면
됩니다. 덕분에 수많은 기능을 얻었지만.. 잃은것도 상당합니다.
특히 __gc 클래스는 다중상속을 받을 수 없다는것은 치명적입니다. (저는 그렇더군요..)
일단은 뭐 적당히 완성은 했지만 아직 저 자신도 테스트가 끝나지 않아서.. 추천하고 싶은
생각은 별로 없군요..
윈도 서버를 생각하신다면 아직까지는 IOCP가 최선의 선택일것 같습니다.
그럼 이만
|