Application Architecture
The modernized application is optimized for maintainability and extensibility. It is layered both in terms of infrastructure and separation of concerns.
Being a 100% Object Oriented C# project makes it simple for C# developers to understand its basic structure and syntax.
For a PowerPoint presentation of A modernized application architecture, Click here
Application Layer
The application layer contains code migrated from the original Magic application.
The code retains names, structure, definitions and even comments from the original application.
Developers of the original Magic application are able to recognize and follow the modernized code.
The application layer code is short and clean because it uses common functionality found in the layers below it.
The application layer is structured using the standard 3-layer architecture:
Data Access
The data access layer contains database agnostic, normalized entity classes.
The entities contain property definitions and are used by the business logic layer to fetch and modify data from various data stores.
|
Magic data view
|
.NET data view
|
Business Logic
The original program logic is transformed into Business Process (Service) classes and User Interface Controller classes (MVC Pattern).
These classes use the data access entities for defining data-views in an abstract, database agnostic manner, with no SQL or any reference to the database schema.
|
Magic business logic
|
.NET business logic
|
User Interface
All forms and reports are migrated to appropriate classes which can be designed using the Visual Studio designer.
User interface elements are data-bound to entities and user interaction is relayed to controller classes in the Business Logic Layer.
|
Magic form designer
|
Visual Studio form designer
|
Environment Layer
The environment layer contains base classes for most classes used in the Application Layer and is provided as open source with the migrated application - allowing for cross cutting concerns to be handled in one location.
It also holds code which replaces Magic functionality such as:
- Replacements for functions that where used in expressions defined within the application.
- A users and rights management module.
- Path resolution code.
Firefly.Box Framework
The Firefly.Box framework is an application framework containing various rapid application development functionality, including:
- Binding of values to expressions with automatic re-evaluations.
- Declarative transaction and row locking definition.
- DBMS independent data access.
- Visual reporting capabilities with Visual Studio designer support and data-binding.
|
Magic report designer
|
Firefly.Box report designer
|