Go backward to 9 Implementing the DataDDS object
Go up to Top
Go forward to References
10 Notes
Here's a collection of information that might be important to specific
servers but is hard to fit into a general tutorial.
- It's possible to replace the three separate programs, one for the DAS,
DDS and DataDDS, with a single program. Clearly there all share close to
90% of the same code. You can tell which object is being requested by
either using the old Unix trick of making the programs symbolic links to a
single executable and then checking to see which name was used to invoke
it, or by modifying the dispatch script slightly to pass that information
along with the other parameters.
- Similarly, you can subclass the DAS and DDS objects adding methods to
them to build up the attributes and variables instead of writing functions
to do that task.
- For complex data sets, it's likely that you'll need to create some new
fields in the data type classes you specialized.
- If you're writing a server that will principally be for internal use, or
you expect many many small accesses, you should look into using the Java
software or implementing your server as an Apache module. Contact support
or the dods-tech email list for help with the latter.
- You can get help from the OPeNDAP Home page, the opendap-tech email
list
and the OPeNDAP user support desk.
- The OPeNDAP Project has developed two tools to help with serving
datasets that contain many files. The first is to set up a `file server' a
kind of catalog of URLs that is itself a OPeNDAP data set. The second is
called the Aggregation Server (AS). The AS can automatically aggregate
discrete datasets, accessed as either as files (in some cases) or URLs to
produce a single data set. See the OPeNDAP Home page and/or contact User
Support for help with this.
- When you're returning error messages, be sure to trim file pathnames so
that the real path to data is hidden.
- If you have a data set and its API requires you to store a lot of state
information that's not specific to a given variable or data type, consider
creating a mixin class and making your data type children inherit from it in
addition to the DAP classes. Because the `virtual contractors' are used to
create instances of the data type classes, you can be sure that in your
server, all instances of Byte, etc., contain the mixin. Use the
dynamic_cast operator to access the mixin's methods.
James Gallagher <jgallagher@gso.uri.edu>, 2006-08-17,
Revision: 14349
