Accelerator
Overview
XAF applications use the Application Model a lot. When the quantity of modules in the app grows, the Application Model becomes more complicated (because of the increasing number of layers in the Application Model). It slows down the Application Model performance and leads to notable time lags in the application itself. The growing amount of time needed for the app to start is the most obvious sign of such changes.
To solve the issue mentioned above, use the Xafari.Accelerator module designed precisely to overcome the problems with the Application Model performance.
Being used in demo applications, Xafari.Accelerator showed twice as less starting time compared to the same apps without this module. The actual result for a particular project depends on the complexity of the application and the quantity of business objects in use.
The results of demo application profiling proved that the usage of Xafari.Accelerator allows excluding all operations with the Application Model from the profiling reports. When Xafari.Accelerator is not used, the operations with the Application Model are critical according to the application profiling reports.
The table below shows the results of profiling the Enterprise Assets Management system (EAM):
Stages |
Standard start (in seconds) |
Accelerator using (in seconds) |
Acceleration |
Splash screen |
4 |
5 |
0.8 |
Logon |
40 |
14 |
2.85 |
Startup View |
63 |
33 |
1.9 |
How It Works
Xafari.Accelerator core principle is to analyse the current combination of the modules and their versions and to fix unchangeable part of the Application Model for this combination. Then, Accelerator save this part to the separate XML file and stores in it. The same idea works for localization files if there are any.
Note.
The Accelerator's files ApplicationName.Accelerator.xafml (ApplicationName.Accelerator_locale.xafml) are stored in the same folder that has the ModelAssembly.dll file. By default, it is the application folder.
The Accelerator then modifies the Application Model so that its constant part builds upon this only file.
As a result, there are only two layers left in the Application Model: the accelerator and the user.
The Xafari.Accelerator module also extends the Application Model with extra interfaces to avoid performance issues that may happen when adding Custom Members.
To master the techniques for working with Xafari.Accelerator, refer to the Getting Started topic.