________
/ \
+ +
|\________/| +----------+ +-----------+
| | | Database | | Component |
| Database |<-------------->| Server | | Manager |
| | | | | |
+ + +----------+ +-----------+
\________/ ^ ^ | ^
| | | |
| +---------replies--------+ | |
| | +------requests---------+ |
| | | |
V | V V
+----------+ +-----------+
| |-----requests---->| Client |
|Components| | Request |
| |<----replies------| Manager |
+----------+ +-----------+
^
|
|
|
V
+-----------+
| User |
| Interface |
| |
+-----------+
In this diagram, the general structure of the proposed system is shown.
The Database Server provides a single point of entry to the database. It must carry out the following functions:
All communication to and from the database manager will be in the form of XML fragments, which will correspond to named regions in the XML DTD.
These fragments will be either a simple fragment, in the case of an add, delete or request for a copy of data, or a fragment pair (before / after) in the case of an update request or notification.
Fragments returned from the database manager may be either the full fragment or a subset of its components. In this way a component could request continuous updates of the entire kite, but only recieve deltas of the parts that have changed.
The Component manager instantiates and destroys components, and feeds requests and replies to and from the relevant components and the client request manager.
The client request manager handles the client request API, which defines the interface to the server side of the system from the user interface. Requests may come in to this from both UI components and the server-side components as well. Thus, if a component requires another component to act, it will request this through the client request manager.
The components for the processing core of the system Each component must do the following:
As mentioned, components may act as clients in their own right. Thus a component may ask for a function to be carried out, but not care how it is carried out. The components in the system are therefore very loosely coupled, and can be changed on an 'ad hoc' basis.
[1] These requirements are very high level, and don't cover nearly enough detail to start work yet.