Functionality part 2 - Planned Remote Server

 I have already discussed the basic concept of the engine.

At the present (Alpha release 090208), the engine is running in a single tier mode, that is all applications using it have to reference the object specifically in code.

An application built using Norman in this fashion could be set up to work in a distributed mode by configuring all engines to point to the same datastore, as shown below.

This architecture, however suffer from a few problems. In this model, all the engines exist in isolation of each other, unaware that the are sharing the datastore. Any changes saved will work in a 'Last In Best Dressed' format, with no abitily to warn any of the other applications of updates to the database.

When we take into account object chaining, we come across the danger of corrupting the model is more than one user is working on the same area at the same time.

I plan to have two modes for the engine, a local engine, and a remote engine, hosted on a remote (or local if you wish) server, communicating to client application via the magic of WCF. Detail of this implementation are still being worked on.

One downside of this model, however, would be that if an object is retreived twice by the same application, it would not be the same object by reference, and so equality comparissons would fail. To get around this I shall have to be overloading the == operator to check for object type and whatever key has been specified for the object.