Architecture




The TCPOS architecture is conform to the Microsoft 'Smart Client' standard. It consists of three different levels:

1) Client
2) Application server
3) Database server

The 'client' level is in turn divided in a series of sublevels that take care of the local database (Data Access Layer), the business logic (Business Logic layer), the applicative customizations (Plug-in Layer), the user interface (Presentation Layer) and the peripherals (Device Interface Layer) all under the Coordinator control.
Interactions between the various layers are channelled according to rigorous patterns and well defined with the goal to avoid crossed dependences (loose coupling).
The application interfaces with peripherals by using drivers implementing a specific interface for each peripheral. Drivers for 'internal' peripherals (drawer, customer display, ISO magnetic card reader), for most common hardware vendors, are implemented with direct access to the hardware through modules specifically implemented.
A standard driver resides inside the DeviceManager module. A driver written by third parties can instead reside in an external assembly loaded dynamically as a plug-in.
The programming language used is C#
The development framework used is Microsoft .NET 2.0, while the wireless terminal version is written with Compact Framework version 2.0.
The communication mechanism between the client and the server applications is based on the 'remoting' of the .net framework or through the Web Services.

Graphic components (simple controls and grids) and the reporting engine are developed using libraries produced by the company DevExpress.
It is possible to develop and integrate a new user interface for future new check-out devices (e.g.: wireless terminal, vending machine, etc.)
It is possible to replace standard interface forms with customized forms, changing drastically also the user interface.
Business logics are customizable through business plug-ins which replace or change the standard management of various events.
Modules that are developed to manage customizations (plug-ins), integrates in a runtime in the application. These plug-ins can be written by third parties (Business Partners and Customers).
By using these plug-ins, it is possible to manage new fields in existing charts or manage new charts which are eventually related to standard charts.
Moreover, these plug-ins can add additional controls to the entered data.

Cash registry implements the SQLite embedded database, a third party module, which use is free and the sources are available without restrictions. Charts are built by using all integrity criteria made available by the database. A precise pattern is used for the primary keys, univocity bonds, reference integrity and e verification of the values granted in the fields (check constraint).

It is possible to add new fields to existing tables and new charts to the database. The software supports the management of this data from the data entry to the memorization in the database after a sale transaction. Triggers are used to grant the 'cascade' propagation of various operations (e.g. update the balance of a customer card when a transaction is entered or deleted) in order to grant the data transactional integrity. Some triggers are also used to carry out checks that can't be performed through constraints standard of database engines. The client access to the data is mediated by a middle tier available in the same local network of the database server.

No client has direct access to the database. TCPOS allows using a remote database through the middle tier, which can be on a machine different from the database. ADO.NET is the application access mode to the DB.