비교 차트
비교 근거 | CGI | 서블릿 |
---|---|---|
기본 | 프로그램은 원시 OS로 작성됩니다. | 자바를 사용하는 프로그램. |
플랫폼 의존성 | 플랫폼에 따라 다름 | 플랫폼에 의존하지 않습니다. |
프로세스 생성 | 각 클라이언트 요청은 자체 프로세스를 작성합니다. | 프로세스는 클라이언트 요청의 유형에 따라 작성됩니다. |
스크립트 변환 | 실행 파일 (서버 OS 고유)의 형태로 제공됩니다. | Java 바이트 코드로 컴파일됩니다. |
에 실행 | 별도의 프로세스 | JVM |
보안 | 공격에 더 취약합니다. | 공격에 저항 할 수 있습니다. |
속도 | 천천히 | 빨리 |
스크립트 처리 | 곧장 | 스크립트를 실행하기 전에 스크립트가 번역되고 컴파일됩니다. |
이식성 | 포팅 할 수 없습니다. | 가지고 다닐 수 있는 |
CGI의 정의
CGI (Common Gateway Interface) 는 대화식 웹 페이지를 실행할 수 있도록 웹 서버에서 외부 프로그램 (CGI 스크립트)을 처리하는 인터페이스입니다. CGI는 1993 년 NCSA (National Center for Supercomputing Applications) 에 의해 개발되었습니다. 서버 측에 상주하며 웹 브라우저가 웹 서버의 프로그램과 상호 작용할 수있게합니다. 예를 들어, 웹 페이지가 데이터베이스를 쿼리하거나 사용자가 CGI 스크립트가 호출 될 때 서버에 양식 정보를 제출하는 경우입니다. 서버는 GET 또는 POST 두 가지 방법으로 해당 정보를 응용 프로그램에 전달한 다음 응용 프로그램이 서버에 응답하여 브라우저에 다시 연결합니다. 이 방법으로, 브라우저는 사용자에 대해 몇 가지 결과를 얻습니다.
CGI는 CGI 스크립트를 실행하고 특정 프로그램에 대한 결과를 다시 서버에 제공하는 방법을 설명하기위한 규정입니다. CGI의 기능은 브라우저에서받은 정보를 스캔하여 적절한 응답을 생성하는 것입니다. 작업 완료 후 CGI 스크립트가 종료됩니다. Common Gateway Interface에서 공용은 모든 운영 체제 또는 프로그래밍 언어에서 정상적으로 작동 할 수 있음을 나타냅니다.
이전에는 UNIX 셸 스크립트와 PERL이 CGI 프로그램을 작성하는 데 사용되어 CGI "스크립트" 라는 이름이 붙여졌습니다. 그러나 이제는 C, C ++, Perl, Visual Basic 또는 Python과 같은 언어를 사용할 수 있습니다. 웹 서버는 실행 파일을 특정 디렉토리에서 CGI 프로그램으로 처리 할 수 있기 때문에 CGI는 잠재적 보안 문제를 이끌 수 있습니다. CGI는 별도의 프로세스로 각 클라이언트 요청을 처리하므로 서버로드가 증가하므로 처리 속도가 느려집니다.
서블릿 정의
서블릿 은 웹 브라우저 또는 HTTP 클라이언트와 HTTP 서버 간의 상호 작용을 용이하게하는 중간 프로그램 역할을하는 Java 기반 웹 구성 요소입니다. 서블릿은 CGI와 마찬가지로 웹 페이지 양식을 사용하여 정보를 수집하고 데이터베이스에서 레코드를 표시하며 컨테이너를 사용하여 동적 웹 페이지를 생성하는 데 사용할 수 있습니다. 서블릿은 플랫폼에 의존하지 않고 플랫폼에 독립적 인 바이트 코드로 컴파일 된 Java 클래스입니다. 플랫폼 중립 바이트 코드는 Java 웹 서버에 의해 동적으로 저장되고 실행될 수 있습니다. 서블릿은 소켓과 RMI 메커니즘을 사용하여 애플릿, 데이터베이스 또는 다른 데이터베이스 프로그램 간의 연결을 설정합니다.
서블릿 컨테이너는 HTTP 및 HTTPS 프로토콜 을 지원하는 웹 서버의 일부입니다. HTTP / HTTPS 프로토콜을 사용하여 요청 / 응답 방법을 사용하여 웹 클라이언트와 상호 작용할 수 있습니다. CGI와 달리 서블릿은 웹 서버의 주소 공간에서 실행되며 각 클라이언트는 반드시 개별적으로 처리되지 않습니다. 서블릿에서 서버의 리소스를 보호하기 위해 서버에 제약 조건 모음이 적용됩니다.
CGI와 서블릿의 주요 차이점
- CGI 스크립트는 네이티브 OS로 작성되어 특정 디렉토리에 저장됩니다. 반면 서블릿 프로그램은 대개 Java로 작성되어 Java 바이트 코드로 컴파일되고 JVM에서 실행됩니다.
- CGI는 플랫폼에 따라 다르므로 운영 체제간에 전환하기가 어렵습니다. 반대로, 서블릿은 JVM이 설치된 운영 체제에서 실행될 수 있으므로 플랫폼에 독립적입니다.
- CGI에서 도달하는 각 클라이언트 요청은 서블릿, 프로세스가 불필요하게 생성되지 않고 JVM의 메모리 공간을 공유하는 동안 별도의 프로세스를 생성 할 수 있습니다.
- CGI 스크립트는 서버의 원시 OS에 작성된 실행 가능 프로그램입니다. 반대로 서블릿은 JVM에서 실행되는 Java 바이트 코드로 컴파일됩니다.
- Servlet은 Java를 사용하기 때문에 CGI보다 안전합니다.
- 서블릿의 속도, 성능 및 효율성은 CGI보다 우수합니다.
- CGI 스크립트는 직접 처리 할 수 있습니다. 반대로 서블릿은 먼저 프로그램을 변환하고 컴파일 한 다음 처리합니다.
- CGI가 아닌 동안 이식성 서블릿은 이식 가능합니다.
결론
CGI와 서블릿은 같은 방식으로 작동하지만 서블릿은 빠르고 안전하며 플랫폼 독립적이며 쉽게 개발할 수 있으며 여러 API를 통해 액세스 할 수 있고 다양한 웹 서버에서 지원되므로 서블릿을 CGI보다 유리하게 사용할 수 있습니다.