Empinia logoEmpinia logo
About us   Contact

Features

Empinia is a component oriented, flexibly expandable software platform for .NET, written in C#. Our aim is to provide an Eclipse RCP for .NET - a base for new applications that saves developers a lot of effort.

Empinia has a pluggable architecture: a minimal core that can be enhanced by extensions. A compilation of interacting extensions make an application. The plugin infrastructure of Empinia manages most tasks you need for dealing with extensions. As such, it's quite easy to utilize. 
 

Architecture of Empinia

As its heart, Empinia uses an IoC-container. We are currently using the Windsor container from the Castle Project. Around that container, a couple of core services are assembled. These services are the plugin infrastructure of Empinia. They are responsible for:

  • scanning for existing extensions in the file system

  • resolving and checking dependencies between extensions

  • loading of extensions

Some additional services ship with Empinia:

  • caching of arbitrary serializable objects

  • management of preferences

  • providing message dialogs

  • management of commands, triggered by actions

  • providing a context for a command that is run

Applications developed with Empinia have at least two layers: the base layer with the Empinia core and its services and the top layer. The top layer is where the domain logic of your application is implemented. 
 

Extension infrastructure 

Extensions interact with each other. To allow for hooking, an extension can define extension-points where other extensions can wire with.

Extensions can be grouped in bundles. A bundle is a .NET assembly with an embedded XML-file bundle.xml. This file contains the description of the extensions, to which extension points they hook and which extension-points they provide.

When Empinia starts up, the application directory is scanned and all assemblies are checked if they contain a bundle.xml. If the content of the bundle.xml is consistent, all metainformation is loaded into a central extension registry. This registry is pivotal for requesting information about and invoking functionality of an extension. This registry is used by the IoC-container for loading and instantiation of extensions. 
 

GUI-Features 

Empinia puts focus on the development of GUI-applications. It has a view-concept: you can define views, that are compilations of controls and windows that form a single user-interface. Single controls can be wired with actions that fire when an event of the control is triggered.