'is'에 해당되는 글 2건

  1. 2012.08.07 internet server api
  2. 2012.08.07 ISAPI (Internet Server Application Program Interface)
프로그램/isapi2012. 8. 7. 11:50

마이크로소프트사 웹 서버 인터넷 정보 서버(IIS)가 구비되어 있으며, 외부 프로그램을 기동하기 위한 인터페이스. WWW 서버는 클라이언트로부터 데이터베이스 접속 등의 요구가 오면 외부 게이트웨이 프로그램을 기동시켜 그 요구를 처리한다. 외부 프로그램을 기동하는 방법으로는 공통 게이트웨이 인터페이스(CGI)가 유명한데, 복수의 WWW 클라이언트로부터의 접속 요구가 동시에 실행되는 경우는 특히 부하가 큰 프로세스 생성 처리를 수반한다. 반면, ISAPI를 이용하면 IIS가 제공하는 응용 프로그램 인터페이스(API)를 이용해서 웹 서버 기능을 정교하게 제어할 수 있으며, 실행 시의 부하도 경감할 수 있다. ISAPI를 이용한 확장 프로그램에는 ISAPI Extension과 ISAPI Filter가 있다.

 

 

ISAPI 필터란?
ISAPI 필터는 인터넷 정보 서버의 앞단에 위치하면서 인터넷 정보 서버로 들어온 모든 request에 대해 가장 먼저 처리할 권한과, 인터넷 정보 서버가 생성한 response를 클라이언트에 보내주기 전에 가공할 수 있는 권한을 갖는다.
ISAPI 필터를 작성할 때 잊지 말아야 할 것은 가능한 한 최소한의 작업을 이 곳에서 처리해야 한다는 사실이다. 웹 사이트에 대한(가상 디렉터리가 아닌 웹 사이트 전체이다!) 모든 request가 ISAPI 필터를 거칠 수 있기 때문에 과도한 작업을 필터에 걸어주게 되면 웹 사이트 전체의 퍼포먼스에 심각한 영향을 끼치게 된다.

ISAPI 필터의 동작 원리
ISAPI 필터는 웹 서비스가 시작될 때 인터넷 정보 서버와 같은 프로세스 공간에 로딩되는데, 이 때 ISAPI 필터는 자신이 처리할 이벤트 정보를 인터넷 정보 서버에게 알려준다. 클라이언트로부터 request가 들어오고 response를 전송할 때 인터넷 정보 서비스는 ISAPI 필터가 등록한 이벤트 정보를 사용해 각각의 필터에게 특정 이벤트가 발생하였음을 알려주고, ISAPI 필터는 이벤트 핸들러에서 원하는 처리를 한다.

1) 웹 서비스가 시작될 때 ISAPI 필터는 자신이 처리할 이벤트를 인터넷 정보 서버에게 알린다.
2) 클라이언트로부터 request가 들어왔을 때 인터넷 정보 서버는 request와 관련된 이벤트를 알려줄 ISAPI 필터가 있는지 확인하고, 그러한 필터가 존재한다면 request에 대한 정보를 ISAPI 필터에게 전달한다.
3) ISAPI 필터는 이벤트 핸들러에서 request에 대한 작업을 수행하고 제어권을 다시 인터넷 정보 서버로 넘긴다.
4) 인터넷 정보 서버는 response를 생성한 후 response와 관련된 이벤트를 알려줄 ISAPI 필터가 존재하는지 확인하고, 그러한 필터가 있으면 response에 대한 정보를 ISAPI 필터에게 전달한다.
5) ISAPI 필터는 이벤트 핸들러에서 response에 대한 작업을 수행하고 response를 클라이언트에게 전달한다.

이러한 과정을 수행하면서 인터넷 정보 서버와 ISAPI 필터는 HFC(HTTP_FILTER_CONTEXT)라는 구조체를 사용해 상호간에 정보 교환을 한다.  

'프로그램 > isapi' 카테고리의 다른 글

ISAPI (Internet Server Application Program Interface)  (0) 2012.08.07
Posted by wrnly
프로그램/isapi2012. 8. 7. 11:18


  ISAPI는 CGI 보다 더 빠르게 실행되는 웹서버 프로그램을 작성할 수 있도록 해주는 일련의 윈도우 프로그램 호출이다. CGI 프로그램의 단점은 매번 실행될 때마다, 그것의 고유의 주소공간과 함께 별개의 프로세스로 실행된다는 것인데, 특히 많은 사용자들을 위해 수많은 인스턴스들이 실행되는 경우 가외의 명령어들이 실행되는 결과를 낳는다. 이제 사용자들은 ISAPI를 사용하여 HTTP 프로그램의 프로세스와 주소공간의 일부로서 동작할 수 있는 DLL 프로그램 파일을 만들 수 있다. DLL 파일들은 HTTP가 시작되면 컴퓨터 내에 적재되며, 필요한 동안 계속 남아있게 되므로, CGI 프로그램처럼 자주 찾아 메모리 내로 읽어들일 필요가 없게된다.

 

  기존의 CGI 프로그램들은 로직을 재작성하지 않고도 ISAPI를 이용한 DLL로 변환될 수 있다. 그러나, 스레드를 지원함으로써 한 개의 DLL 인스턴스가 여러 명의 사용자들을 지원할 수 있도록 재 작성될 필요는 있다.

 

  ISAPI DLL의 특별한 종류를 ISAPI 필터라고 부르는데, 이것은 모든 HTTP 요청을 위해 제어권을 받도록 지정될 수 있다. 이외에도 사용자는 암호화/복호화, 기록유지관리, 요구심사 또는 기타 다른 여러 가지 목적을 위한 ISAPI 필터를 제작할 수 있다.

'프로그램 > isapi' 카테고리의 다른 글

internet server api  (0) 2012.08.07
Posted by wrnly