ASP(Active Server Page)는 프로그래밍 언어가 아니다.

등록일시: 2002-03-15 이전,  수정일시: 2018-04-07 06:13
조회수: 24,519
본문은 최초 작성 이후, 약 22년 이상 지난 문서입니다. 일부 내용은 최근의 현실과 맞지 않거나 동떨어져 있을 수 있으며 문서 내용에 오류가 존재할 수도 있습니다. 또한 본문을 작성하던 당시 필자의 의견과 현재의 의견에 많은 차이가 존재할 수도 있습니다. 이 점, 참고하시기 바랍니다.
ASP(Active Server Page)는 프로그래밍 언어가 아니다.

이 명제는 참인가? 아니면 거짓인가? 대부분 고개를 갸우뚱해 하면서도 답은 '거짓'이라고 생각할 것이다. 그러나, 일반적인 예상과는 달리 그 답은 '참'이다. 이 결과가 의심스럽다면 명제의 내용을 조금 수정해보도록 하자.

ASP는 특정 종류의 프로그래밍 언어를 지칭할 때 사용하는 용어다.

아쉽겠지만 이 명제도 '거짓'이다. 일반적으로 ASP 프로그램을 작성할 때 사용되는 프로그래밍 언어는, 스크립트 언어의 일종인 VBScript고 간혹 JScript가 사용되기도 한다. 또는, 극히 드문 경우긴 하지만 마이크로소프트에서 기본으로 제공하는 이 두 가지 스크립트 언어 외에 Perl 같은 서드파티에서 제공되는 스크립트 언어가 사용되는 경우도 있다. 그러나, 국내에서 진행되는 ASP 프로젝트의 99%는 VBScript로 작성된다. 따라서, 이 명제가 '참'이라면 프로그래밍 언어인 VBScript(또는 JScript)로 프로그래밍 언어인 ASP를 작성한다는 우스꽝스러운 명제 역시도 '참'이 되어버리는 셈이다.

지금까지 얘기한 내용들은 사실 어느 정도 말장난에 가깝다. 단적으로 말해서 ASP가 프로그래밍 언어이든 아니든 Response.Write() 메서드는 여전히 Buffer에 문자열을 쓸 것이고, 여전히 Session이나 Cookie에는 사용자들의 로그인 여부가 기록될 것이다. 프로그래머들이 작업을 진행하는 데는 결국 하등의 영향을 미치지 않는 것이다.

그러나, 이런 쓸모 없을 것 같은 사실들로부터 때로는 중요한 결과를 도출해 낼 수 있으며, 바로 그 결과가 당면한 문제의 해결에 큰 도움을 주기도 한다. 이제 이 만큼 얘기를 질질 끌었으니 결론을 얘기하기로 하자. 결론 역시도 명제로 적겠다.

ASP는 IIS(Internet Information Service) 환경에서 VBScript 등의 스크립트 언어를 사용하여 동적으로 HTML 등의 Stream을 생성하는 환경, 그 전체를 일컫는 용어다.

물론, 이 명제에는 필자의 주관이 매우 강하게 포함되어 있다는 것을 인정한다. 그러나, 적어도 필자가 이해한 ASP의 정의는 이와 같은 것이다. 다시 한번 정리를 하면, ASP 환경은 말 그대로 환경이고 ASP 환경에서 프로그래밍 언어라고 부를 만한 요소는 VBScript와 JScript를 위시한 각 스크립트 언어들이라는 것이다.

MSDN을 뒤져보면 Microsoft Active Server Pages: Frequently Asked Questions 항목에 ASP를 다음과 같이 정의하고 있다.

Microsoft Active Server Pages (ASP) is the server-side execution environment in Microsoft Internet Information Server (IIS) 3.0 that enables you to run ActiveX™ scripts and ActiveX server components on the server. By combining scripts and components, developers can create dynamic content and powerful Web-based applications easily.

이 정의를 잘 읽어보기 바란다. 가장 첫 줄에서 'server-side execution environment in Microsoft Internet Information Server (IIS) 3.0'이라는 문장을 볼 수 있다. 'server-side execution environment'라고 씌어져 있다. 결코, 'server-side execution programming language'라고 씌어져 있지는 않은 것이다.

그렇다면 이 글을 읽는 여러분들은 이렇게 반문할 것이다. '그래서, 뭐 어쩌라구?'

앞에서도 한 번 얘기했지만 ASP가 프로그래밍 언어든 아니든 그것은 현실적으로는 그다지 중요한 문제가 아니다. 하지만 그 사실로부터 우리에게 뭔가 이득이 될만한 것을 얻어낼 수 있다면 얘기는 틀려진다.

간단한 ASP 의 처리 구조도

이 그림은 간단하게 살펴본 ASP의 처리 구조도다. 기본적인 사항이긴 하지만 IIS가 ASP 파일을 처리하는 과정을 다시 한 번 생각해보자.

먼저, 웹 브라우저가 Windows 2000 Server에게 임의의 ASP 파일을 요청한다. 그러면, 이 요청을 IIS가 받아서 처리하게 되는데 IIS는 요청받은 리소스의 확장자가 ASP이므로 응용 프로그램 매핑에 설정된 대로 ASP ISAPI Extention, 즉 ASP.DLL에게 제어권을 넘긴다.

그 다음이 매우 중요한데, ASP.DLL은 ASP 내부 객체에 대한 처리만을 담당할 뿐 실제 스크립트에 대한 모든 처리는 IIS와는 별개로 구동되는 Microsoft Scripting Engines에 의존한다. 이 Microsoft Scripting Engines는 요구받은 ASP 파일의 @Language 지시어에 지정된 스크립트 처리 엔진을 로드하고 처리를 마친 후, 그 결과를 ASP.DLL에 돌려주는 것이다.

그럼 이제 요점을 간추려 보자.

먼저, Microsoft Scripting Engines는 IIS 외부에 존재한다. 이 점이 의미하는 바는 명확하다. IIS와는 상관 없이 Microsoft Scripting Engines만 별도 업그레이드도 가능하다는 의미가 된다. 물론, Microsoft Scripting Engines를 업그레이드 한다고 해서 IIS나 ASP.DLL에서 제공해주는 기능들까지 업그레이드 되지는 않을 것이다. 다시 말해서, VBScript에 새로운 제어문이 추가된다든가 새로운 함수가 추가된다든지는 가능하지만, ASP 내부 객체인 Request, Response, Server, Session, ObjectContext, ASPError의 기능은 그대로 유지된다는 말이다.

두 번째로, Microsoft Scripting Engine이 아니라 Microsoft Scripting Engines다. 그저 말장난에 불과하다고 생각되는지? 하지만 이는 매우 중요한 사실이다. 마이크로소프트에서 기본으로 제공하는 Scripting Engine은 이미 위에서도 얘기했지만 VBScript와 JScript, 두 가지 뿐이다. 그러나, 만약 여러분들이 Perl이나 Python의 광적인 매니아라면 단지 ASP만을 위해서 VBScript를 배우고 싶지는 않을 것이다. 더군다나 VBScript의 일반적인 평가는 매우 낮은 편이므로...

그러나, 만약 Perl이나 Python을 사용해서 ASP 프로그램을 손쉽게 작성할 수 있다면 그래도 ASP를 포기하겠는가? 이것은 실제로도 가능한 얘기다. 앞에서 살펴본 MSDN의 FAQ에서 'What scripting languages does Active Server Pages support? (어떤 스크립팅 언어가 ASP를 지원하는가?)'라는 질문에 어떻게 답변하고 있는지 보자.

Active Server Pages provides native support for both Microsoft JScript and VBScript. ActiveX scripting plug-ins are available for REXX, PERL, and Python.

물론, 주변에서 실제로 이런 경우를 보기는 매우 힘들다. 본문은 흑협님의 PHPtip.com에 잠시 올리던 강좌를 다시 정리하고 내용을 추가하여 작성하고 있는 글인데, 그곳에 연재할 당시 Python 사용자 한 분에게 강한 어조의 답변을 받았던 경험이 있다. 그분의 말의 요점은 누가 강력한 Python 놔두고 굳이 Python으로 ASP를 작성하려 하겠느냐는 것이다. 물론, 그것은 여러분들이 결정할 문제다.

또한, 모든 종류의 스크립트 언어가 ASP에서 사용가능한 것은 아니다. 필자도 ASP에서의 사용을 지원하기 위한 Scripting Engine의 정확한 사양은 알지 못하고, 그것은 필자의 능력을 벗어나는 영역이다. 다만 한 가지 확실한 사항은 COM(Component Object Model)을 지원해야만 한다는 것이다

눈치 빠른 분들은 필자가 본문을 작성하면서 문맥상 'JavaScript'라고 적을 법한 곳에서 굳이 끝까지 'JScript'라고 적고있다는 사실을 이미 알고 있을 것이다. 그렇다면, JavaScript와 JScript는 대체 어떤 차이점이 존재하길래 굳이 이렇게 엄격히 구분지어 적는 것일까? 그것은, 바로 COM의 지원 여부, 바로 그 때문이다. 웹에 조금만 관심을 갖고 있는 분이라면 이 두 개의 스크립트 중 어느 쪽이 소위 말하는 '원조'인지 잘 알고 있을 것이다.

그렇다. JavaScript가 원조다. 이는 더 얘기할 필요도 없는 명확한 사실이다. JScript는 마이크로소프트에서 JavaScript를 모방하여 몇 가지 기능을 추가한 것이다. 그렇다면 마이크로소프트는 왜 JavaScript를 있는 그대로 라이센싱 하지 않고 임의대로 모방해서 재구축해야만 했을까? 어디까지나 개인적인 추측일 뿐이지만 필자는 그 가장 큰 이유들 중 한 가지가 바로 COM에 대한 지원 여부 때문이었다고 생각한다. ECMA 표준 JavaScript에서는 COM을 지원하지 않는다.

반면, 마이크로소프트의 JScript에서는 다음과 같은 코드가 가능하다. 즉, COM 컴포넌트의 인스턴스를 생성할 수가 있는 것이다.

var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");

이 문제는 비단 JavaScript에서 뿐만이 아니라 Java에서도 동일하게 제기되는 문제다. 아마도 마이크로소프트로서는 COM을 지원하기 위해서라도 반드시 Java 가상 머신을 수정했어야만 했을 것이라고 생각한다. 그리고, 아이러니하게도 COM을 구현하는데 가장 적당한 언어가 Java라는 일부 전문가들의 의견이 존재한다는 사실은 마이크로소프트의 입장에서는 매우 성가신 일이었을 것이다. 다시 한 번 얘기하지만, 이는 어디까지나 필자의 개인적인 추측일 뿐이며 공식적으로 확인된 사실은 아니다. 다만 충분이 고려해볼만한 얘기라고 생각된다.

각설하고 그렇다면 이 두 가지 사실로부터 우리가 얻을 수 있는 직접적인 실리는 무었일까? 일단 본문에서는 Scripting Engine의 업그레이드, 그것도 VBScript 부분에만 중점을 두고 살펴보기로 한다.

현재 마이크로소프트사의 사이트에서 다운로드 가능한 가장 최신의 Scripting Engine 버전은 버전 5.6으로 이는 Visual Studio.NET급에 해당하는 버전이다. 버전 5.5까지는 각종 스크립팅 관련 요소들을 각각 별도로 다운로드 받아서 설치해야만 했다. 그러나, 얼마전 업그레이드 된 Microsoft Windows Script 5.6에서부터는 보다시피 그 명칭 자체도 통합되었고, 하나의 설치 파일 안에 마이크로소프트의 모든 스크립팅 관련 요소들이 포함되어 있어서 단 한번의 설치로 모든 관련 요소들을 업그레이드 할 수 있다.

이를 설치하고 나면 VBScript, JScript, WSH, WSC(Windows Script Components), WSR(Windows Script Runtime) 같은 모든 스크립트 관련 요소들이 모두 버전 5.6으로 업그레이드 된다. Microsoft Windows Script 5.6은 아래의 URL 에서 다운로드 받을 수 있는데, 이 사이트는 마이크로소프트의 모든 스크립팅 관련 기술들의 한글 홈페이지인 Windows Script 사이트다. ASP나 WSH 같은 스크립팅 기술에 관심이 있다면 반드시 즐겨찾기 메뉴에 포함시켜 놓기 바란다.

이 사이트에 들어가서 우측 Essential Info 박스의 Windows Script 5.6 Release 링크를 클릭하거나, 아래 URL로 들어가면 자신의 운영체제에 맞은 Microsoft Windows Script 5.6 설치 파일과 도움말을 다운로드 받을 수 있다. Windows 2000 용과 Windows 98/ME/NT4.0 용, 두 가지가 존재하는데 릴리스 일자가 XP가 출시되기 불과 몇 일 전인 2001년 10월 18일인 것으로 미루어봤을 때, 이 Microsoft Windows Script 5.6이 XP에 기본 설치된 것과 동일한 버전인 것으로 추측된다.

이 페이지에서 설치 파일을 다운로드 받아서 설치하고 나면, 싱거울 정도로 간단하게 모든 업그레이드가 끝난다. 이 때, 재부팅을 요구하므로 현재 서비스 중인 서버에 아무런 대책없이 설치하는 실수를 범하지 않도록 주의한다.

다음글에서는 Microsoft Windows Script 5.6을 설치해서 업그레이드 된 VBScript의 기능들에 관해서 얘기하도록 하겠다.