Skip to content
Ed Pavlov edited this page May 22, 2024 · 5 revisions

What is Armature

Armature Logo

Armature is a lightweight and extremely easy extensible dependency injection framework for .NET.

History of Armature

Armature was created as a response to the limitations of existing tools at the time. In the early days of .NET development, options for dependency injection were limited. Only MS Object Builder and abandoned Spring .NET framework were available. Later frameworks, such as Autofac, were still in their infancy and lacked key features such as arguments autowiring.

Armature v1 was born in 2007 out of this need for a more robust and feature-rich dependency injection solution. While there were attempts to adopt more "standard" frameworks, these proved unsuitable, leading to further development and refinement of Armature.

Armature v1.2 and v2 represent significant milestones in the evolution of the framework, incorporating feedback and addressing the evolving needs of .NET developers. Armature continues to be a valuable tool, providing a reliable and user-friendly approach to dependency injection for building complex .NET applications.

Components of Armature

Armature is comprised of three distinct assemblies:

Armature.Core

This is the heart of the framework, providing the fundamental building blocks for creating a wide range of tools. Think of it as a versatile toolkit that empowers developers to craft their own dependency injection frameworks, orchestrators, or any other system that requires the seamless integration of diverse components by described rules.

Armature

Building upon the solid foundation of Armature.Core, this assembly introduces a Domain-Specific Language (DSL) that streamlines the process of defining and managing dependencies within your applications. It encapsulates a particular philosophy and approach to dependency injection, making it easier to implement and maintain complex object graphs.

Armature.Interface

Contains entities that can be used in "client" code, which is serviced by the Armature framework but should not have direct access to its full capabilities.

Extensibility

Armature is designed with a philosophy of extensibility and customization. It empowers developers to tailor the framework to their specific needs directly within their application code, without requiring modifications to the library itself and releasing new versions. This flexibility allows for seamless integration and adaptation to evolving project requirements.