The abbreviation ISAPI means Internet Server Application Programming Interface. This interface developed by Microsoft, facilitates fast and efficient communication with a server. Extensions and filters built using ISAPI are superior in performance to ASP scripts.
ISAPI can be implemented using extension and filter applications. Developers utilize C or C++ to create both applications. ISAPI extensions processes are the same as Active Server Pages (ASP) and HTML files but they communicate much more quickly because of their characteristic compiled code. In comparison to Common Gateway Interface (CGI), ISAPI processes every request via isolated threads and synchronized work items rather than building a unique process for every request. This makes for more resourceful usage of systems.
Other differences between CGI and ISAPI extensions are that the latter reads most of its information from extension control block while also using ReadClient’s callback function. Data is also sent via WriteClient instead of standard output processing for CGI. Common used CGI variables are accessible to ISAPI and where other variables are required ISAP calls the Get Server Variable function.
Communication of the completion of tasks by ISAPI extensions is done via WriteClient callback functionality instead of via standard output. These extensions also re-route requests using ServerSupportFunction. The extensions have the ability to run on Internet Information Services (IIS) which makes them malleable to working with processes controlled by IIS. IIS processes requests for ISAPI extensions and loads the DLL into memory and processes all other requests. When the extension is unloaded, the TerminateExtension function is used if the extension is present.
As it relates to ISAPI filters which also run on and intensify IIS, every request is run on a server then filtered until one is found that needs to be processed. ISAP filters can be created with a view to investigating and editing data streams. Externally configured and internally programmed priorities will decide how filters are called for processing.
ISAP filters may also be put in place as DLL files, registered on the server globally or based on site level requirements. Filters begin working when worker processes begin and communicate and pay attention to all site requests.
Usual tasks carried out by ISAPUI filters include; amending URLs and headers received from the client, managing how files get linked to URLs, username and passwords with authentication. They also investigate requests after validity has been accomplished, amend response that go to the client and handle process access denied responses. ISAPI filters run processing after client connection is closed and a request is complete in addition to doing traffic analysis, custom authentication and dealing with compressing and encryption.
There are however, some setbacks with using ISAPI. One has to consider that the interface is not supported by the associated services as is the case with ASP and COM. Some functionality also has to be developed manually to allow for session state maintenance.
Despite this there are ways to combat the disadvantages of ISAPI extensions and filters. This includes utilizing ISAPI filters when required for the particular application. Filters used should be built to dispatch error responses in stead of handing requests. ISAPI extensions also allow the developer to build their worker thread pool to allow main I/O threads to complete their tasks.