【发布时间】:2011-12-06 14:25:50
【问题描述】:
CGI 和 Java servlet 的主要区别是什么?
【问题讨论】:
CGI 和 Java servlet 的主要区别是什么?
【问题讨论】:
Servlet 在一个进程中运行(具有附加功能的 HTTP 服务器,称为 Servlet 容器),只要该进程存在,它们就存在。
CGI 意味着每次有客户端请求时,HTTP 服务器都会创建新的进程实例来服务该请求。这是性能杀手。此外,由于每个请求都有一个新进程,这意味着 CGI 不能像 Servlet 那样在内存中聚合来自多个请求的数据,并且必须求助于外部持久存储(文件或数据库)。这也是性能杀手。
【讨论】:
最大的不同是 CGI 在十多年前就死了。
Servlet 是一种标准,Java CGI 从未真正成为。
【讨论】:
Java servlet 在需要运行以服务请求的某种容器(Tomcat、JBoss、Glassfish、Jetty 等)中运行。
CGI 通常会为每个请求生成一个新进程(考虑到启动 JVM 有点昂贵),这不是 Java 的最佳解决方案。
【讨论】:
至少,在 servlet 容器中使用 Java servlet 应该会提供更好的性能。在 Java 中使用任何类型的 CGI 很可能必须为每个请求生成新的 Java 进程,这并不理想。在通过 Web 在服务器端使用 Java 时,使用 Servlets 确实是最好的方法。
【讨论】: