Component Manager

The Problem
Have you ever wanted to run a C# or VB.NET program like a script? Have you ever wanted to coordinate the actions of multiple components running together on the same machine or across multiple machines? Can you build simple or complex components using a familiar programming language just as if it was a scripting language? Can you update a running component when a new version of the component is available without taking down the whole system?

The Solution
ComponentManager is a runtime environment for building C# and VB.NET applications with the ease of running a script from the command line. ComponentManager creates a powerful solution for managing source code files and provides a powerful runtime system to get the source code compiled and running. ComponentManager handles all the details of compiling, adding references to external DLLs, and keeping an eye on your running components.

How Does it Work?
ComponentManager loads one or more C# or VB.NET source code files and prepares them for compiling. Next, ComponentManager loads the required DLL files and user created support files (more DLL files) needed by the component. Once the DLLs are loaded, user created settings are loaded into memory to customize the runtime environment. These user created settings can be used and modified as needed by each component. Finally, ComponentManager starts the program on its own thread protected by its own domain. A domain provides a protective shell around running components to protect them from external component problems.

Components can call upon ComponentManager to manage long running components and remove them from memory. Each component can check for a newer source code version of itself and load it on demand into memory.

ComponentManager has a local and remote communication bus that allows components to use and update local or remote settings. Components can easily execute locally or on a remote computer. ComponentManager also provides for easy to use communications using Microsoft Message Queues.

ComponentManager provides a powerful runtime environment for small and medium sized components that require the ease of running a script, with the power of a fully capable programming language. Simple “glue” logic applications can be designed quickly using your favorite .NET language, or more powerful multi-component applications can be designed with the ability to unload and load new components as needed.