If you don't already have a reference to FlitBit Wireup
add one using the NuGet command line:
PM> Install-Package FlitBit.Wireup
formalizes bootstrap processes by providing the ability to declare dependencies among assemblies and coordinate the tasks that bring an assembly to a ready-state.
It deals with the dependency among libraries, not dependency injection or inversion of control... for those see FlitBit IoC
, which scaffolds on top of this library.
Visit the Core library's page
to learn more about the FlitBit Frameworks
It may appear that we use the term wireup
interchangeably, but it is not so. Bootstrap
refers to the period between when the program is launched and when it becomes ready
. We use the term wireup
to refer to the more abstract phase that repeats throughout the life of a modern application as different modules are loaded just-in-time
and must be made ready.
Too often, applications either devise custom bootstrap processes and end up with hard-coded dependency or rely on a mix of custom logic parts and inversion of control
to achieve a ready-state. In the latter case, the IoC is a good move, but this library's purpose is to decentralize the other part; logic and tasks required of a bootstrapping/wireup process.
As an illustration, most ASP.net applications centralized too much logic in the HttpApplication
method, essentially creating a know-it-all
bootstrapper. We have learned through much tribulation to prefer a modular, decentralized approach when wiring up our application.
The approach we take is entirely modular.
1. Each assembly should declare its own dependencies.
In this way, a coordinator can ensure that all dependencies are met before an assembly is "wired-up" to an application.
2. If an assembly has logic that must be performed in order to bring itself to a ready-state, it must declare one or more tasks that perform the required logic.
In this way, when the coordinator wires-up an assembly, it can ensure that the tasks are performed in the proper, declared order, and thereby reach certainty that the assembly has reached a ready-state without ever having to know an assembly's purpose.
In contrast to the know-it-all
model, assemblies can be easily wired in to a running application upon demand, reducing the start-up time for most applications, and eliminating the wireup logic for areas of the application that are not actually utilized.
Some of the command lines rely on Powershell. Ensure your execution policy is permissive enough if you run the batch files or powershells.