1. A method of isolating a shared memory-based state from concurrent clients of an application including an application component, the method comprising: partitioning a memory-based state into a plurality of domains, each domain including separate address spaces of a memory and including variables within boundaries of the domain, wherein the variables are isolated from outside of the boundaries of the domain, and wherein the variables within each domain are isolated from the other domains; introducing a plurality of agents inside the boundaries of the domains corresponding with a client of the application, wherein the agent acts on behalf of the client to access the variables within the domain, and the agent does not use the same application component or the same thread of execution as the client, wherein the agents include at least one read agent to read from variables within the domain, at least one write agent to read from or write to variables within the domain and at least one third agent to neither read from nor write to variables within the domain; executing any number of third agents concurrently with each other or with read agents or with one write agent; executing any number of read agents concurrently as long as no write agents are executing; executing only one write agent at a time such that the instance of the write agent as exclusive access to the domain while executing the write agent; wherein the domains and the agents are each both declarative and runtime constructs in a programming language based model; and enforcing isolation of the variables within the domain from the clients through communications between the agent and the corresponding client via message passing with a compiler and supporting runtime and through the agent interacting with other agents via message-passing over separately defined channels.