1 / 21

Intro to Dependency Injection & Inversion of Control

Intro to Dependency Injection & Inversion of Control. Presenter - Donn Felker. About Me – Donn Felker. Senior Consultant for Microsoft Gold Certified Partner- Statêra. 8 years of experience in developing and architecting enterprise solutions. Certifications:

casta
Télécharger la présentation

Intro to Dependency Injection & Inversion of Control

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Intro to Dependency Injection & Inversion of Control Presenter - Donn Felker

  2. About Me – DonnFelker • Senior Consultant for Microsoft Gold Certified Partner- Statêra. • 8 years of experience in developing and architecting enterprise solutions. • Certifications: • Microsoft Certified Technology Specialist • Certified SCRUM Master • ITIL Foundation Certified • Bachelors of Science in Software Engineering • Member of FooTheory Community (www.footheory.com) • Blog: http://blog.donnfelker.com • Email: donn@donnfelker.com

  3. What I intend to do… • Present Dependency Injection and Inversion of Control in an understandable fashion • Present each topic at a detailed but comprehendible level • Give you the resources used in this talk so you can reference them in the future.

  4. What I DO NOT intend to do… • Confuse you. • Pretend to be an authority in patterns, because, well … I’m not. • Get all “Fowler” on you. • Have theoretical conversations about practicality of the example apps I’m using for demonstration purposes.

  5. Agenda • What is a Dependency? • Dependency Injection Pros/Cons • Simple Application Architecture • Example Application High Level Architecture • Demonstration 1 • Identifying and Breaking dependencies • What is Inversion of Control • Demonstration 2 • Custom Dependency Container • Introducing Microsoft Unity Container • Questions

  6. What is a “Dependency”? • Some common dependencies include: • Application Layers • Data Access Layer & Databases • Business Layer • External services & Components • Web Services • Third Party Components • .NET Framework Components • File Objects (File.Delete(…), Directory.Exists(…)) • Web Objects (HttpContext, Session, Request, etc)

  7. Dependencies at a Very High Level BROKEN BUILD! CI Server

  8. Get a Resource Involved…

  9. Example of a Dependency

  10. What problems do dependencies create? • Code is tightly coupled • Difficult to isolate when testing • Difficult to maintain • If I change ComponentX how do I know what else it will affect? Did I break anything? • If tests are in place they can be your safety net

  11. What is Dependency Injection? • The ability to supply (inject) an external dependency into a software component. • Types of Dependency Injection: • Constructor (Most popular) • Setter • Method

  12. Constructor Injection Injecting a ICustomerRepository and a ICustomerDTOMapper through the constructor. Note: This is the most popular type of injection.

  13. Setter Injection Injecting a ICustomerRepository through the setter.

  14. Method Injection Injecting a ICustomerRepository as well as an integer dependency.

  15. Dependency Injection Pros & Cons • Pros • Loosely Coupled • Increases Testability (A LOT!) • Separates components cleanly • Allows for use of Inversion of Control Container • Cons • Increases code complexity • Some Jr. Developers find it difficult to understand at First • Can Complicate Debugging at First • Complicates following Code Flow

  16. Overview of Example Application

  17. Demonstration Lets See Some Code…

  18. What is Inversion of Control • Sometimes referred to as Dependency Inversion Principle (DIP) • The principle states that high level or low level modules should not depend upon each other, instead they should depend upon abstractions. • Specific implementations (object instances) are deferred to a higher level of abstraction of control. • Examples: • Parent class(es) • A Container • Referred to as the “Hollywood Principle” • “Don’t call us, we will call you.”

  19. IoC Demonstration The best example is to see it in code.

  20. Questions?

  21. Resources • Containers • Windsor: http://shrinkster.com/ym6 • Unity: http://shrinkster.com/ym5 • Structure Map: http://shrinkster.com/ym7 • Spring.NET: http://shrinkster.com/ym8 • Unity Screencast (PnP Guidance) • http://shrinkster.com/yma • Good Book to help break dependencies: • Working Effectively with Legacy Code (Michael Feathers) • http://shrinkster.com/ym9 • Contact Me • donn@donnfelker.com • http://blog.donnfelker.com • All resources from this talk will be posted within 24 hours on this blog.

More Related