20080531 Intro To Dependency Injection & Inversion Of Control

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    20080531 Intro To Dependency Injection & Inversion Of Control - Presentation Transcript

    1. Presenter - Donn Felker
      • 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: [email_address]
      • 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.
      • 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.
      • 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
      • 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)
    2. BROKEN BUILD! CI Server
    3.  
    4.  
      • 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
      • The ability to supply (inject) an external dependency into a software component.
      • Types of Dependency Injection:
        • Constructor (Most popular)
        • Setter
        • Method
    5. Injecting a ICustomerRepository and a ICustomerDTOMapper through the constructor. Note: This is the most popular type of injection.
    6. Injecting a ICustomerRepository through the setter.
    7. Injecting a ICustomerRepository as well as an integer dependency.
      • 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
    8.  
      • Lets See Some Code…
      • 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.”
      • The best example is to see it in code.
    9.  
      • 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
        • [email_address]
        • http://blog.donnfelker.com
          • All resources from this talk will be posted within 24 hours on this blog.

    + donnfelkerdonnfelker, 2 years ago

    custom

    1184 views, 0 favs, 0 embeds more stats

    Presentation from the May 31st 2008 Desert Code Cam more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1184
      • 1184 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 26
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories