CGI와 서블릿 간의 차이점

Anonim

이를 통해 사용자는 서버에 상주하는 프로그램을 실행하여 데이터를 처리하고 데이터베이스에 액세스하여 관련 내용을 생성 할 수 있습니다. 이러한 프로그램은 프로그램이므로 원시 운영 체제로 작성된 다음 특정 디렉토리에 저장됩니다. 서블릿은 CGI와 동일한 서비스를 제공하는 것을 목표로하는 Java 구현이지만 기본 운영 체제에서 컴파일 된 프로그램 대신 자바 가상 머신에서 실행되는 Java 바이트 코드로 컴파일합니다. Java 프로그램은 원시 코드로 컴파일 될 수 있지만 자바 바이트 코드로 컴파일하는 것을 선호합니다.

서블릿이 CGI를 능가하는 첫 번째 이점은 플랫폼 독립성입니다. 서블릿은 JVM이 설치되어있는 한 모든 운영 체제에서 실행할 수 있으므로 운영 체제를 전환하더라도 문제가 발생하지 않습니다. CGI를 사용하면 운영 체제를 전환하는 것이 새 운영 체제에서 프로그램을 다시 컴파일해야하므로 어렵고 힘든 과정입니다.

CGI에서 독립적 인 프로그램을 실행하기 때문에 실행될 때 자신의 프로세스를 생성합니다. 서블릿에서는 JVM의 메모리 공간을 공유하기 때문에 서블릿에서는 발생하지 않습니다. 이로 인해 오버 헤드와 관련된 문제가 발생할 수 있습니다. 특히 사용자 수를 기하 급수적으로 늘릴 때 더욱 그렇습니다. 또한 프로그램이 서버에서 실행되면 어떤 방식 으로든 프로그램이 제어되지 않으므로 취약점 문제가 발생합니다.

나중에 CGI를 사용할 때 스크립트를 통해보다 일반적인 방법을 사용합니다. 이렇게하면 프로그램을 만드는 데 필요한 시간이 줄어들며 일반적으로 더 안전합니다. CGI를 사용하면 스크립트를 즉시 실행할 수 있으며 서블릿은 스크립트를 Java로 변환하고이를 서블릿으로 컴파일해야로드 시간이 약간 늘어납니다.

요약:

1. CGI는 일반적으로 서버 운영 체제의 네이티브 인 실행 파일입니다. 서블릿을 원시 OS로 컴파일 할 수도 있지만 Java 바이트 코드로 컴파일 한 다음 JVM에서 실행합니다. CGI 프로그램은 플랫폼에 따라 다르지만 서블릿은 플랫폼에 독립적입니다.

3. CGI 프로그램은 서블릿이 JVM

4에서 실행되는 동안 컴퓨터에서 별도의 프로세스로 실행됩니다. CGI는 서블릿보다 공격에 더 취약 할 수 있습니다.

5. CGI는 서블릿으로 실행되기 전에 스크립트를 번역하고 컴파일해야하는 동안 직접 스크립트를 처리 할 수 ​​있습니다.