![]() Module - the modules which provide the major functionality (logbook, formation, location).Import - import plugins (CSV, GPX, IGC, KML).Export - export plugins (CSV, GPX, IGC, JSON, KML).Connect - yes, even the connection with the flight simulator (currently: MSFS) is implemented as a plugin.The plugins are further organised into the following subdirectories therein: Sky Dolly stores its own plugins in a subdirectory called Plugins. Not only does this regain some storage space, but may also improve the user experience itself (by not providing functionality in the user interface that is never needed). Don’t need that import plugin? Delete it! No need for the new location module? Remove it! Tweaking the installationĪs plugins are optional by definition one can also remove them from the corresponding plugin directories. Or simply put: “ Spaghetti code” is simply not possible. In fact, especially with a plugin architecture such “mutual dependencies” are “physically impossible”: an application would not even “link” when an attempt from the main application was made to directly call a function implemented in a plugin (or generally speaking: to call “higher level functionality” from a lower level). The functional parts are strictly hierarchical - and hierarchy is good when it comes to software design, as “mutual dependencies” (“A calls B and B calls A”) are prevented. Not only can a plugin architecture lead to less RAM usage (when plugins are unloaded after use, that is), but is also leads to a better software design (“architecture”). The RAM usage was simply measured with the Windows task manager multiple times. (*) All measurements were made with an empty logbook, in order to make them better comparable between each other (which leads to even slightly better numbers than posted in a previous post above). And this is exactly what Sky Dolly does: not only are import / export plugins unloaded after use, but now (since Sky Dolly v0.12) also the modules.Įspecially in the “normal (non-minimised)” UI mode this leads to another measurable reduction in RAM usage (*): This implies that - since a plugin is completely optional - that it can also be unloaded after use. As opposed at application load time, where a missing DLL typically prevents the application from loading. ![]() Once a plugin faithfully implements such an interface it can be loaded at any time during runtime - on demand. One such example is the simple export interface of Sky Dolly, which defines exactly one method to fullfil (implement) for each export plugin. The contract defines the expected input and output (result or functional behaviour in general). Technically speaking: the plugin implements some well-defined interface - the “contract” between the application and the plugin, so to speak. ![]() Where “present” means that the plugin (typically a “ dynamically loaded library”, DLL) is located in some well-known location, a directly typically called the “plugin directory” (or directories). Modules provide the major functionality, such as the logbook, the formation recording / flying and newly also the locations.Ī “plugin” is a set of functionality that is completely optional at runtime: it extends the base functionality of the given application if present, but otherwise can be completely removed. Since Sky Dolly v0.12 also the so-called modules are implemented as plugins. It may also be interesting for those who want to know how to tweak the installation for minimal installation size. The following explains some “technical background” of the development of Sky Dolly.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |