About 20 years ago, Grady Booch, a world renowned software development visionary, stated in his essay Coming of Age in an Object-Oriented World that “our ability to imagine complex applications will always exceed our ability to create them”. Reflecting on this prediction today, we can see how software systems have evolutionarily become more and more complex. One of the techniques for dealing with this inherent complexity of software systems is dependency injection – a design pattern that allows the removal of hard-coded dependencies and makes it possible to assemble a service by changing dependencies easily, whether at run-time or compile-time. It promotes code reuse and loosely-coupled design which leads to more easily maintainable and flexible code.
I’m excited to announce our new guide-primer on using dependency injection with Unity – a lightweight extensible dependency injection container built by the Microsoft patterns & practices team. It covers various styles of dependency injection and also additional capabilities of Unity container, such as object lifetime management, interception, and registration by convention. It also discusses the advanced topics of enhancing Unity with your custom extensions.
The guide contains plenty of trade-off discussions and tips and tricks for managing your application cross-cutting concerns and making the most out of both dependency injection and Unity. These are accompanied by a real world example that will help you master the techniques. Keep in mind that Unity can be used in a wide range of application types such as desktop, web, services, and cloud. I encourage you to experiment with the sample code and think beyond the scenarios discussed in the guide.
In addition, the guide includes the Tales from the Trenches – a collection of case studies that offer a different perspective through the eyes of developers working on the real world projects and sharing their experiences. These chapters make clear the range of scenarios in which you can use Unity, and also highlight its ease of use and flexibility.
Whether you are a seasoned developer or just starting your development journey, we hope this guide will be worth your time studying it. We hope you discover that Unity container adds significant benefits to your applications and helps you to achieve the goals of maintainability, testability, flexibility, and extensibility in your own projects.
Chris Tavares, my colleague and co-creator of Unity, has written the foreword for the guide. Follow his advice:
“I’m thrilled to see this book published. For the first time, there’s one place you can look for both the concepts of DI and how to apply those concepts using the Unity container. Read the book, embrace the concepts, and enjoy the world of loosely coupled, highly cohesive software that DI makes so easy to build!”
Here’s how to get it:
− PDF (free download)
− EPUB (free download)