Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 FAQ
Delphi Programming FAQ
[10] [INTERNET] ISAPI, CGI, ASP 이게 도대체 먼가여 ?
김성진.kark [kark] 27159 읽음    2001-09-10 08:56
>> 질문: 박정모 님
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=10868

질문이 조금은 황당한가요?
지금 근무하고 있는 회사(www.WinTech.co.kr)에서 제가 작성한 프로그램은
클라이언트쪽인데, 그 서버측 프로그램이 ISAPI를 이용한 것입니다. 서버쪽
으로는 아는게 전혀 없어서 문제가 생겨도 저하고는 의논을 않고 있습니다.

서버쪽 프로그래밍 하시는 분이 팀장으로 계신데 이 분은 포인터가 뭔지도
모르시는 분이라서, 그러니까 프로그래밍을 오랜동안 한 분이 아니라서,
그 분이 프로그램을 제대로 짯을까 의구심이 들기도 하네요.

이런 이유로 서버쪽도 제가 핸들링 할 수 있게 되었으면 좋겠다 싶어 ISAPI공부를
시작해 볼까 하는데, 팀장님께 설명을 부탁드려도 제가 잘 이해를 못하겠더군요.

우선 제가 알고 있는 웹어플은 ActiveX등과 같이 다운로드 되어서 실행되는
것이 있고, 서버측에서 사용자의 요구에 응답하는 것이 있다고 알고 있습니다.

ActiveX는 작성해본 경험이 있어서 그 개념을 어느정도 잡고 있는데, CGI등의
서버측 어플은 한 번도 작성해본 경험이 없습니다.

어떤 프로그램이던지 자극-반작용의 원리가 적용되듯이 서버측 어플역시
웹서버등이 자극 - 웹서버가 어플을 호출 - 하면 그에 상응하는 반작용을
하게 되는 원리로 동작 하겠죠?
어플의 입장에서 보면 외부에서 인자를 전달해서 자신을 호출하면, 그에
대한 적절한 대답을 하는 것이겠죠.

질문은 이렇습니다.

이런 원리로 서버측 어플이 동작한단건 알겠는데, 그럼 도데채 CGI, ISAPI,
ASP란 뭔가요? 그 자체가 델파이, VC++, CuteFTP 등과 같이 형체를 가지는
것으로서 웨서버와 협력하는 소프트웨어로를 말하는 건가요? 아님 단지,
프로토콜만을 지적하는 것인가요?

제가 알고 싶은것은 웹어플의 동작원리라기 보다 CGI, ISAPI, ASP 그 자체의
의미입니다. 웹어플이라고 그러면 그냥 웹서버에 호출되는 프로그램 이름
적어주면 저절로 동작하게 되는게 아닌가요? CGI, ISAPI, ASP마다 고유한
동작방법이 있을까 상상을 해보지만, 상상은 사실일 수 없으니까...


>> 답변: 박지훈.임프
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=10870

임프랍니다.

말씀하신 CGI, ISAPI, ASP 외에도 PHP, JSP 등을 모두 합해 웹서버 어플리케이션이라고 합니다.
개념적으로, 모든 웹서버 어플리케이션은 CGI에서부터 파생된 것입니다. 그리고 모든 웹서버 어플리케이션은
정적인 파일 대신 사용자의 요구에 따라 동적으로 컨텐츠를 만들어내서 사용자에게 전달하는 것이 목적이지요.

최초의 웹서버 어플이자 아직도 많이 사용되고 있는 CGI는 그냥 일반적인 콘솔어플리케이션(도스어플)입니다.
단지 콘솔 입력으로 전달받은 값과 환경변수로 입력받은 값을 HTTP 관련 정보로 이해하고, 그 결과를 출력으로
컨텐츠를 만들어서 내보냅니다. 콘솔 어플이기 때문에 콘솔 어플을 만들어본 개발자라면 CGI에서 어떻게
입력된 정보를 이해해서 어떻게 내보내야 하는지만 알면 누구나 CGI를 만들 수 있다는 장점이 있습니다.
CGI는 컴파일된 프로그램일 수도 있고(C/C++ 등으로 만든 경우) 스크립트일 수도 있습니다. (펄이나 쉘
스크립트로 만든 경우)

다른 웹서버 어플리케이션은 모두 CGI에서 파생된 것인데, 간단히 말하자면 CGI의 단점을 보완하는 방향으로
발전해왔습니다. 그렇다면 CGI의 단점을 이해해야 하는데.. 첫번째는, 그 자체가 하나의 프로세스로 돌아가는
어플이기 때문에 동시에 여러 요청을 받을 수 있는 웹서버 어플의 특성상, 한꺼번에 엄청나게 많은 사용자
요청을 받을 경우 그 요청의 숫자만큼 서버의 자원을 소모한다는 것입니다. 두번째 단점은, 작성하기가
비교적 어려워서 개발 기간이 꽤 든다는 것이지요.

소모하는 자원 측면에서 CGI를 개선한 기술로 ISAPI와 자바 서블릿을 들 수 있습니다. 이 두가지 기술은
각 요청을 프로세스로 생성하지 않고 쓰레드로 생성하기 때문에, 매번 요청시마다 소모하는 자원의 양이
극적으로 줄어듭니다. 게다가 디비 커넥션 등 매번 시간을 요구하는 작업을 풀링해둘 수 있는 장점까지
있어서, 성능상으로는 가장 유리합니다. 서블릿의 경우 자바 기술이므로 수도 코드라고 할 수 있는 자바코드를
실행가능 코드로 바꾸어야 하는 오버헤드가 있으므로, 아무래도 ISAPI가 성능면에서는 더 앞섭니다.

개발기간의 측면에서 CGI를 개선한 기술로서 ASP, JSP, PHP를 들 수 있습니다. 이들 기술은 스크립트 기반
인데, 마치 HTML 내에 코드를 넣어놓은 꼴로 구현하므로 HTML Embeded라고 합니다. 화면에 표시할 HTML의
중간중간에 실행 스크립트를 배치하므로 작성하고 이해하기가 아주 편합니다. 대신, 스크립트이므로 아무래도
매번 요처아다 파싱하는 시간이 들어간다는 단점이 있습니다. (JSP는 이런 단점의 예외로, 첫번째 요청에서
자동으로 서블릿으로 컴파일되므로 이들 세가지 중에서 가장 기술적으로 앞서 있다고 할 수 있습니다.)

+ -

관련 글 리스트
10 [INTERNET] ISAPI, CGI, ASP 이게 도대체 먼가여 ? 김성진.kark 27159 2001/09/10
(링크)     C++Builder FAQ > [INTERNET] ISAPI, CGI, ASP 이게 도대체 먼가여 ?
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.