A type server provides the proxy and stub code needed by client and server
programs on demand (dynamically), when the code is needed during
execution. When an interface for a resource is defined, the proxy code
and the stub code for the type of resource is generated and stored within
the type server. The client and server programs each keep a local table
of type identifiers/resource type translations for each resource
referenced. The local table acts like a cache: when a type identifier is
not found in the table, the type server is contacted, and the type
identifier for that resource type is retrieved and stored in the cache.
Another local table acting as a cache stores type ID and associated proxy
and stub code for the resource type. When a program needs the proxy code
for a resource type, it checks its cache and it the proxy code is not
found the type server is contacted, the proxy (and stub) code is
retrieved from the type server and is stored in the cache.