The core of this system revolves around a static application class, something very common in MVC architectures, and utilized in applications such as Microsoft Office.
This will be the center of event binding. Most modules will bind to events in this class, although it is possible for modules to bind to other events, as long as the events they wish to bind to are somehow rooted by a static class.
The Initialize and Shutdown events and corresponding methods allow us to initialize and shutdown this application from any host (in this solution we use two, a Windows Service, and a console application for debugging).
----------
Application modules are parts of code loaded prior to ServerApplication.Initialize that can handle events throughout the application and perform actions without being directly inlined in business functions.
the ApplicationModuleManager, a static class, is responsible for configuring and maintaining the IApplicationModules.
InitializeFromConfiguration is called prior to OnInitialize from the ServerApplication object.