The NetSolve system is a set of loosely connected machines. By loosely connected, we mean that these machines can be on the same local network or on an international network. Moreover, the NetSolve system can be heterogeneous, which means that machines with incompatible data formats can be in the system at the same time.
The current implementation sees the system as a completely connected graph without any hierarchical structure. This initial implementation was adopted for simplicity and is viable for now. Our current idea of the NetSolve world is of a set of independent NetSolve systems in different locations, possibly providing different services. A user can then contact the system he wishes, depending on the task he wants to have performed and on his own location. In order to manage efficiently a pool of hosts scattered on a large-scale network, future implementations might provide greater structure (e.g., a tree structure), which will limit and group large-range communications.
Figure 1 shows the global conceptual picture of the NetSolve system. In this figure, a NetSolve client send a request to the NetSolve agent. The agent chooses the ``best'' NetSolve resource according to the size and nature of the problem to be solved.
Several instances of the NetSolve agent can exist on the network. A good strategy is to have an instance of the agent on each local network where there are NetSolve clients. Of course, this is not mandatory; indeed, one may have only a single instance of the agent per NetSolve system.
Every host in the NetSolve system runs a NetSolve computational server (also called a resource, as shown in Figure 1). The NetSolve resources have access to scientific packages (libraries or stand-alone systems).
An important aspect of this server-based system is that each instance of the agent has its own view of the system. Therefore, some instances may be aware of more details than others, depending on their locations. But eventually, the system reaches a stable state in which every instance possesses all the available information on the system (provided the system does not undergo never-ending modifications).