home

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
Magic data view
.NET 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
Magic business logic
.NET 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
Magic form designer
Visual Studio 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
Magic report designer
Firefly.Box report designer
Firefly.Box report designer