웹사이트를 너무 힘들게 만들고 있지는 않은가? ASP의 배우기 쉬운 스크립트 인터페이스를 이용하면 복잡한 웹 개발의 많은 부분을 쉽게 해결할 수 있을 것이다. 이제 그 방법을 알아보자웹 응용 프로그램개발 과정에서 가장 흔하게 발생하는 문제는 웹의 기반이 되는 프로토콜인 HTTP와 마크업 언어인 HTML이 복잡한 응용 프로그램 논리를 전혀 고려하지 않고 만들어졌기 때문에 발생한다. NetObjects Fusion과 Macromedia Dreamweaver와 같은 전형적인 HTML 저작도구는 웹 문서를 작성하거나 간단한 웹사이트를 만드는 데는 유용하지만 서버측 웹 응용 프로그램을 개발하는 데는 적합하지 않다.마이크로소프트 액티브 서버 페이지(Microsoft Active Server Pages ,ASP)는 웹 응용 프로그램의 개발과정을 단순화 하기 위해 설계되었다. 인터넷 인포메이션 서버(IIS) 3.0 부터 포함되기 시작한 ASP는 미리 준비되어 있는 많은 오브젝트와 함께 배우기 쉬운 스크립트 인터페이스를 제공하기 때문에 응용 프로그램 내에서 전역 변수를 선언하거나 사용자의 상태를 유지하는 것과 같은 여러 가지 개발 작업을 쉽게 처리할 수 있다. 또한 액티브X 컴포넌트를 이용하면 ODBC 데이터 베이스에 접근하거나 데이터를 텍스트 파일로 출력하는 것과 같은 추가적인 기능도 간단히 구현할 수 있다.ASP는 Allaire의 Cold Fusion이나 넷스케이프의 서버측 자바스크립트와 그 개념이 유사하며 Perl이나 C 스크립트를 이용한 기존의 CGI를 대체하기 위해 개발된 간편한 개발도구 이다. ASP는 온라인 인적 자원 관리나 계정을 다루는 응용 프로그램을 포함한 다양한 분야의 워크그룹 응용 프로그램의 개발에 매우 적합하다.동작 원리 ASP 응용 프로그램을 만들기 위해서는 일반적인 텍스트 포맷으로 HTML 코드와 스크립트 명령이 함께 들어있는 ASP 스크립트 파일을 만들게 된다. 웹 서버에서는 일반적인 클라이언트측 브라우저의 HTTP 요청에 대해 HTML 파일을 직접 브라우저측으로 전송해 주지만 IIS에서는 클라이언트측에 파일을 전송하기 전에 내부에 포함된 ASP 스크립트를 처리하게 된다. ASP 스크립트에서는 스크립트 명령이 웹 서버측에서 실행되면서 그 결과가 표준 HTML 코드로 브라우저측에 직접 출력된다.리스트 A는 ASP 파일의 간단한 예를 보여주고 있다. 이 텍스트에서 <%…%>로 표시되는 코드 부분에 주목하기 바란다. 이런 부분은 클라이언트측에 직접 전송되는 것이 아니라 서버측에서 실행되어야 하는 ASP 명령이라는 것을 가리킨다. 첫번째 줄이 ASP 엔진에게 VBScript 해석기를 이용해 스크립트를 처리할 것을 지시하고 있다. 두 째 코드는 <%Response.Write Now%>로 ASP 엔진이 현재의 날짜와 시간을 클라이언트측 브라우저에 출력하도록 지시한다.클라이언트측 브라우저에 출력되는 소스 페이지의 모습은 리스트 B와 같다. ASP는 IIS 내부에 ISAPI 응용 프로그램으로써 통합 구현되어 있다. 그렇기 때문에 ASP는 기존의 CGI 응용 프로그램이 브라우저 측으로부터 웹 서버를 통해 새로운 요청을 받을 때마다 개별적인 프로세스를 생성하는 것과 비교해 추가적인 처리 부담과 성능 저하를 유발하지 않는다. ASP에서는 모든 ASP 요청을 ISAPI 프로세스가 단독으로 처리해 준다. 게다가 IIS 4.0에서는 ASP를 IIS와는 별도의 프로세스로 실행시킬 수 있으며 이는 ASP가 실행중에 정지하더라도 웹 서버에 영향을 주지 않는다는 장점이 있다.마이크로소프트는 ASP를 언어 중립적(language-independent)으로 설계했다. 이 말의 의미는 서버측 스크립트를 작성하는데 자신이 원하는 언어를 선택할 수 있다는 것이다. 여기에서 사용할 수 있는 스크립트 언어로는 마이크로소프트의 비주얼 베이식을 간략화 해서 만든 VBScript와 넷스케이프사의 유명한 자바스크립트 언어를 마이크로소프트에서 구현해 낸 Jscript가 있다.ASP의 핵심 오브젝트 ASP에 기본적으로 준비된 다섯개의 오브젝트들은 웹 응용 프로그램 개발을 간단하게 해 주는 핵심이 된다. 이들 오브젝트를 이용하면 응용 프로그램의 변수를 저장하거나 브라우저측의 요청에 대한 정보를 추출할 수도 있으며 액티브X 오브젝트의 인스턴스를 생성할 수도 있다. 이제부터 설명할 다섯개의 오브젝트들은 Session, Aplication, Request, Response 그리고 Server이다.Session세션(Session) 오브젝트는 기본적으로 응용 프로그램 내에서 현재 사용자와 관련된 정보를 저장하는데 사용된다. 예를 들어 HTML 폼에서 현재 접속한 사용자가 사용할 언어를 선택하도록 하기 위해 “language” 필드를 만들어 두었다면 Session 오브젝트에서 <%Session("user_lang")=Request .Form ("language")%>와 같이 이 필드의 값을 user_lang 변수에 저장할 수 있다.이렇게 하고 나면 이 응용 프로그램의 다음 페이지에서는 Session 변수중에 user_lang를 참조해 출력할 데이터를 어떤 언어로 출력해야 할 지를 결정할 수 있다. Session 오브젝트가 영구히 존재하는 것은 아니다. 20분이 지나도록 사용자가 어떤 웹 페이지에도 접속하지 않게 되면 그 사용자의 세션 오브젝트는 사라지게 된다. 단일 응용 프로그램 오브젝트에 다수의 사용자가 동시에 접속하게 되기 때문에 동시접속(concurrency) 문제에 주의해야 한다. ASP에서는 Lock 메쏘드를 제공해 응용 프로그램의 변수를 동시에 하나 이상의 쓰레드가 수정하는 것을 막아 준다.Application Application 오브젝트는 해당 응용 프로그램에 하나의 인스턴스만을 이용해 모든 사용자에게 동일한 값을 제공한다는 것을 제외한다면 Session 오브젝트와 유사하다. Session 오브젝트의 변수들은 해당 응용 프로그램에 접속하는 각 사용자마다 다른 값을 가지게 되며 그에 따른 인스턴스를 생성하게 된다. Session 오브젝트와는 다르게 Application 오브젝트는 응용 프로그램이 종료될 때까지 계속 존재한다. 이 오브젝트는 해당 응용 프로그램에 첫번째 사용자가 접속함과 동시에 생성되며 일단 생성되고 나면 웹 서버가 정지하거나 응용 프로그램이 메모리에서 해제되기 전에는 사라지지 않는다.Request Request 오브젝트는 HTTP 요청과 관련된 정보에 접근하는데 사용된다. 이 정보에는 HTML 폼으로부터 입력된 사용자의 입력값에서부터 쿠키, x.509 증명 필드(x.509 certificate field) 또는 표준 CGI 환경 변수(또는 “서버 변수”)와 같이 표준 HTTP 요청과 함께 사용되는 모든 값이 포함된다.예를 들어 다음의 코드는 클라이언트측의 IP 주소를 출력해 줄 것이다. : <%=Re quest.ServerVariables("RE MOTE_ADDR")%>ResponseResponse 오브젝트는 일반적으로 두 가지 용도에 사용된다. 하나는 요청 클라이언트측으로 데이터(쿠키값 포함)를 출력하는 것이며 두 번째는 클라이언트 브라우저내에서 HTML 문서의 캐쉬 타임아웃(cache-timeout)값을 설정하는 것이다. 예를 들자면 우리의 첫번째 코드에서 Response.Write 메쏘드를 이용해 요청 클라이언트측으로 현재 날짜와 시간을 출력했다.Response.Expires 프로퍼티는 클라이언트측에서 새로운 웹 페이지를 요구하기 전에 클라이언트 머신에 다운로드디어 있는 HTML 페이지를 얼마나 사용할 것인지에 대한 시간값이 분 단위로 저장되어 있다. 이 프로퍼티를 0으로 설정하면 브라우저측에서 이 페이지를 열 때마다 서버측에 새로이 페이지를 전송할 것을 요구하게 된다. 이런 동작은 사용자가 요구한 페이지가 항상 최신의 내용을 반영할 필요가 있는 경우에 유용하다.ServerServer 오브젝트의 가장 중요한 기능은 액티브X 컴포넌트의 인스턴스를 생성하는 것이다. Server.CreatObject 메쏘드를 다음과 같이 사용하면 액티브X 컴포넌트가 초기화 된다. : Set myDBConnection=Server.CreateObject("ADODB.Connection")액티브X 컴포넌트 액티브X 컴포넌트(ActiveX components)는 웹 응용 프로그램에 다양한 기능을 부여하는 핵심적인 요소이다. IIS 4.0과 Visual InterDev에는 액티브X 컴포넌트가 포함되어 있으며 이를 이용하면 웹 응용 프로그램의 기능을 스크립트만을 통해 무한히 확장할 수 있다. 액티브X 컴포넌트 중에서 가장 자주 사용되는 것은 Database Access와 TextStream일 것이다. Database Access는 액티브X 데이터 오브젝트(ActiveX Data Objects, ADOs)를 이용해 마이크로소프트 억세스나 SQL 서버와 같이 ODBC 호환 데이터 베이스에 접근한다. TextStream 컴포넌트는 서버의 파일 시스템에 저장된 텍스트 파일로부터 데이터를 불러 오거나 수정하는데 사용된다.이 외에도 액티브X에는 개발자들이 활용하기에 따라 다양한 용도를 가지는 많은 내장 컴포넌트들이 포함되어 있다. IIS 4.0에는 MS Exchange 서버로부터 정보를 얻어와 메일을 발송하는데 필요한 collaboration data 오브젝트가 함께 제공된다. Visual InterDev에서는 브라우저 기능을 제공하는 컴포넌트를 제공하고 있는데 이는 웹 브라우저의 타입과 기능(프레임, 자바, 자바스크립트 지원 등)을 맵핑해 준다. 추가적으로 웹사이트에 배너 광고를 띄울 때 요긴하게 사용할 수 있는 광고 교체기(Advertisement Rotator)도 있다.개발자가 반드시 Visual InterDev에서 제공하는 액티브X 컴포넌트만을 사용해야 하는 것은 아니다. 비주얼 베이식과 같은 개발 도구를 이용해 얼마든지 자신만의 컴포넌트를 만들 수도 있다. 자체 제작한 컴포넌트와 InterDev의 내장 컴포넌트를 함께 사용한다면 가장 효율적인 시간과 노력의 투자로 강력한 응용 프로그램을 개발할 수 있을 것이다.조견표: 스크립팅 테크닉 서버 기반의 웹 응용 프로그램을 만드는 방법은 여러가지가 있다. 마이크로소프트의 액티브 서버 페이지(ASP)와 같은 템플릿 기반의 스크립팅 엔진은 평범한 CGI보다 월등히 강력하지만 개발이나 설치, 사용에 전용의 응용 프로그램 서버가 필요하다는 약점을 가지고 있다. 원문 작성일 : 1998/06/30