The heart and soul of any good Web site is the back-end server. The Web server can provide static Web pages in the form of HTML documents, but it can also execute applications that significantly enhance the content of a site. The idea of executing content on a Web server is not new. In past implementations, a Web server used the Common Gateway Interface, or CGI, to execute content. CGI is a technology that allows a Web server to start an executable and use that process to accomplish tasks such as sending e-mail. CGI applications add much-needed functionality to Web sites, but they are typically slow because a CGI application runs as a separate process. Since the Web server and the CGI application must exchange data across processes, communication between them is slowed down considerably.