본문 바로가기

개발

ASP에서 닷넷 DLL 사용하기

* .NET 1.0 기준으로 예전에 테스트해보았던 방식이기 때문에, 참조만 하세요!

ASP에서 .NET Assembly를 사용하게 되면, .NET Framework에서 제공하는 막강한 기능들을 사용할 수 있다 .
성능면에서 있어서, ASP에 ATL을 이용해서 만든 컴포넌트에는 미치지 못하지만, Runtime엔진을 사용하고 있는
MFC, VB, WSC 컴포넌트보다는 동등하거나, 그 이상의 성능을 발휘할 수 있다.
대부분의 컴파일 엔진이 호환성을 유지하기 위해, 80386 CPU가 지원하는 CPU Set 기준에 맞게 컴파일 되기 때문이다.
 
하지만 CLR(Common Language Runtime)을 사용하는 .NET Assembly는 CLR이 최신의 CPU Set 도 사용할 수 있도록 디자인 되었기 때문에, MFC, VB, WSC 컴포넌트보다 더 월등한 성능을 발휘할 수 있다.
 
ASP에서 .NET Assembly 사용방법

사용방법은 매우 쉽다.

Command 명령어들은 Visual Studio.net 명령 프롬프트 창을 사용하면 됩니다.

1. .NET Assembly 프로젝트를 생성한다.
    ex: mycom.dll 제작
2. Strong Name Key File을 제작한다.
    Sn –k mykey.snk
3. .NET Assembly 프로젝트중 Assembly 파일에 sn key file을 추가한다.
    <Assembly: AssemblyKeyFile( "mykey.snk" )> - 이 경우 프로젝트와 같은 경로에 있어야 한다.
    다른 경로면 경로명을 지정해 주면 된다.
4. .NET Assembly 프로젝트를 컴파일하여 dll을 생성한다.
5. 생성된 dll을 사용할 서버나, 디렉토리로 복사한다.
6. .NET Assembly를 등록한다.
    Regasm mycom.dll /tlb:mycom.tlb
7. .NET Assembly를 Global Assembly Cache에 등록한다.
    Gacutil /I mycom.dll
8.  ASP에서 사용한다.
    Set myObj = Server.CreateObject(" acom.mycom")
 
다음은 삭제 방법이다.

1. 웹서비스를 멈춘다.
2. 등록을 Uninstall 한다.
    Regasm /u mycom.dll
3. Global Assembly Cache에서 제거한다.
    Gactuil /u mycom
 
다음은 주의 사항이다.

1. ASP에서 사용할 메소드나 프로퍼티는 public 속성을 가져야 한다.
2. .NET Framework에서 제공하는 모든 Class들을 참조해서 사용할 수 있다.
    단 System.Web 클래스들은 사용시 주의해야 한다 .
    예를들면, System.Web.HttpContext.Current 는 wp(worker process) 내에서만 사용 가능한 객체이다.
    HttpContext라는 객체는 ASP.NET HttpRuntime 에 의해서 생성되게 되어 있다. 그러나 현재 ASP.NET이 실행 
    되고 있는 것이 아니라 ASP 가 실행되고 있는 것이고 여기서 .NET Assembly를 호출하고 있는 구조이므로
    ASP.NET 런타임인 aspnet_wp.exe 내에서 실행되지 않고 있기에 이런 구조에서는 .NET Assembly의
    HttpContext의 객체를 얻을 수 없다.
    그러므로 이런 구조를 가지는 환경 속에서는, HTTP Request Information 들은 오직 ASP runtime 내에서만
    가능하게 된다.
    따라서 .NET Assembly에서도 HTTP Request Information 들이 필요하시다면 ASP에서 호출할 때 파라미터
    로  필요한 데이터를 전달하는 방법을 사용해야 한다.