1. A software architecture for a distributed computing system comprising: an application configured to handle requests submitted by applications executing on remote devices over a network; and an application program interface to present functions used by the applications to access network and computing resources of the distributed computing system, wherein the application program interface comprises a set of base classes and types that are used in substantially all applications executing on the remote devices submitting requests.