Microsoft ISAPI Technologies
Microsoft introduced another Web server interface with their Web server, Internet
Information Server. This is the Internet
Server Application Programming Interface (ISAPI), and differs
from the CGI in that it allows compiled code within a dynamic link library (DLL)
to be executed directly by the Web server. As with the CGI, the code can access
all the information in the client request, and it generates the entire output
for the returned page.
Most developments in Microsoft's Web arena have been based on the ISAPI interface.
One early and short-lived product was dbWeb,
a data access technology that provided a range of searching, filtering and formatting
capabilities for accessing data stored on the server, and for interacting with
the client.
A second development was the Internet Database Connector
(IDC). This proved a big hit with developers – not only because it was fast
and efficient (unlike dbWeb), but also because it was a lot more generic and
easier to program. IDC introduced the concept of templates, allowing programmers to easily adapt
existing HTML pages to use its features and quickly build new applications around
it.
IDC uses two text files for each 'page'. The first is a simple script that
defines the way that the data should be collected from the server-based database.
In essence, it is just a SQL statement plus some configuration information:
{this is the query file
named getuserlist.idc}
Datasource: GlobalExampleData
Username: examples
Password: secret
Template: getuserlist.htx
SQLStatement:
+ SELECT DISTINCT UserName
+ FROM Person ORDER BY UserName;
The server executes this file to obtain the results recordset, then loads a
template file:
{this is an extract from
the template file named getuserlist.htx}
...
<TABLE>
<TR>
<TD>User name:</TD>
<TD>
<SELECT NAME=selUserName>
<%BeginDetail%>
<OPTION VALUE="<%UserName%>"><%UserName%>
<%EndDetail%>
</SELECT>
</TD>
</TR>
</TABLE>
...
The template is just an ordinary Web page, including HTML, text and other objects,
but with one or more specially delimited placeholders inserted. And the syntax
for these placeholders, and the other simple program code constructs that are
supported, is eerily like ASP. Of course, it was from this that ASP actually
evolved: