OPeNDAP Architecture

OPeNDAP links a data-handling application with disparate datasets in remote locations.

OPeNDAP uses the client-server model, with a client sending a data request across the Internet to a server, which answers with the requested data. The client is an application that uses OPeNDAP functions for getting data. The server is a Web server that can retrieve data from particular datasets.

DODS
                  Architecture

The OPeNDAP server

A OPeNDAP server is a Web server with a set of CGI scripts that are specific to the format of the dataset it serves. When the server receives a URL that corresponds to a script in the OPeNDAP server's cgi-bin directory, the server executes the script. A typical OPeNDAP script fetches a selection of data from the dataset, converts it to a binary format, packages it with some descriptive information, and sends it to the client.

A OPeNDAP server must have read access to the datasets it serves, and to the OPeNDAP scripts. Setting up a OPeNDAP server is not much harder than setting up a normal Web server. Using a secure Web server secures the data in OPeNDAP as well.

The OPeNDAP client

There is no set appearance or functionality for a OPeNDAP client; it can be implemented in a variety of ways, and perform any functions that its users require.

The OPeNDAP client uses OPeNDAP functions to request data from the OPeNDAP server, and to interpret the results received from the server into a particular data format. The data request functions use the http protocol, sending an enhanced URL to the server. The data interpretation functions translate the data sent by the server into the data format expected by the rest of the application. Because the expected data formats vary, there are different kinds of DODS clients; for example, a JGOFS OPeNDAP client furnishes its data in JGOFS format.

You can create a OPeNDAP client by relinking an existing application, or by writing a new one. To be eligible for conversion to a OPeNDAP client, an application must make use of one of the data access APIs that OPeNDAP supports.

OPeNDAP functions

The OPeNDAP software is composed of a core library, and a variety of libraries that each support a different data access API.

The OPeNDAP core is a set of C++ classes for building OPeNDAP servers and OPeNDAP clients. The individual libraries for each data access API specialize these classes into a set of data-handling functions, specific to that data access API.

When you relink an existing application with the OPeNDAP libraries, you are essentially replacing the application's data-handling functions with same-named ones in the OPeNDAP libraries. The calling application is unaware that the data access API has changed, since the function names haven't changed and it still gets its data in the format it expects. From the user's point of view, however, the application suddenly has access to datasets in remote locations.

If you choose to write a new application, you just use OPeNDAP data access functions instead of the data access API's functions. Your choice of API is flexible, since OPeNDAP includes a variety of libraries for linking data access APIs.