ASP용 COM+를 제작하기 위해서 VB를 많이 사용합니다. ASP의 기본 스크립트가 VBScript이기 때문에 문법적으로도 가까운 편이고, VB로 COM+를 작성하는 것 자체가 쉬워서 생산성 향상에 도움이 되기 때문에 많이 애용되고 있습니다.
여기서는 VB를 사용하여 COM+를 제작하는 방법을 간단하게 설명합니다. 이 부분을 이해하시려면 ASP와 VB의 기본 문법등은 알고 계셔야 합니다. (아래 예에서는 VB 6을 사용합니다.)
1. 먼저 VB를 실행하고 ActiveX DLL 을 선택하여 프로젝트를 생성합니다.
2. 프로젝트 / Project1 속성 메뉴를 클릭하여 프로젝트 속성창을 엽니다.
3. 아래와 같이 프로젝트 이름 부분을 입력합니다. (자신이 원하는 것 아무거나 입력하셔도 되지만, 예제 설명을 위해 적당히 지정을 하겠습니다.
4. 위 입력창을 닫고, 화면 우측의 프로젝트 속성창에서 클래스 모듈의 이름을 변경합니다.
5. 프로젝트 / 참조 메뉴를 선택하여 다음 요소를 체크합니다.
Microsoft ActiveX Data Objects 2.8 Library : DB 접근을 위한 모듈입니다. 사용하시는 시스템에 다른 버전이 있을 경우 해당 버전을 선택하시면 됩니다.
Microsoft Active Server Pages Object Library / Microsoft Active Server Pages ObjectContext Object Library : ASP 객체 접근을 위한 모듈입니다.
COM+ Services Type Library : COM+ 자료형을 선언해둔 모듈입니다.
6. 화면 중앙의 코드부로 와서 다음 코드를 입력합니다.
Option Explicit
Private objContext As ObjectContext
Private objRequest As Request
Private objResponse As Response
Public Function Show()
' IIS 객체
Set objContext = GetObjectContext()
Set objRequest = objContext("Request")
Set objResponse = objContext("Response")
objResponse.write objRequest("id")
End Function
7. 파일 / 프로젝트 저장 메뉴를 선택하여 현재 프로젝트를 적당한 폴더에 저장합니다.
8. 파일 / Board.dll 만들기 메뉴를 선택하고 확인을 눌려 Board.dll 을 생성합니다.
9. VB를 닫고, 관리 도구의 구성 요소 서비스를 실행합니다.
10. 구성 요소 서비스 창에서 내 컴퓨터의 COM+ 응용 프로그램에 마우스 우클릭을 하고 새로 만들기 / 응용 프로그램을 선택합니다.
11. 다음을 누르고 빈 응용 프로그램을 선택한 다음, 응용 프로그램 이름을 적당히 입력하고, 활성화 유형을 라이브러리 응용 프로그램으로 선택합니다.
12. 마법사를 닫고 COM+ 응용 프로그램을 보면 방금 입력한 응용 프로그램이 있습니다. 이 응용 프로그램 하위의 구성 요소에서 마우스 우클릭을 하고 새로 만들기 / 구성 요소를 선택합니다.
13. 구성 요소 설치 마법사에서 새 구성 요소 버튼을 클릭하고 위에서 만든 Board.dll 을 찾아 선택합니다. 그리고 다음 / 마침을 눌러 마법사를 닫습니다.
14. ASP 페이지를 하나 만들어 다음을 입력합니다.
dim obj
Set obj = Server.CreateObject("Board.List")
obj.Show
set obj = Nothing
15. ?id=abcd 를 붙여서 위 ASP 페이지를 엽니다. (예를 들자면 http://localhost/test/test.asp?id=abcd 정도가 됩니다.) COM+ 를 만들때 입력했던 VB 코드에서 id 로 넘어온 값을 출력하도록 하였기 때문에, 위의 모든 과정이 정상이라면 화면에 abcd 가 찍혀야 합니다.
--------------------------------------------------------------------------------
IIS에서 작성된 COM+를 사용하게 되면 해당 dll 파일에 Lock이 걸려 수정, 삭제가 안됩니다. COM+ 작업을 할때 수시로 dll 을 수정하게 되는데 이런 경우 Lock이 걸려 있다면 작업 진행이 안되겠죠.
현재 돌아가고 있는 웹서버일 경우, 등록된 COM+의 Lock을 해제 하기 위해서는 구성 요소 서비스에서 해당 COM+를 사용 안함으로 선택하였다가 IIS의 해당 dll 사용이 타임아웃 되면 그때 새로운 dll을 올리시고 다시 사용 한다고 바꿔주시면 됩니다.
현재 돌아가지 않는 작업 전용 서버일 경우는 IIS를 리셋하는 것이 빨라서 편합니다. 윈도우의 실행 입력창에 iisreset /restart 를 입력하시면 5~20초 정도에 IIS가 재시작됩니다.