게시판 본문 COM / COM+ by VB 6.0 - Read Only
re: vb로 com+제작해서 등록해서 사용합니다. 그런데; |
---|
작성자: 송원석
작성일시: 2005-12-08 10:00,
조회수: 4,421
|
먼저 지난번에도 답변드렸던 것처럼 개인적으로 저는 말씀해주신 것과 같이 태그를 사용하는 방법으로는 컴포넌트를 사용하지 않습니다. 그래서 그 부분에 대해서는 별다르게 제가 도움을 드릴 수 있는 부분이 있을 것 같지는 않습니다. 따라서 지극히 원론적인 관점에서만 간단하게 말씀을 드려 보겠습니다. 참고로 다음은 MSDN 에서 발췌한 기본적인 사용 방법의 코드 샘플입니다. 이 코드와 말씀해주신 코드를 비교해보면 말씀해주신 코드에서는 한 번에 클래스 아이디와 프로그램 아이디를 동시에 사용하시던데 MSDN 의 코드와 같이 한 번에 한 가지 방법만을 사용하여 테스트 해보시는 건 어떨까 합니다. 그리고 이왕이면 프로그램 아이디를 사용하시기 바랍니다. 게다가 스펠링도 약간 틀리신 것 같습니다. classid="clsid:xxxx... 라고 작성해야 하는데 말씀해주신 코드에서는 clsid="clsid:71D... 라고 작성하셨구요. ^_^;;
<object runat=server id=myobj progid="XXXX.XXXXXXXX"></object> <object runat=server id=myobj classid="clsid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"> </object>그리고 지난번에 말씀드렸던 컴포넌트의 이진 호환 부분은 점검을 해보셨나요? 만약 이 부분이 명확하지 않으면 클래스 아이디의 값이 레지스트리에 등록된 것과 실제 값이 다른 상황이 벌어질 수도 있습니다. 게다가 크린업이 안된 상황에서 이런게 반복되면 소위 말하는 레지스트리가 꼬인 상태가 되는 것이죠. ^_^ 그리고 두 번째 질문하신 내용에 대해서 제가 답변을 드리기 위해서는 거꾸로 제가 먼저 반문을 드려야 할 것 같습니다. COM+ 서비스를 사용하시는 목적이 무었이신지요? 예를 들어서 적시 활성화를 통해서 가용성을 높이시는 것이 중점이신가요? 아니면 자동 트랜잭션을 사용하시는 것이신지요? 또는 3 티어 환경을 구축중이십니까? 말씀하신 것과 같이 비주얼 베이직을 사용하여 컴포넌트를 작성하셨다면 그 컴포넌트가 수행하는 작업은 무엇인가요? 만약 이와 같은 구체적인 이유가 없으시다면 COM+ 서비스 자체를 사용할 이유가 없으신 셈입니다. 단 하나의 예외가 있다면 공부를 목적으로 하는 경우 뿐이라고 말해도 과언이 아닐 것입니다. 따라서 이런 목적성 없이 그냥 COM+ 에 올려서 컴포넌트를 사용하는 경우라면 당연히 COM+ 에서 컴포넌트를 내려야 겠죠. 그러면 일반 컴포넌트처럼 그냥 태그를 통해서 사용하시면 됩니다. 이번엔 반대로 말씀드린 것과 같은 서비스들을 필요로 하는 컴포넌트라면 반드시 COM+ 에 등록하여 사용하여야 겠지만, 이 경우에 태그 방식을 사용하면 COM+ 서비스에서 제공해주는 기능과 어느 정도 상충되는 면을 가지게 됩니다. 예를 들어서 적시 활성화의 경우 컴포넌트 개체가 활성화되는 시점과 비활성화 시점에 대한 기능을 제공합니다. 따라서 OBJECT 태그를 사용하는 가장 큰 목적중의 하나인 실제로 사용되는 순간에 개체가 생성된다는 부분과 일부 중목되는 면면을 갖게 됩니다. 게다가 그 컴포넌트 안에서 다른 컴포넌트들을 생성하고 또 그 컴포넌트에서 또 다른 컴포넌트들을 생성한다면? 또한 적시 활성화가 적용된 컴포넌트가 자동 트랜젝션까지 구현한다면 대부분의 경우 트랜젝션의 커밋 여부와 개체 비활성화가 같이 움직인다는 경향을 고려해보면 머리속이 조금 복잡해지게 됩니다. 그래서 저의 경우는 OBJECT 태그는 일반 COM 컴포넌트에서만 사용하는 것으로 그리고 가급적이면 애초에 사용하지 않는 것으로 개인적인 룰을 가지고 있습니다. 그리고 또 한 가지 이유로는 바로 컴포넌트를 작성한 언어가 비주얼 베이직 6.0 이기 때문입니다. 비주얼 베이직 6.0 으로 작성된 컴포넌트는 STA 에서 동작을 하는데 이러한 STA 컴포넌트를 OBJECT 태그를 사용하여 세션이나 응용 프로그램 범위에서 사용하도록 등록할 경우 성능상에 심각한 문제가 발생하게 됩니다. 그러나 이런 점들을 실제 프로젝트에서 이러쿵저러쿵하면서 일일이 팀원들에게 설명하기는 현실적으로 매우 힘들고 따라서 가장 일반적이면서도 예외적인 현상이 발생하지 않는 방법을 선택하게 되는 것이죠. 그리고 바로 그 방법이 바로 Serve.CreateObject() 메서드를 사용하는 방법이구요. ^_^ 감사합니다. |
IP 주소: 165.141.212.88
|
전체 2 건의 댓글이 존재합니다.
장윤태 |
자료 다시 잃어보고 질문 드려야 겠내요;; ^^
|
2005-12-08 11:03 |
장윤태 |
classid="clsid 로 했었습니다; 이건 복사 놓은거라서;; ^^
|
2005-12-08 11:03 |
전체 276 건의 게시물,
12 페이지로 구성된
COM / COM+ by VB 6.0 게시판의
6 페이지입니다.
게시물 | ||||
---|---|---|---|---|
154 | 2006-02-03 | 6,266 | ||
153 | 2006-01-04 | 5,063 | ||
152 |
re: 객체 오류 관해서 질문 [2] |
2006-01-04 | 4,069 | |
151 |
훈스 |
2005-12-15 | 1,241 | |
150 | 2005-12-15 | 4,085 | ||
149 | 2005-12-14 | 3,548 | ||
148 | 2005-12-14 | 3,519 | ||
147 | 2005-12-09 | 3,500 | ||
146 | 2005-12-09 | 3,562 | ||
145 | 2005-12-08 | 3,470 | ||
2005-12-08 | 4,421 | |||
143 | 2005-12-06 | 3,266 | ||
142 | 2005-12-06 | 3,626 | ||
141 | 2005-12-06 | 4,006 | ||
140 | 2005-12-06 | 3,362 | ||
139 | 2005-12-06 | 3,849 | ||
138 | 2005-12-06 | 3,600 | ||
137 | 2005-11-29 | 3,621 | ||
136 | 2005-11-29 | 3,454 | ||
135 | 2005-11-29 | 3,565 | ||
134 | 2005-11-29 | 3,614 | ||
133 | 2005-11-29 | 3,547 | ||
132 | 2005-10-23 | 7,294 | ||
131 | 2005-10-23 | 4,840 | ||
130 | 2005-10-17 | 3,638 |