Modularizing the entire application allows for relatively easy replacement of the interface, the networking approach or the database back-end. It also helps in keeping the interdependency of code relatively small. The data- and netlibrary are called by the user-interface through special hooks to start and stop their specific routines, such as the webserver and the indexing engine. Furthermore, the database library contains a class that is used by the webserver to query the database.
Which functions have to be exported can be seen in the .def files accompanying the module sourcecode. All interfacing is done through standard C++ function calls, so portability should not be to great an issue.