= !MapGuide RFC 22 - Replace FastCGI = This page contains an change request (RFC) for the !MapGuide Open Source project. More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. == Status == ||RFC Template Version||(1.0)|| ||Submission Date||June 29, 2007|| ||Last Modified||Ronnie Louie [[Timestamp]]|| ||Author||Ronnie Louie|| ||RFC Status||implemented|| ||Implementation Status||completed|| ||Proposed Milestone||2.0|| ||Assigned PSC guide(s)||(when determined)|| ||'''Voting History'''||July 23, 2007|| ||+1||Paul, Tom, Jason, Andy, Bruce, Haris, Bob|| ||+0|||| ||-0|||| ||-1|||| == Overview == This RFC proposes to replace the FastCGI agent on the web-tier with an ISAPI extension and Apache module for IIS and Apache webservers respectively. == Motivation == FastCGI is a protocol for a high performance alternative to CGI for interfacing internet applications with a web server. Current use of FastCGI has revealed some stability and performance issues relating to this technology (http://trac.osgeo.org/mapguide/ticket/129). The current FastCGI implementation for Microsoft Internet Information Server (IIS) was released in 2002 and has not been maintained. IIS 7 is supposed to feature built-in FastCGI support, however it currently is in beta and should not be considered for use in a production environment. The Apache module for FastCGI also has not been maintained as the current implementation was released in 2003. More recently, a binary compatible alternative FastCGI module has been developed by another third party developer to address process management issues, but it's stability and performance is rather unknown. By replacing the FastCGI agent with an ISAPI extension or an Apache module, the web-tier will be using more proven and stable technologies, as well as reducing the dependency on third party development for addressing stability, performance and other issues. == Proposed Solution == The MapAgent.exe will still continue to support running applications in CGI mode. However, a new ISAPI extension and Apache module will be built for enhanced performance rather than using FastCGI. Request handling that is currently performed by the FastCGI agent will be implemented in the new ISAPI extension or Apache module. These modules will interface directly with the web server and will parse the http request parameters for creating a server request to be executed by the MapGuide Server. The response will be returned to the web server which sends the response back to the client. Complete round trip processing of the request is expected to be at least equal to or better than the performance when using FastCGI. The web tier is currently configured to run PHP with FastCGI. The configuration will need to be modified to use the ISAPI and Apache modules for PHP. == Implications == FastCGI will no longer be used, however existing applications that use .fcgi in the url (i.e. http://localhost/mapguide/mapagent/mapagent.fcgi?OPERATION=ENUMERATERESOURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library://&TYPE=&DEPTH=-1) can continue to work if the web server is configured to map the .fcgi extension to the new ISAPI module. This re-mapping can be done automatically by the installer. Installers will need to be modified to install the ISAPI extension for IIS, or the Apache module for Apache web server. Installers will also need to install/configure the PHP ISAPI/Apache modules. == Test Plan == Tests will need to be done to evaluate the performance and stability of the ISAPI and Apache modules against FastCGI. == Funding/Resources == Autodesk