게시판 본문 ASP, ASP.NET, IIS & Script - Read Only

re: 리턴되는 dataset 을 asp 에서 처리 하기..[문의]
작성자: 송원석
작성일시: 2003-06-20 01:38,  조회수: 4,675
안녕하세요? 송원석 입니다. ^_^

답변을 드리기 전에 먼저 말씀드리고 싶은 것이 저도 .NET 쪽은 아직 공부하는 입장이라서 드리는 답변중에 일부 틀린 내용이 있을 수도 있다는 점입니다. 따라서 같이 토론하면서 문제점들을 해결해 나간다는 느낌으로 읽어주시면 좋을 것 같네요. ^_^;;; 아마도 조금은 긴 글이 되지 않을까 생각합니다.


일단 제 생각으로는 평범한 방법으로는 불가능 하지 않을까 합니다. 다만 약간의 수정을 통해서 결과값을 얻을 수는 있을 것 같습니다. 지금부터 왜 그렇게 생각하는지 말씀드리겠습니다.

일단, ASP 에서 .NET 의 개체들을 이해하지 못하는 것이 큰 원인입니다. 사실 일반적인 상황에서 RCW 나 CCW 를 사용하지 않는 이상 ASP 와 .NET 은 서로 상대방의 컴포넌트나 개체를 이해하지 못하죠.

예를 들어 보겠습니다. 우선 쉬운 사례로 ASP 에서 문자열을 사용하면 내부적으로 COM 의 BSTR 형을 사용하게 됩니다. 반면 .NET 에서는 String 클래스를 사용하죠. 이처럼 겉보기에는 비슷해 보이지만, 마치 ASP 와 Java 의 문자열이 틀린 것 만큼이나 서로 다른 내부 구조를 사용합니다.

COM+ 컴포넌트도 마찮가지 입니다. 하나는 COM 컴포넌트가 COM+ 서비스에 올라간 것이고, 다른 하나는 .NET 컴포넌트 (개체) 가 COM+ 서비스에 올라간 것입니다. 따라서 근본적으로 COM+ 컴포넌트에도 두 가지 종류가 생긴 셈입니다. 겉보기엔 똑같은 COM+ 컴포넌트처럼 보이지만 기존의 COM/COM+ 컴포넌트와 .NET COM+ 컴포넌트는 완전히 틀린 것입니다. 이것은 조금만 생각해 보면 알 수 있습니다.

예를 들어서 기존의 COM/COM+ 컴포넌트는 IDispatch 인터페이스나 IUnknown 인터페이스를 반드시 지원해야 합니다. 그리고 이 기존의 COM/COM+ 컴포넌트를 사용하는 스크립트 프로그래밍 언어, 즉 ASP 의 VBScript 같은 경우는 그 중에서도 IDispatch 인터페이스가 반드시 구현되어 있어야지만 해당 컴포넌트를 사용할 수 있습니다.

반면 .NET 의 컴포넌트는 그 개념부터가 완전히 틀립니다. IUnknown 이나 IDispatch 같은 개념은 존재하지도 않죠. 만약 두 종류의 컴포넌트가 같다면 역시 COM/COM+ 컴포넌트라고 부르지 .NET 컴포넌트라고 부르지는 않겠죠? ^_^;;;

그래서 이 두 차이점을 매꿔줄 무엇인가가 필요한데, 그것이 바로 RCW 와 CCW 입니다. 이 기술을 사용하면 ASP 에서 .NET 컴포넌트들 호출하거나 .NET 에서 예전의 COM/COM+ 컴포넌트를 호출하는 것이 가능해집니다. 한 마디로 상대방을 속이는 거죠.

이에 관해서는 다음의 문서에 자세히 나와 있습니다. 참고하시기 바랍니다.

http://www.microsoft.com/korea/msdn/msdnmag/issues/01/08/Interop/Interop.asp

저희가 흔히들 인터롭 (Interop) 이라고 부르는 기술에 관한 글입니다.


이 중에서 .NET 에서 기존의 COM 개체를 호출할 때 필요한 것이 RCW 이고, 거꾸로 기존의 COM 기반 프로그램에서 .NET 개체를 사용할 때 필요한 것이 CCW 입니다. 따라서 지금 필요한 것은 CCW 가 되겠네요. ^_^

CCW 는 기존의 COM 기반 프로그램과 .NET 개체 사이에서 기존의 COM 기반 프로그램에는 IUnknown 인터페이스와 IDispatch 인터페이스를 제공해주고, 받아들인 정보들을 .NET 이 이해할 수 있는 형태로 바꿔서 넘겨줍니다. CCW 를 만드는 자세한 방법은 MSDN 이나 마이크로소프트의 사이트 등을 참고하시기 바랍니다.


자... 지금까지의 내용들을 종합해보면 다음과 같은 두 가지 문제점을 찾을 수 있습니다.

1. ASP 에서 .NET 개체를 올바르게 호출하려면 CCW 를 만들어야 한다.

2. ASP 에서 ADO.NET 개체인 Dataset 을 이해할 수 있는가?


이 중에서 1. 번 같은 경우는 쉽게 해결이 가능합니다. 비록 클릭 한 두번으로 해결되지야 않겠지만, 어짜피 마이크로소프트에서 제공해주는 메뉴얼까지 있는 방법이니 공부해서 사용하기만 하면 되겠지요.

그런데 정작 문제는 2. 번 입니다. 예를 들어서 .NET 컴포넌트가 데이타를 성공적으로 얻어서 Dataset 개체를 만드는 것까지 성공했다고 생각해보도록 하겠습니다. 그럼 이 개체를 COM 기반의 ASP 로 전달해주어야 하는데 그렇다면 CCW 는 Dataset 개체를 어떤 형으로 바꾸어서 전달해주는 걸까요?

자동적으로 Recordset 으로 바꾸어 주지는 않습니다. 그렇다고 Dataset 개체를 그대로 넘겨주지도 않구요. 또 Dataset 개체를 그대로 넘겨 준다고 해도 ASP 쪽에서는 그것을 사용할 수 없습니다. Dataset 은 COM 컴포넌트가 아니고 IDispatch 인터페이스도 제공하지 않으니까요. 따라서 Dataset 개체를 그냥 그대로 넘겨 받는 것은 불가능하지 않나 생각됩니다.


그렇다면 포기를 해야 하느냐? 그건 아니라고 생각합니다. 해당 COM+ 개체의 함수를 약간만 수정하시거나 같은 기능을 가진 같은 메소드의 변형을 만드시면 될 것 같습니다. 바로 리턴을 XML 이나 구분자를 사용한 문자열로 하도록 말이죠... ^_^;;;

아마 원하시던 만큼 깔끔한 해결책은 아닐 것이라고 생각됩니다. 다만 제가 아는 지식의 한도 내에서는 이 방법 밖에는 떠오르는 것이 없군요. 그리고 처음에도 말씀드렸지만 저도 아직 .NET 은 공부하는 입장이라 잘 찾아보시면 다른 방법이 있을 수도 있다는 걸 잊지 마시기 바랍니다.

혹시라도 이보다 더 좋은 해결책을 발견하시면 제게도 말씀해주십시요. ^_^

감사합니다.

IP 주소: 165.21.154.11
전체 2,095 건의 게시물, 84 페이지로 구성된 ASP, ASP.NET, IIS & Script 게시판의 84 페이지입니다.
게시물
30

re: 또 질물을... ^^;

ㅜ.ㅜ

2003-06-25 6,838
29

리턴되는 dataset 을 asp 에서 처리 하기..[문의]

궁금이

2003-06-19 4,541

re: 리턴되는 dataset 을 asp 에서 처리 하기..[문의]

송원석

2003-06-20 4,675
27

[질문] 아래질문에 이어 ^^ (죄송~)

신순유

2003-06-17 1,479
26

re: [질문] 아래질문에 이어 ^^ (죄송~) [2]

송원석

2003-06-17 4,181
25

[질문]콜렉션에 대하여..

신순유

2003-06-16 1,762
24

re: [질문]콜렉션에 대하여.. [2]

송원석

2003-06-16 4,086
23

안녕하세요.. [2]

진진

2003-05-26 1,670
22

re: 안녕하세요.. [1]

송원석

2003-05-27 4,272
21

아크로벳을 asp에서 핸들링 할수 있나요? [3]

붐붐

2003-05-07 4,899
20

re: 아크로벳을 asp에서 핸들링 할수 있나요? (Ed. 1) [2]

송원석

2003-05-09 4,907
19

re: 아크로벳을 asp에서 핸들링 할수 있나요? (Ed. 1) [1]

붐붐

2003-05-20 1,739
18

질문입니다요..

lang2

2003-04-02 4,879
17

re: 질문입니다요..

송원석

2003-04-02 4,622
16

정규표현식 관련 질문입니다.

lang2

2003-03-26 4,863
15

re: 정규표현식 관련 질문입니다.

송원석

2003-03-26 4,622
14

re: 샘플코드입니다.

lang2

2003-03-27 4,672
13

re: 샘플코드입니다. [5]

송원석

2003-03-27 5,594
12

re: 감사합니다.

lang2

2003-03-27 4,898
11

ASP, ASP.NET & Script Forum 을 시작합니다. [4]

송원석

2003-02-22 5,276