The namespace acts as RAD's gatekeeper, associating a name with each object, dispatching requests to the proper object, and providing meta-operations that enable the client make queries about what objects are available and what interfaces they implement.
A RAD server may provide access to several objects that in turn expose a variety of different components of the system or even third-party software. A client merely knowing that interfaces exist, or even that a specific interface exists, is not sufficient. A simple, special-purpose client needs some way to identify the object implementing the correct interface with the correct behavior, and an adaptive or general-purpose client needs some way to determine what functionality the RAD server has made available to it.
RAD organizes the server objects it exposes in a namespace. Much like files in a file system, objects in the RAD namespace have names that enable clients to identify them, can be acted upon or inspected using that name, and can be discovered by browsing the namespace. Depending on the point of view, the namespace either is the place one goes to find objects or the intermediary that sits between the client and the objects it accesses. Either way, it is central to interactions between a client and the RAD server.
Unlike a file system, which is a hierarchical arrangement of simple filenames, RAD adopts the model used by JMX and maintains a flat namespace of structured names. An object's name consists of a mandatory reverse-dotted domain combined with a non-empty set of key-value pairs.
Two names are considered equal if they have the same domain and the same set of keys, and each key has been assigned the same value.
Some situations call for referring to groups of objects. In these situations, a glob style pattern, or a regex style pattern should be used. For more information, see Sophisticated RAD Searches in C.