>  기사  >  백엔드 개발  >  CGI와 서블릿의 실행 방법의 본질적인 차이점은 무엇입니까? PHP와 Java의 웹 개발 원칙의 근본적인 차이점은 무엇입니까?

CGI와 서블릿의 실행 방법의 본질적인 차이점은 무엇입니까? PHP와 Java의 웹 개발 원칙의 근본적인 차이점은 무엇입니까?

WBOY
WBOY원래의
2016-12-01 00:01:151836검색

답글 내용:

이제 CGI 모드에서 실행되는 서버는 없어야 합니다. PHP는 FastCGI이며, 이것이 오늘날에도 이 계약이 계속될 수 있는 주된 이유입니다. 서블릿은 Python의 WSGI와 비교할 수 있습니다. 웹 서버와 웹 애플리케이션을 명확하게 구분할 수 있는 프로그래밍 인터페이스입니다. 들어오는 요청마다 서블릿 인터페이스를 한 번 호출하므로 웹 애플리케이션이 신경 쓸 필요가 없습니다. 웹 서버가 멀티스레딩, 멀티프로세스 또는 멀티플렉싱을 사용하는지 여부와 같은 기술적인 세부 사항이지만 이 인터페이스만 구현하면 됩니다. 프로그래밍 인터페이스이기 때문에 프로그래밍 언어와 관련이 있어야 합니다. 서블릿은 Java에서만 사용할 수 있습니다. (Java와 호환되는 방법이 없으면) 다른 언어는 서블릿으로 프로그래밍할 수 없습니다.
FastCGI는 네트워크 프로토콜은 소켓에서 작동하며 언어와는 아무런 관련이 없습니다. 과거에 CGI는 일반적으로 각 요청이 들어올 때 서버에서 프로세스를 포크했습니다. 이 요청만 처리하고 처리가 완료된 후에 종료되었습니다. 처리 프로세스는 환경 변수에서 HTTP 헤더를 얻고 POST에서 POST를 읽는 것이었습니다. 표준 입력 데이터, 표준 출력에서 ​​HTTP 응답을 출력합니다. 지속적으로 프로세스를 생성하고 파괴해야 하기 때문에 이 구현의 성능은 상대적으로 낮고 기능에도 많은 제한이 따릅니다. FastCGI는 CGI를 개선한 것으로 단일 연결에서 여러 개의 연속 요청을 수락하고 이를 하나씩 처리하므로 처리량이 향상됩니다. FastCGI는 CGI와 마찬가지로 언어와 관련이 없습니다. FastCGI 프로토콜을 따르는 한 모든 언어에서 FastCGI를 사용할 수 있지만 일반적으로 한 번에 하나의 요청만 처리할 수 있습니다. 그래서 어느 정도의 동시성을 확보해야 합니다. (FastCGI에도 멀티플렉싱 기능이 있지만 얼마나 잘 지원되는지는 모르겠습니다.)

하지만 사실 웹 입장에서는 PHP는 FastCGI를 사용하지만 요청당 한 번씩 PHP 스크립트가 호출됩니다. 많은 PHP 프로그래머는 유지 관리를 어렵게 만들기 위해 웹 페이지와 코드를 혼합하는 것을 좋아하지만, PHP는 Java와 같은 MVC를 사용하여 OOP 사용도 지원합니다. Java는 코드를 삽입할 수 있는 JSP와 같은 템플릿도 지원합니다. 예를 들어 Java는 동일한 프로세스에서 작동하고 전역 개체를 호출할 수 있으며 추가 스레드 풀을 사용할 수 있는 반면, PHP 개체의 수명 주기는 기본적으로 단일 요청 범위로 제한되지만 많은 것들이 있습니다. 여전히 유사합니다. 모두 요청 지향 프로그래밍입니다. 차이점을 보려면 간단한 서버 코드
CGI로 시작하세요. Python에 내장된 CGIHTTPServer
를 보면 주요 코드는 다음과 같습니다. run_cgi에서 프로세스를 포크한 후 상위 프로그램을 실행합니다. 서버 프로세스와의 하위 관계
CGI와 서블릿의 실행 방법의 본질적인 차이점은 무엇입니까? PHP와 Java의 웹 개발 원칙의 근본적인 차이점은 무엇입니까?서블릿은 spring+jetty를 보고,
CGI와 서블릿의 실행 방법의 본질적인 차이점은 무엇입니까? PHP와 Java의 웹 개발 원칙의 근본적인 차이점은 무엇입니까?앱 코드 서버와 동일한 프로세스
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.