Ontimize has been designed using a multi-tier architecture, which has proven advantages compared to other approaches. In this paradigm, the 3-tier architecture is the most commonly used, where the tiers are generally named the persistence, logic and presentation layers.
For Web Applications, the MVC (Model-View-Controller) is the recommended architectural design pattern for interactive applications. The MVC design pattern separates design concerns (data persistence and behavior, presentation, and control), whilst decreasing code duplication, centralizing control, and making the application more easily modifiable.
There are two MVC models, depending on the existence of a controller servlet that dispatches requests from the client tier and selects views.
The "Model 2" architecture introduces a controller servlet between the browser and the JSP pages or servlet content being delivered. The controller centralizes the logic for dispatching requests to the next view based on the request URL, input parameters, and application state. The Model 2 architecture is recommended for most interactive applications and is used by Ontimize.
A further advantage of this approach is the possibility of handling multiple clients with different protocols, security policies, presentation logic, and workflows. Each type of client requires its own controller, as in the figure.
At a deeper level the layers involved in the server architecture are shown below.
This separation allows for simpler modification of the functionality of each layer without affecting other layers. The system is therefore well designed and scalable. The role of each layer is as follows:
• DATABASE: Manages storage and recovery of data providing a unified API to the persistence layer.
• PERSISTENCE: Handles the mapping between database tables and the Object-Oriented model used in the application. Typically this involves some type of object-relational mapping, but this is not always the case. For example, it is possible to design a persistence layer that does not require programming when database objects are changed.
• BUSINESS LOGIC: In this layer, the logic, rules and custom actions are implemented. The separation between business logic and persistence allows for simpler modification of the behaviour of the application.
• PRESENTATION CONTROLLER: Manages the interaction between the client and the business logic layer. It can also manage application flow, communications, security, etc. at a centralized point.
• CLIENT: Provides the graphical user interface. With some types of interfaces (for example the Ontimize Swing Rich Client) some logic can also be implemented in this layer, providing a much better user experience in terms of usability, speed, and aspect.