Technical Services layer: general purpose objects and subsystems that provide supporting technical services, such as interfacing with a database or error logging. These services are usually application-independent and reusable across several systems.
into discrete layers of distinct, related responsibilities, with a clean, cohesive separation of concerns such that the "lower" layers are low-level and general services, and the higher layers are more application specific.
Collaboration and coupling is from higher to lower layers; lower-to-higher layer coupling is avoided.
a layer only calls upon the services of the layer directly below.
common in network protocol stacks, but not in information systems.
relaxed architecture:
a higher layer calls upon several lower layers.
ex. The UI layer may call upon its directly subordinate application logic layer, and also upon elements of a lower technical service layer, for logging and so forth.
Do not connect or couple non-UI objects directly to UI objects.
Do not put application logic (such as a tax calculation) in the UI object methods.
UI objects should only initialize UI elements, receive UI events (such as a mouse click on a button), and delegate requests for application logic on to non-UI objects (such as domain objects).
View: UI layer
Model: Domain Layer
to support cohesive model definitions that focus on the domain processes, rather than on user interfaces.
to allow separate development of the model and user interface layers.
to minimize the impact of requirements changes in the interface upon the domain layer.
to allow new views to be easily connected to an existing domain layer, without affecting the domain layer.
to allow multiple simultaneous views on the same model object, such as both a tabular and business chart view of sales information.
to allow execution of the model layer independent of the user interface layer, such as in a message-processing or batch-mode system.
to allow easy porting of the model layer to another user interface framework.
The UI layer objects will forward or delegate the requests from the UI layer (system operations) onto the domain layer for handling.
The messages sent from the UI layer to the domain layer will be the messages illustrated on the SSDs