This paper describes the design of the HTTP-based data servers for the
Distributed Oceanographic Data System, and the clients that access them. The architecture for this system
is described in ``
DODS--Data Delivery Architecture'' and the communications protocol used by the
components is described in ``
DODS--Data Access Protocol''. Those papers are required reading for
this one. The data servers are built by assembling three programs which
read parameters passed from
National Center for Supercomputing Applications's
HTTPD to the programs via the
Common Gateway Interface
interface. In the design, HTTPD is used as a network I/O management tool
which simplifies setup and maintenance of the data server. The programs
which comprise a data server return
Multipurpose Internet Mail Extensions documents as query results. This
paper also describes how to build DODS client libraries which use the
information provided by data servers to mimic the responses produced by
various data-access Application Programmer Interfaces (API) when they are
used to read data files or data sets. While the construction of the data
servers is typically straight forward, building the surrogate library for a
particular API can be very complicated. This complexity is the result of
the need to translate from the DODS
Data Access Protocol (DAP) representation of
information to the representation used by the API. To accomplish this
translation, the programmer must have a solid command of both the DAP and
the target API. Although hard to implement, this system has the advantage
of providing for interoperability between several different APIs supported
by DODS. As new APIs are added the set of interoperable APIs will further
expand.