패키지 활성화   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

- 1초동안 실행한 횟수

- 함수
  Add : 두수 더하기
  AddData : DB에 데이터 Insert

- 절대적인 숫자의 크기는 의미없음 (상대적인 수치만 보기)


COM+ 벤치마킹

  서버 응용프로그램
클라이언트 언어 호출방법 Add AddData
VC++
(MFC)
ATL/C++, COM+ Custom 10277 381
ATL/C++, COM+ Dispatch 3838 346
C#, COM+ Dispatch 1521 373
C# (WinApp) C#, COM+   1410 384


  라이브러리 응용프로그램
클라이언트 언어 호출방법 Add AddData
VC++
(MFC)
ATL/C++, COM+ Custom 36757 67
ATL/C++, COM+ Dispatch 15895 65
C#, COM+ Dispatch 2021 411
C# (WinApp) C#, COM+   4177 511


  일반 라이브러리 
C# (WinApp) C#, Library     639
VC++ (MFC) VC++, DLL     916



ATL COM+ (VC++)

- Unmanaged (Native) Custom 인터페이스로 호출시 호출성능은 가장 좋음

- 라이브러리 응용프로그램 패키지에서 호출성능은 가장 좋으나

  AddData 의 경우 DB 풀링이 안되는거 같아 성능 저하 현상

- .Net 클라이언트 프로그램에서 호출했을 경우도 Iterop 에 의한 성능저하 별로 없음


: 서버 응용프로그램 패키지에서 실행 권장

: 어플리케이션 프로그램이 아닌 웹환경에서는 대세 



C# COM+ (.Net Enterprise Service)

- Unmanaged (Native) 코드보다는 호출성능은 떨어짐

- 그러나 DB업무인 AddData의 경우 Unmanaged 코드랑 성능차이 없음

- AddData 의 경우 라이브러리 응용프로그램 패키지에서 성능 향상   

  (ATL COM+ 와 대조적인 결과, DB풀링을 드라이버차원이 아닌 .Net 어셈블리에서 처리하는것 같음)

- Unmanaged 클라이언트 프로그램에서 호출했을 경우 Iterop에 의한 약간의 성능 저하

- Managed (.Net)에서 호출시 가장 좋은 성능을 보임

- DTC를 사용하지 않을경우 .Net Library 를 사용하는것이 COM+를 이용하는것 보다 성능이 좋음


: 라이브러리 응용프로그램 패키지에서 실행 권장

: COM+ DTC를 이용하지 않을시는 .Net Library 권장








DCOM & RDS


- 인터페이스
    DCOM(Proxy) - 컴포넌트 내보내기/설치하기 Custom 인터페이스 사용
    DCOM(RDS.Dataspace) - RDS.Dataspace 이용 하여 Dispatch 인터페이스 사용
    RDS - RDS.Dataspace

  Add AddData
DCOM(Proxy) 596 200
DCOM(RDS.Dataspace) 295 146
RDS 42 38


'Dev > Windows' 카테고리의 다른 글

VARIANT 에서 객체 추출하기  (0) 2008.09.09
ffmpeg  (0) 2008.04.09
달라진 기능 (IIS 6.0)  (0) 2007.09.28
SQLOLEDB Provider 의 특이한 동작  (0) 2007.09.20
COM+ Queued Components  (0) 2007.08.09

'Dev > Windows' 카테고리의 다른 글

RestartService  (0) 2007.07.19
MultiMedia Timer  (0) 2007.05.14
DLL 파일 찾는 순서  (0) 2007.05.14
DLL export  (0) 2007.05.14
_beginthread, _beginthreadex  (0) 2007.05.14

+ Recent posts