ACE 라이브러리 쓸만하세요?

akbar의 이미지

요번에 PHP 에서 동작하는 회원메일발송기를 만들어야 될 필요가 있었습니다.
몇만 명 정도의 회원은 PHP 로는 어렵기 때문에 C++ 로 만들어 PHP 에 모듈로 올릴려고 해요 그래서 C++ 로 시작하려다가 문득
ACE 라이브러리가 있었다는 생각이 들었습니다.
C++ 로 소켓을 쓸 때 Window 와 리눅스 등 거의 모든 플랫폼에서 동작하는 공통의 인터페이스를 제공하는 것이 ACE 의 매력이라고 알고 있습니다.
ACE 에 지금 막 입문하려는 입장에서 써보신 분들은 어떤지 고견을 들었으면 합니다.

저 같은 경우는 공개된 라이브러리의 경우 철저하게 제가 분석할 수 없는 것이 아니면 잘 쓰지 않으려는 경향이 있습니다.
그래서 그런가 C++ 의 STL 에서 구현한 알고리즘도 이미 나름대로 구현하여 STL 대신에 그것을 쓰고 있습니다. (작성하는데 시간이 몇달 걸렸네요^^)
남들이 보면 좀 무식하다고 할 것도 같습니다.

ACE 를 써보신 분들은 어떻던 가요.
ACE 에서 구현한 소켓라이브러리 비숫하게
이번 기회에 Window, Linux 양 플랫폼에서 동작하는 소켓라이브러리를 다시 설계한다면 무모한 짓일까요.

mastercho의 이미지

STL 이나 ACE 같은 라이브러를 쓰는 이유는
단순히 좋아서라기보다

말씀 하신것처럼 양 플레폼에서 동작해주는 표준적인 요소를 제공해주기 때문입니다

일단 컴파일러 회사나 , 각 분야의 전문가들이 모여서 만든 이런 라이브러리는 일반적으로 akbar님이 STL이나 ACE를 모방하여 작성하신 라이브러리보다 신뢰할수 있을것입니다
[akbar님을 무시하려는게 아니라 , 각분야의 전문가들이 모여서 만든 코드이며 또한 표준이기 때문에 다른 사람입장에서는 더 신뢰 할수 있다는 의미입니다]

그리고 많은 프로그래머에게 알려졌기때문에 코드의 통일성 및 일관성을 보장할수 있습니다

STL을 쓴 코드는 STL를 아는 사람이라면 누구나 그 코드을 이해하는데 어려움이 적을수 있지만, 단독적으로 혼자 작성한 라이브러리면....... 손수 또 이 라이브러리를 배워야 하는 귀찬느니즘을 동반할수 있습니다
[ 이 방법이 STL보다 뛰어난 방법이라면 모르겠지만 STL을 능가하는 설계가 아니라면 다른 사람들에게는 썩 좋지는 않을거라 보입니다 ]

따라서 ACE나 STL보다 설계적으로나 성능적으로
월등히 뛰어나지 않는다면.....
ACE를 모방한 소켓 라이브러는 의미가 없을것으로
보입니다

저도 멀티 플레폼으로 작성된 소켓 래퍼클래스를 몇 보았는데 ..... 그다지 훌륭하진 않더군요, 한계도 많았고
ACE는 알고리즘이나 설계적인 측면에서 akbar님이 혼자 만드신것보다 월등히 우수할수 밖에 없습니다(같은 인터페이스를 모방하더라도 내부 알고리즘은 알수 없을것입니다.... (아 수정합니다 STL이나 ACE는 오픈 소스이기 때문에 문제는 없겠네요 ))

물론 이런 라이브러를 모방해 설계를 해본다는 측면에서는 스스로에게는 많은 공부가 될테지만.....

다른 사람들과 더블어 사용하기에는 한계가 있지 않나 싶습니다.........

차라리 이런 설계를 배워 다른 프레임 웍을 구성해보시는게 어떨지 싶네요

그럼.....

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

akbar의 이미지

..

sisap의 이미지

몇년전에 리눅스에서 잠깐 써본적이 있는데, 제가 했던 일은 그냥 평범한 작은(?) 서버쪽 일이었는데 그냥 함 공부해 볼겸 해서 ACE를 썼었습니다.

그런데 그냥 막연한 생각에 ACE로 만들고 있는 프로세스가 하는일에 비해 ACE 자체가 넘 무겁지 않나... 즉 배보다 배꼽이 더 큰듯한 느낌이 들더군요.

물론, 앞에 말씀드렸듯이 하는일이 별로 없는 프로세스고, 구조도 심플한 일이었기 때문에 ACE를 굳이 써야할 이유가 없었기 때문에 그런 생각이 들었겠지만..

어쨋든 그때 느낌으로는.. 동시접속량이 많다던가, 부하가 많이 걸리는 서버의 경우는 ACE를 쓰면 오히려 그냥 C프로그램으로 잘 짜는것 보다 오히려 속도(?)라고 해야하나.. 처리능력은 더 떨어지지 않을까 하는 생각이 들던데요..

유지보수 라던가 그런 면에서는 좋겠지만.. 처리능력(?)이나.. 리소스 사용량등을 고려한다면 덩치가 넘 크지 않나요?

어떻게들 생각하시는지요.. 다른 분들의 의견을 좀 듣고 싶은데요..
리플좀 달아 주시면 감사하겠습니다..

그럼, 좋은 하루 되세요 ^^

죠커의 이미지

akbar wrote:
말씀 감사합니다.
제가 STL 을 비슷하게 저 나름대로 구현할 당시에는
모든 자료구조의 메모리 할당을 메모리 풀을 이용하여 구현을 했었고
그 외에도 몇가지 자잘한 기능들을 구성해서 STL 보다는 약간 성능이 우수한 부분도 상당부분 가지게 되었습니다.
그러나 이렇게 되기까지 만든 양에 비해 너무 오랜 시간이 걸렸읍니다.

이제는 윗분 말씀처럼 이런 설계를 배워 다른 프레임 웍을 구성 하는데 더 치중하는 것이 좋을 것 같다는 생각을 해보게 됩니다.

더 좋은 성능과 구현이라면 새로운 stl을 공개해보시는게 어떨까요?
꽤 유용할 것 같은데요 :-)