Drill Overview

What is Drill?
Drill stands for Dependency Resolution and Instance Location Layer. It is a framework that abstracts, consolidates and isolates object resolution frameworks such as DI containers and service locators.

Drill provides the following capabilities for applications:
  • Decouples object resolution frameworks (e.g. dependency injection containers, service locators) from the application
  • Allows the application to switch the underlying object resolution technology without disturbing the code base
  • Simplifies working with multiple object resolution frameworks by providing a single interface and object reference used to obtain or resolve object instances
  • Provides a very extensible object resolution platform that aids in future proofing your object resolution and/or inversion of control strategy
  • Easily adapts to existing object resolution abstractions, such as the Common Service Locator
  • Provides immediate support for commonly used .NET DI containers including Autofac, StructureMap and Unity

Drill is a set of .NET class libraries that can easily be referenced by an application, preferably installed using NuGet. The current codebase builds the following class libraries:
  • Drill
  • Drill.DrillBits.Autofac
  • Drill.DrillBits.StructureMap
  • Drill.DrillBits.Unity
  • Drill.Integration.CommonServiceLocator
  • Drill.Integration.Web
  • Drill.Integration.Web.Mvc

The name of each class library above is also the name of the corresponding Drill NuGet package.

The Drill class library contains the core types and implementation of the framework. The Drill class library is not very useful alone unless you are developing DrillBit components, integration components or custom dependency resolvers. To make effective use of Drill out of the box, you must have at least one DrillBit component installed.

A DrillBit is a pluggable component that implements some type of object resolution, usually wrapping an
existing framework, DI container or service locator. The Drill currently provides the following DrillBits:
  • Drill.DrillBits.Autofac - Autofac DI container provider
  • Drill.DrillBits.StructureMap - StructureMap DI container provider
  • Drill.DrillBits.Unity - Unity DI container provider

Many other DrillBit components can easily be created.

The easiest way to add Drill to a project is to install one of the DrillBit NuGet packages which will install the core Drill class library, the DrillBit class library and the necessary dependencies.

A small bit of Drill configuration is necessary. The Drill configuration system is very flexible. The configuration can be represented as XML and can reside in the App.config or Web.config file or in an XML file. Optionally, the XML configuration may also be loaded from other sources like a stream, a manifest resource or a literal string. Finally, the configuration can be constructed programmatically into an object graph. There are configuration loader classes that may be used to load the configuration into the proper object graph. Please read the Configuration topics for further Drill configuration details.

Last edited Nov 24, 2012 at 12:23 AM by wreynolds, version 1


No comments yet.