패키지 활성화 | JIT 활성화 | 멤버변수 상태 유지 | 전역변수 상태 |
1. 서버 응용 프로그램 | 활성 | 유지 않함 | 유지 (활성화 개체 단위) |
2. 서버 응용 프로그램 | 비 활성 | 유지 | 유지 (활성화 개체 단위) |
3. 라이브러리 응용 프로그램 | 활성 | 유지 않함 | 유지 (세션 단위) |
4. 라이브러리 응용 프로그램 | 비 활성 | 유지 | 유지 (세션 단위) |
* JIT 활성화가 있는경우 Method 단위로 m_spObjectContext->SetComplete() 를 호출 하여 테스트
* 풀링의 세팅의 경우 위의 결과와 틀리게 멤버변수의 상태가 달라 질 수 있음
* CreateObject 이후 Nothing 까지의 상태
내용
- JIT 활성화인 경우 Method 단위로 클래스의 생성자 및 소멸자 호출
- 풀링 설정의 경우 패키지가 시작할때 풀링된 구성요소 만큼 생성자를 호출하여 인스턴스 생성해 놓음
- 라이브러리 응용 프로그램의 경우 인프로세스로 실행 되므로 전역변수값은 세션별로만 유지함
- regsvr32 로 등록되어 있는 컴포넌트랑 같은 효과를 내기 위해서는 "라이브러리 응용 프로그램, JIT 비활성화"로 운영
결론
내가 만들지 않은 컴포넌트의 경우 내부적으로 개체의 상태값 유지를 위해서,
멤버변수를 사용했는지, 지역 변수를 사용했는지 알 수 없기 때문에 regsvr32 로 등록하여 사용 하는것으로 권장
허나 COM+에 등록하여 사용 하려면 위의 내용 참고
'Dev > Windows' 카테고리의 다른 글
MS MTC 서비스 설정 (0) | 2012.04.04 |
---|---|
.svn 폴더 삭제 (0) | 2011.03.25 |
Redmine 세팅 (0) | 2009.09.12 |
ATL Com Project VC++ 6 에서 VC++ 8 변환(업그레이드) (0) | 2009.03.27 |
유니코드(UNICODE), C++ (0) | 2008.10.16 |