게시판 본문 COM / COM+ by VB 6.0 - Read Only

re: GetObjectContext질문 입니다.
작성자: 송원석
작성일시: 2006-06-24 01:15,  조회수: 3,091
안녕하세요? 송원석입니다. ^_^

지금 말씀하고 계신 내용을 여러모로 감안하여 생각해볼 때 COM 컴포넌트 그리고 COM+ 컴포넌트 작성에 대한 전반적인 이해가 부족하신 것 같습니다. 대단히 죄송하지만 먼저 기본적인 COM+ 컴포넌트에 대한 서적등을 읽어보시고 다음 문서를 참고해 보시기 바랍니다. 제가 감히 말씀드릴 수 있는 것은 COM+ 는 다른 기술들과는 달리 전반적인 지식없이 그냥 몸으로 부딛히는 것만 가지고는 성공적인 사용이 거의 불가능하다는 것입니다. ^_^;;

http://www.egocube.pe.kr/Lecture/Content/component/200501140001

더해서 미리 말씀드릴 점은 COM 컴포넌트와 COM+ 컴포넌트는 작성 방법에 있어서 서로 상당한 부분에서 큰 차이를 보인다는 것입니다. 따라서 COM 컴포넌트를 작성할 때와 동일한 요령을 가지고서 바로 COM+ 컴포넌트를 작성할 수는 없습니다. 물론 COM+ 가 COM 을 근간으로 하긴 하지만 실제 COM+ 컴포넌트 작성에는 또 다른 요령이 필요합니다. 이 자리를 빌어서 이 모든 내용들을 설명드리기에는 그 분량이 방대하므로 물어보신 부분들만을 중점으로 일단 답변을 드리도록 하겠습니다.

그리고 기본적으로 제가 드리는 답변의 한 가지 전제는 일반적인 COM 컴포넌트에 관련된 지식들은 이미 어느정도 이해하고 계실 것이라는 가정하에 COM+ 컴포넌트에 대해서 말씀을 드리는 것이라는 점을 참고하여 주십시오. 먼저 IObjectControl.Activate 메서드와 IObjectControl.Deactivate 메서드는 마치 클래스의 생성자와 소멸자 역활을 하는 메서드라고 생각하시면 됩니다. 그러나 클래스 생성자와 소멸자가 해당 클래스의 인스턴스가 생성될 때와 제거될 때에 한 번씩만 호출되는 반면, 이 Activate 메서드와 Deactivate 메서드는 모든 메서드 호출시 마다 각각 메서드 호출전과 메서드 호출후에 호출되어집니다. 즉 메서드 단위의 생성자와 소멸자라고 생각하시면 됩니다. 이는 COM+ 컴포넌트의 적시 활성화와 관련된 특성으로 적시 활성화가 설정된 컴포넌트는 모든 메서드 호출시마다 자동적으로 개체의 생성과 삭제가 반복됩니다. 따라서 COM+ 컴포넌트의 클래스는 상태를 유지하도록 설계하면 않됩니다. 즉, 메서드 내부에서 필요한 리소스들을 모두 얻어 작업을 처리한 다음 메서드를 빠져나가기 전에 모든 리소스를 해제해야만 합니다. 바로 이런 경우에 활용하기 위해 준비된 메서드들이 이 Activate 메서드와 Deactivate 메서드인 것이죠. 그리고 일단 현재로서는 EnableCommit 메서드와 DisableCommit 메서드는 머리속에서 지워 버리십시오. 이 메서드들은 좀 더 고급의 COM+ 컴포넌트를 작성할 때 사용하기 위해 준비된 것입니다. 지금은 SetComplete 메서드와 SetAbort 메서드만을 기억하시기 바랍니다. 사용방법은 간단합니다. 메서드 내부에서 아무런 오류도 발생하지 않고 처리가 끝났다면 메서드를 빠져나가기 전에 SetComplete 메서드를 호출하십시요. 그러나 오류가 발생했다면 메서드를 빠져나가기 전에 SetAbort 메서드를 호출해 주셔야만 합니다. 이 작업을 생략하는 다른 방법이 존재하기는 하지만 지금의 상황에서는 되려 배보다 배꼽이 큰 상황인지라 더 설명을 드리기 어렵습니다. ^_^;;;

그리고 말씀하신 프로퍼티는 현재 상황에서는 사용이 불가능합니다. 앞에서도 말씀드린 것처럼 적시 활성화로 인해서 Login 프로시저가 실행된 직후에 해당 개체는 메모리에서 자동적으로 삭제됩니다. 그리고 프로퍼티에 접근하는 순간에 다시 생성되는데 이 개체는 방금전의 개체와 완벽하게 다른 개체입니다. 따라서 프로퍼티에 접근하셔도 데이터형의 초기값이나 쓰레기값만을 얻게 되실 것입니다. 그리고 트랜젝션을 커밋하거나 롤백하는 방법에 관한 이슈에 대해서는 이 글에서는 말씀을 드리지 않도록 하겠습니다. 제가 앞에서 말씀드린 내용들을 모두 이해하셔야만 어짜피 가능한 작업이니까요. 현재 상황에서 제가 드릴 수 있는 가장 큰 조언은 이미 말씀드린 바와 같이 COM+ 는 일단 코딩을 시작하고 작업하면서 이론을 습득하기가 거의 불가능하다라는 사실입니다. COM+ 컴포넌트를 제대로 작성하기 위해서는 수많은 선수지식이 필요합니다. 이 점을 다시 한 번 심각하게 말씀드리고 싶습니다. ^_^ ;;;

감사합니다.

IP 주소: 61.84.82.240
전체 1 건의 댓글이 존재합니다.

COM초보자

감사합니다
2006-06-26 11:11
전체 276 건의 게시물, 12 페이지로 구성된 COM / COM+ by VB 6.0 게시판의 4 페이지입니다.
게시물
204

re: 인스톨쉴드에서 컴모듈 등록하는 방법이요

송원석

2006-10-10 5,999
203

re: 인스톨쉴드에서 컴모듈 등록하는 방법이요 [2]

라임

2006-10-11 2,886
202

FTP 클라이언트 프로그램 [2]

간만에 VB

2006-07-12 2,955
201

액티브X 설치 [1]

정보문

2006-07-11 675
200

배열을 다른페이지(새창)로 그대로 옴길수 있을까요?

장윤태

2006-07-03 656
199

re: 배열을 다른페이지(새창)로 그대로 옴길수 있을까요? [3]

송원석

2006-07-04 2,993
198

쿠키와 세션에 동시에 갑을 넣고 있어도 갑자기 없어집니

장윤태

2006-06-23 546
197

re: 쿠키와 세션에 동시에 갑을 넣고 있어도 갑자기 없어집니 [2]

송원석

2006-06-24 2,944
196

GetObjectContext질문 입니다.

COM초보자

2006-06-23 634

re: GetObjectContext질문 입니다. [1]

송원석

2006-06-24 3,091
194

장윤태님께. cross_domain 문제해결방법입니다

정보문

2006-06-20 3,234
193

iframe 의 동적 높이를 알려고 합니다. 예전엔 되었는데 안되내요

장윤태

2006-05-27 6,742
192

re: iframe 의 동적 높이를 알려고 합니다. 예전엔 되었는데 안되내요

송원석

2006-05-27 2,888
191

re: iframe 의 동적 높이를 알려고 합니다. 예전엔 되었는데 안되내요 [1]

장윤태

2006-05-28 3,088
190

re: iframe 의 동적 높이를 알려고 합니다. 예전엔 되었는데 안되내요 [3]

송원석

2006-05-29 3,223
189

sp_executsql 질문요. 안풀리내요 ^^;

장윤태

2006-05-08 692
188

re: sp_executsql 질문요. 안풀리내요 ^^; [1]

송원석

2006-05-09 2,993
187

배열 Type 프로퍼티의 선언

은빠

2006-05-03 2,768
186

re: 배열 Type 프로퍼티의 선언

송원석

2006-05-04 3,037
185

COM 프로젝트에 다른 COM을 참조할 수 있나요?

은빠

2006-05-03 2,894
184

re: COM 프로젝트에 다른 COM을 참조할 수 있나요?

송원석

2006-05-03 2,890
183

re: COM 프로젝트에 다른 COM을 참조할 수 있나요?

은빠

2006-05-03 2,797
182

ASP->COM+ PROXY 접근문제..

리모트ㅠㅠ

2006-04-27 2,926
181

re: ASP->COM+ PROXY 접근문제.. [1]

송원석

2006-04-28 2,861
180

비주얼베이직 초보인데요 ^^

왕초보 ^^

2006-04-26 2,943