Library2008. 4. 30. 14:19

일반적으로 NetWork Programming 은 Native API 사용해서 많이 사용해 왔었다.
MFC 에서 지원하는 CSocket, CAysnSocket 이 있기는 하지만 Native API 의 많은 기능을 사용할수 없고,
window 이외에서는 사용하지 못하므로 간단한 윈도우 클라이언트나, 샘플 프로그램 정도에 사용 했었다.

수년전에 ACE 라이브러리가 있다는 말은 들었었고 책도 사두었지만, 이놈의 게으름 병 때문에 ...
요즘 여유가 좀 생겨서 책장에서 먼지만 쌓이고 있던 ACE 책을 꺼내서 보면서 정리 해 본다.

1, ACE 라이브러리 다운로드

먼저 라이브러리를 다운 받장.  다운로드 페이지

페이지로 이동하면 ACE 이외의 용어들이 등장한다. TAO, CIAO ....
TAO(The ACE ORB)는 잠시 검색해보니 CORBA 정의에 따른 구현물이라는데 먼지 모르겠다.
CORBA 라는 말이 들어가는걸로 바서는 분산 객체 관련된 구현물인것 같다.
CIAO는 검색해 봐도 별다른게 없당 ... 패스~~

하여튼 중요한건 ACE 만 받으면 충분하겠다.

2, 압축 풀기 & 파일 생성

다운 받았으면 적당한 위치에 압축을 푼다.
나는 알기 쉽게 C:\ACE_wrappers 폴더에 압축을 풀었다.

압축을 모두 풀었으면 파일을 하나 생성해야 한다.
파일경로는 C:\ACE_wrappers\ace\config.h  되겠다.

파일 내용은 다음과 같다.

사용자 삽입 이미지








#include "ace/config-win32.h"

// MSVC 의 standard C++ headers 파일을 원할 경우
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
// MFC 사용할 경우
//#define ACE_HAS_MFC 1

3, ACE Library 컴파일

C:\ACE_wrappers 경로에 보면 많은 솔루션 파일들이 있다.

사용자 삽입 이미지















내가 지금 사용하는 VC 버전이 71 버전이다.
71 버전의 솔루션 파일은 두개가 있다. "ACE_wrappers_vc71.sln", "ACE_wrappers_vc71_Static.sln"
파일명을 보면 알수 있겠지만 "ACE_wrappers_vc71.sln" 로 컴파일 하면 OUTPUT 이 DLL 로 생성되고
"ACE_wrappers_vc71_Static.sln" 컴파일 하면 LIB 로 생성된다.

% 컴파일 하는데 시간이 꽤 걸린다. 점심 시간이나 담배타임을 이용해야 한다.


4, ACE Library 사용하기

샘플 프로젝트를 생성하고 설정한다.

% 헤더 경로를 설정한다.
사용자 삽입 이미지

% 라이브러리 경로를 설정한다.

사용자 삽입 이미지

% ACE 라이브러가 DLL 이 아닌 LIB 형태로 사용할경우 에만 적용
사용자 삽입 이미지


이제 설정은 다 끝났다. 간단한 샘플을 만들어서 컴파일 해보면 될것이다.

5, 간단한 사용기

먼저 ACE 를 체험해 보기위해 선택한 책은 C++ Network Programming (ACE와 패턴을 사용한 객체지향 네트워크 프로그래밍) 이란 책이다.
책의 내용은 정말 방대한 ACE 라이브러리를 체험만 할수 있을정도로 내용이 적다.
그리므로 사용기도 허접하고 정확하지 않을수 있음을 주의 !!!

ACE 라이브러리 레퍼런스는 여기를 참조하라   링크

장점
1, Network Native API 를 사용면서 기계적으로 해야 하는 코딩이 양이 많이 줄것으로 기대 된다.
2, windows, unix, linux 등 다중 OS 를 지원해야 한다면, 수많은 define 문을 피해 갈수 있을것으로 기대된다.
3, 이미 ACE 라이브러리가 디자인 패턴을 적용한 객체지향으로 설계가 되어 있어서 프로젝트 설계시 네트웍 부분은 손을 많이 줄일수 있을것이다. 추가로 객체지향 방법에 많은 공부가 될수도 있겠다.
4, ACE 라이브러리가  Network API 만 Wrapper class  로 만든것은 아니다 그 이외의 많은 기능이 있다.
데이타관리, 프로세스 스레드 관리, 등등...

단점
1, ACE 라이브러리가 제법 방대한 양을 가지고 있어서 이미 Network 프로그래밍에 익숙한사람들이 새로운 라이브러리를 습득하는데 걸리는 비용. (ACE 와 비슷하지만 약간 경량화 해서 나온게 boost 에서 만든 CISO 라는게 있다던데...)
2, 요즘 대세는 서버도 window 기반에서 많이 사용하는데 window IOCP 연동이 안된다는것. 대신 ACE 자체적으로 overrap IO 를 지원하는것 같긴하다.



'Library' 카테고리의 다른 글

TR1 유용한 클래스/함수 (1) ... tuple  (0) 2010.01.14
C++ TR1 설치  (0) 2010.01.08
Apache Log4cxx 0.10.0 윈도우에서 빌드 하기  (2) 2008.07.28
Boost 라이브러리 설치  (9) 2008.07.13
TDD(Test Driven Development)  (2) 2008.05.06
Posted by 상현달