SlideShare a Scribd company logo
http://www.depthconsulting.ca
http://www.depthconsulting.ca
Developer
Fundamentals
:
The Series
Calgary
.NET User
Group
Dependency Injection
What You Need to Know
Dave White
Microsoft MVP – Visual Studio ALM
http://www.depthconsulting.ca
Developer Fundamentals Series
Testing – Nov. 26, 2014
SOLID – Feb. 26, 2015
Dependency Injection – April 22, 2015
Source Control – Branching/Merging – June
Putting It All Together – July
http://www.depthconsulting.ca
Dave White
Principal Consultant – Depth Consulting
http://linkd.in/giMxuw
@AgileRamblings
• In IT for over 15 years
• Microsoft MVP – Visual Studio ALM (2 years)
• Kanban/Agile Evangelist, Speaker
• PRDC 2011, 2012, LKUK, Local events
• Program Director – KCP Program - LKU
• Professional Scrum Master
• Microsoft Platform Developer (C#, Web, WPF)
http://www.agileramblings.com
http://www.depthconsulting.ca
Simon Timms
Senior .NET Dev – Pacesetter Directional Drilling
http://linkd.in/15pYAWL
@stimms
• In IT for over a decade (+/− few months)
• Microsoft MVP – ASP.NET/IIS (2 years)
• Prolific Speaker and Community Involvement
• PRDC (many), AzureCamp, Local events
• Calgary .NET User Group – President
• Author
• Loves Development
• Polyglot
• Web apps, .NET back ends
• Visualization and Cloud
http://blog.simontimms.com/about/
http://www.depthconsulting.ca
WHY?
http://www.depthconsulting.ca
Why We Don’t Inject
• I don’t test design
• No one around me is
doing it
• Too hard to learn
• No tools
• My stuff doesn’t
need it
• Our code is horrible
and very deeply
coupled
• No time
http://www.depthconsulting.ca
The truth of the matter…
• I makes testing
designing easier!
• It encourages SOLID
principles
• Everyone is doing it
• Easier than ever
• Investment in tools
• Private and OSS
• You can start small
• You will be a better
developer
• Drives growth down
maturity path
• Increasing
Complexity
• Business and technical
• It makes you faster
http://www.depthconsulting.ca
Let’s start
learning!
By John Castillo (Jack)
(https://creativecommons.org/licenses/by/2.0/deed.en),
via Wikimedia Commons
http://www.depthconsulting.ca
What is Dependency Injection (DI)
Short:
Giving an object it’s
instance variables
Medium:
Dependency injection is
providing the objects that an
object needs (its
dependencies) instead of
constructing them itself
Long:
Dependency injection is
a software design pattern in
which one or
more dependencies (or
services) are injected, or
passed by reference, into a
dependent object (or client)
and are made part of the
client's state.
http://en.wikipedia.org/wiki/Dependency_injection
James Shore - http://bit.ly/1cUUGaA
http://www.depthconsulting.ca
Two Ways to Inject
Constructor
• explicitly required
• “I cannot function without
this”
Property (Setter)
• optionally required
• “I can function without
this”
public class MyClass
{
public void MyClass(IDependentOn
dependency)
{
}
}
public class MyClass
{
public void MyClass()
{
}
public IDependentOn dependency
{get; set;}
}
http://www.depthconsulting.ca
Two Types of Things to Inject
Concrete Classes
• less flexible
• can only inject single
implementation
Interfaces
• more flexible
• can inject multiple
implementations
public class MyClass
{
public void MyClass(DependentOn
dependency)
{
}
}
public class DependentOn {}
public class MyClass
{
public void MyClass(IDependentOn
dependency)
{
}
}
public interface IDependentOn {}
public class Concrete1: IDependentOn {}
public class Concrete2: IDependentOn {}
http://www.depthconsulting.ca
Demo
http://www.depthconsulting.ca
By Deutsche Fotothek [CC BY-SA 3.0 de
(http://creativecommons.org/licenses/by-sa/3.0/de/deed.en)],
via Wikimedia Commons
That
doesn’t
look so
hard
but why
again?
http://www.depthconsulting.ca
Encourages Modularity
• Makes testing designing easier
• S in SOLID is good
• Decomposing functionality into smaller parts is
good
• Freeing yourself from some concerns which is
good
• Allows implementation flexibility (good)
• Centralized implementation (good)
• Reduces Ctrl-C / Ctrl-V code reuse (good)
http://www.depthconsulting.ca
Remember
• You are reading this because you want to
improve
• You’ve learned about testing design
• You’ve learned about SOLID
• These things should be viewed as a holistic
improvement
They all support each other
http://www.depthconsulting.ca
By Venpia (Own work) [CC-BY-SA-3.0
(http://creativecommons.org/licenses/by-sa/3.0)],
via Wikimedia Commons
So…
there are
tools to
make this
easier?
http://www.depthconsulting.ca
Dependency Injection Containers
http://lmgtfy.com/?q=dependency+injection
Castle Windsor
- Unity
StructureMap
http://www.depthconsulting.ca
What do Containers Provide
• Primary Functions
• Registration
• Resolution
• Manage Lifetime
• Secondary Functions
• Interception/AOP
• Assembly Loading/Type Discovery
http://www.depthconsulting.ca
Registration
• Enables container to know what to create
• Describes construction intent
• What concrete classes are associated with requests
• Singleton, always create new instances, instance per scope (request)
• Interception
http://www.depthconsulting.ca
Resolution
• Construct the actual instances as required
• Add interceptors (more later)
http://www.depthconsulting.ca
Manage Lifetime
• If construction is a primary responsibility,
so is destruction
http://www.depthconsulting.ca
Interception
• You can do AOP with containers
• Usually require an extension
http://www.depthconsulting.ca
Assembly Loading/Type Discovery
• Some containers have helper functions that
discover implementation classes that fit a
specific criteria
• Attributes, Interfaces implemented
http://www.depthconsulting.ca
Demo
http://www.depthconsulting.ca
Hold
on a
second
here
Mister! By Achim Hering (Own work)
[GFDL (http://www.gnu.org/copyleft/fdl.html) or
CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0)]
via Wikimedia Commons
http://www.depthconsulting.ca
The Real Truth - It Can’t Be All
Roses• Dependency Inject is often a breaking
change
• Not a refactoring:
• New application architecture pattern in your application
• Burdened by a MOUNTAIN of technical debt and bad design
• It requires a better understanding of
• SOLID and the chosen container’s API
• You’re whole team has to understand it
• You may have to seek permission from your teammates
• Not managers
• Dependency graphs aren’t any more
http://www.depthconsulting.ca
The Real Truth – There ARE Roses
• Making Unit Tests will be easier
• You will create higher quality product
• You will create better designs
• Most (all?) of the container
implementations are OSS (read: free)
http://www.depthconsulting.ca
We can
do this!
By Weird Beard – Happy [CC-BY-2.0
(http://creativecommons.org/licenses/by/2.0)],
via Wikimedia Commons
http://www.depthconsulting.ca
Next Steps
• Build an example
application
• Understand what you
want from a DI
Container
• Try multiple containers
that fulfill your
requirements
• Share your learning
with your team
KEEP
CALM
and
DI/SOLID/TES
T
ON
http://www.depthconsulting.ca
Tools
• Visual Studio Community
http://www.visualstudio.com/products/visual-studio-community-vs
• Visual Studio 2015 Preview
http://www.visualstudio.com/en-us/news/vs2015-preview-vs
• Nuget
• Autofac, Moq
• http://www.autofac.org
• https://github.com/Moq/moq4
PM> Install-Package Autofac
PM> Install-Package Moq
http://www.depthconsulting.ca
These are the MeetUps you’re
looking for…
Testing – Nov. 26, 2014
SOLID – Feb. 26, 2015
Dependency Injection – April 22, 2015
Source Control – Branching/Merging – June
Putting It All Together – July
http://www.depthconsulting.ca
City of Calgary - Hackathon
http://www.depthconsulting.ca
NOW PRIZES!!
1 ReSharper licence
https://www.jetbrains.com/resharper/
1 Infragistics Ultimate License
http://www.infragistics.com/
INFRAGISTICS ULTIMATE
http://www.depthconsulting.ca
Thanks
Dave White
@agileramblings
http://www.agileramblings.co
m
dave@depthconsulting.ca
Simon Timms
@stimms
http://blog.simontimms.com
stimms@gmail.com

More Related Content

What's hot

Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an api
Michelangelo van Dam
 
Containerizing legacy applications
Containerizing legacy applicationsContainerizing legacy applications
Containerizing legacy applications
Andrew Kirkpatrick
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices
M A Hossain Tonu
 
Continuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsContinuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applications
Sunil Dalal
 
Yii workshop
Yii workshopYii workshop
Yii workshop
Simone Gentili
 
What's new in Spring Boot 2.0
What's new in Spring Boot 2.0What's new in Spring Boot 2.0
What's new in Spring Boot 2.0
VMware Tanzu
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
Ryan Cuprak
 
jQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsjQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchApps
Bradley Holt
 
ProtractorJS for automated testing of Angular 1.x/2.x applications
ProtractorJS for automated testing of Angular 1.x/2.x applicationsProtractorJS for automated testing of Angular 1.x/2.x applications
ProtractorJS for automated testing of Angular 1.x/2.x applications
Binary Studio
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
JavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and RiceJavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and Rice
Stephen Chin
 
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
Andrew Mleczko
 
Intro To Reactive Programming
Intro To Reactive ProgrammingIntro To Reactive Programming
Intro To Reactive Programming
Rossen Stoyanchev
 
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Eric DeLabar
 
React JS
React JSReact JS
JVx - Application framework - 2013
JVx - Application framework - 2013JVx - Application framework - 2013
JVx - Application framework - 2013
SIB Visions GmbH
 
02 configuration
02   configuration02   configuration
02 configuration
darwinodb
 
Everything you need to know about HTML5 in 15 min
Everything you need to know about HTML5 in 15 minEverything you need to know about HTML5 in 15 min
Everything you need to know about HTML5 in 15 min
Edgar Parada
 
Introducing ASP.NET Core 2.0
Introducing ASP.NET Core 2.0Introducing ASP.NET Core 2.0
Introducing ASP.NET Core 2.0
Steven Smith
 
Intro to Reactive Programming
Intro to Reactive ProgrammingIntro to Reactive Programming
Intro to Reactive Programming
Stéphane Maldini
 

What's hot (20)

Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an api
 
Containerizing legacy applications
Containerizing legacy applicationsContainerizing legacy applications
Containerizing legacy applications
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices
 
Continuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsContinuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applications
 
Yii workshop
Yii workshopYii workshop
Yii workshop
 
What's new in Spring Boot 2.0
What's new in Spring Boot 2.0What's new in Spring Boot 2.0
What's new in Spring Boot 2.0
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
 
jQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsjQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchApps
 
ProtractorJS for automated testing of Angular 1.x/2.x applications
ProtractorJS for automated testing of Angular 1.x/2.x applicationsProtractorJS for automated testing of Angular 1.x/2.x applications
ProtractorJS for automated testing of Angular 1.x/2.x applications
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 
JavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and RiceJavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and Rice
 
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
 
Intro To Reactive Programming
Intro To Reactive ProgrammingIntro To Reactive Programming
Intro To Reactive Programming
 
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
 
React JS
React JSReact JS
React JS
 
JVx - Application framework - 2013
JVx - Application framework - 2013JVx - Application framework - 2013
JVx - Application framework - 2013
 
02 configuration
02   configuration02   configuration
02 configuration
 
Everything you need to know about HTML5 in 15 min
Everything you need to know about HTML5 in 15 minEverything you need to know about HTML5 in 15 min
Everything you need to know about HTML5 in 15 min
 
Introducing ASP.NET Core 2.0
Introducing ASP.NET Core 2.0Introducing ASP.NET Core 2.0
Introducing ASP.NET Core 2.0
 
Intro to Reactive Programming
Intro to Reactive ProgrammingIntro to Reactive Programming
Intro to Reactive Programming
 

Viewers also liked

Tracy cv for web 2011
Tracy cv for web 2011Tracy cv for web 2011
Tracy cv for web 2011
CanopyKim
 
Social Media Wist-u-dat?
Social Media Wist-u-dat?Social Media Wist-u-dat?
Social Media Wist-u-dat?SocialenCo
 
SolTec Presentation
SolTec PresentationSolTec Presentation
SolTec Presentation
apatton77
 
Samui Luxury Villas - The Estates Samui
Samui Luxury Villas - The Estates SamuiSamui Luxury Villas - The Estates Samui
Samui Luxury Villas - The Estates Samui
real estate
 
Solutions Simplified - Taking advantage of Cloud
Solutions Simplified - Taking advantage of CloudSolutions Simplified - Taking advantage of Cloud
Solutions Simplified - Taking advantage of Cloud
Vipin Velayudhan
 
Introduction to kanban calgary .net user group - feb 6
Introduction to kanban   calgary .net user group - feb 6Introduction to kanban   calgary .net user group - feb 6
Introduction to kanban calgary .net user group - feb 6
Dave White
 
Visual answers to everyday challenges
Visual answers to everyday challengesVisual answers to everyday challenges
Visual answers to everyday challenges
Jamie McIndoe
 
Unit Testing - Calgary .NET User Group - Nov 26 2014 - Depth Consulting
Unit Testing -  Calgary .NET User Group - Nov 26 2014 - Depth ConsultingUnit Testing -  Calgary .NET User Group - Nov 26 2014 - Depth Consulting
Unit Testing - Calgary .NET User Group - Nov 26 2014 - Depth Consulting
Dave White
 
Каталог товаров с сайта Racingplanet.de
Каталог товаров с сайта Racingplanet.deКаталог товаров с сайта Racingplanet.de
Каталог товаров с сайта Racingplanet.de
Denis Miroshnichenko
 
Interface grafica em_java_parte_iii
Interface grafica em_java_parte_iiiInterface grafica em_java_parte_iii
Interface grafica em_java_parte_iiisamuelthiago
 
Unlock the hidden value in your membership data presentation overview only
Unlock the hidden value in your membership data presentation overview onlyUnlock the hidden value in your membership data presentation overview only
Unlock the hidden value in your membership data presentation overview only
Proximo Consulting Services
 
Introduction to Kanban
Introduction to KanbanIntroduction to Kanban
Introduction to Kanban
Dave White
 
Album de fotos
Album de fotosAlbum de fotos
Album de fotos
aleoli23
 
Rickwebslidedeck 1
Rickwebslidedeck 1Rickwebslidedeck 1
Rickwebslidedeck 1
CanopyKim
 
Interface grafica em_java_parte_ii
Interface grafica em_java_parte_iiInterface grafica em_java_parte_ii
Interface grafica em_java_parte_iisamuelthiago
 
Modulo a
Modulo aModulo a
Modulo a
samuelthiago
 
Agile Games
Agile Games Agile Games
Agile Games
Dave White
 
Agaze
AgazeAgaze
Android App Development for Beginner
Android App Development for BeginnerAndroid App Development for Beginner
Android App Development for Beginner
Deni Rohimat
 

Viewers also liked (20)

Tracy cv for web 2011
Tracy cv for web 2011Tracy cv for web 2011
Tracy cv for web 2011
 
Social Media Wist-u-dat?
Social Media Wist-u-dat?Social Media Wist-u-dat?
Social Media Wist-u-dat?
 
SolTec Presentation
SolTec PresentationSolTec Presentation
SolTec Presentation
 
Samui Luxury Villas - The Estates Samui
Samui Luxury Villas - The Estates SamuiSamui Luxury Villas - The Estates Samui
Samui Luxury Villas - The Estates Samui
 
Solutions Simplified - Taking advantage of Cloud
Solutions Simplified - Taking advantage of CloudSolutions Simplified - Taking advantage of Cloud
Solutions Simplified - Taking advantage of Cloud
 
Introduction to kanban calgary .net user group - feb 6
Introduction to kanban   calgary .net user group - feb 6Introduction to kanban   calgary .net user group - feb 6
Introduction to kanban calgary .net user group - feb 6
 
Twitterとfacebook
TwitterとfacebookTwitterとfacebook
Twitterとfacebook
 
Visual answers to everyday challenges
Visual answers to everyday challengesVisual answers to everyday challenges
Visual answers to everyday challenges
 
Unit Testing - Calgary .NET User Group - Nov 26 2014 - Depth Consulting
Unit Testing -  Calgary .NET User Group - Nov 26 2014 - Depth ConsultingUnit Testing -  Calgary .NET User Group - Nov 26 2014 - Depth Consulting
Unit Testing - Calgary .NET User Group - Nov 26 2014 - Depth Consulting
 
Каталог товаров с сайта Racingplanet.de
Каталог товаров с сайта Racingplanet.deКаталог товаров с сайта Racingplanet.de
Каталог товаров с сайта Racingplanet.de
 
Interface grafica em_java_parte_iii
Interface grafica em_java_parte_iiiInterface grafica em_java_parte_iii
Interface grafica em_java_parte_iii
 
Unlock the hidden value in your membership data presentation overview only
Unlock the hidden value in your membership data presentation overview onlyUnlock the hidden value in your membership data presentation overview only
Unlock the hidden value in your membership data presentation overview only
 
Introduction to Kanban
Introduction to KanbanIntroduction to Kanban
Introduction to Kanban
 
Album de fotos
Album de fotosAlbum de fotos
Album de fotos
 
Rickwebslidedeck 1
Rickwebslidedeck 1Rickwebslidedeck 1
Rickwebslidedeck 1
 
Interface grafica em_java_parte_ii
Interface grafica em_java_parte_iiInterface grafica em_java_parte_ii
Interface grafica em_java_parte_ii
 
Modulo a
Modulo aModulo a
Modulo a
 
Agile Games
Agile Games Agile Games
Agile Games
 
Agaze
AgazeAgaze
Agaze
 
Android App Development for Beginner
Android App Development for BeginnerAndroid App Development for Beginner
Android App Development for Beginner
 

Similar to Depth Consulting - Calgary .NET User Group - Apr 22 2015 - Dependency Injection

From Monoliths to Services: Grafually paying your Technical Debt
From Monoliths to Services: Grafually paying your Technical DebtFrom Monoliths to Services: Grafually paying your Technical Debt
From Monoliths to Services: Grafually paying your Technical Debt
David Litvak Bruno
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
TIMETOACT GROUP
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Vadym Kazulkin
 
Patterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 appsPatterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 apps
Phil Leggetter
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
Amazon Web Services
 
Azure DevOps Tasks.pptx
 Azure DevOps Tasks.pptx Azure DevOps Tasks.pptx
Azure DevOps Tasks.pptx
PrasanthOneness
 
Improving the Design of Existing Software
Improving the Design of Existing SoftwareImproving the Design of Existing Software
Improving the Design of Existing Software
Steven Smith
 
King Tut Architecture
King Tut ArchitectureKing Tut Architecture
King Tut Architecture
Gary Pedretti
 
Improving the Quality of Existing Software
Improving the Quality of Existing SoftwareImproving the Quality of Existing Software
Improving the Quality of Existing Software
Steven Smith
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
TechWell
 
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
Qamar Abbas
 
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Vadym Kazulkin
 
How to avoid microservice pitfalls
How to avoid microservice pitfallsHow to avoid microservice pitfalls
How to avoid microservice pitfalls
Particular Software
 
Accessibility Testing - Using Asqatasun - Meetup Webinar
Accessibility Testing - Using Asqatasun - Meetup WebinarAccessibility Testing - Using Asqatasun - Meetup Webinar
Accessibility Testing - Using Asqatasun - Meetup Webinar
Keyur Shah
 
Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...
Vadym Kazulkin
 
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
Daniel Gallego Vico
 
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
SPTechCon
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
Thomas Daly
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps world
Davide Benvegnù
 
Containers and Microservices for Realists
Containers and Microservices for RealistsContainers and Microservices for Realists
Containers and Microservices for Realists
Oracle Developers
 

Similar to Depth Consulting - Calgary .NET User Group - Apr 22 2015 - Dependency Injection (20)

From Monoliths to Services: Grafually paying your Technical Debt
From Monoliths to Services: Grafually paying your Technical DebtFrom Monoliths to Services: Grafually paying your Technical Debt
From Monoliths to Services: Grafually paying your Technical Debt
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
 
Patterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 appsPatterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 apps
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
 
Azure DevOps Tasks.pptx
 Azure DevOps Tasks.pptx Azure DevOps Tasks.pptx
Azure DevOps Tasks.pptx
 
Improving the Design of Existing Software
Improving the Design of Existing SoftwareImproving the Design of Existing Software
Improving the Design of Existing Software
 
King Tut Architecture
King Tut ArchitectureKing Tut Architecture
King Tut Architecture
 
Improving the Quality of Existing Software
Improving the Quality of Existing SoftwareImproving the Quality of Existing Software
Improving the Quality of Existing Software
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
 
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
 
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
 
How to avoid microservice pitfalls
How to avoid microservice pitfallsHow to avoid microservice pitfalls
How to avoid microservice pitfalls
 
Accessibility Testing - Using Asqatasun - Meetup Webinar
Accessibility Testing - Using Asqatasun - Meetup WebinarAccessibility Testing - Using Asqatasun - Meetup Webinar
Accessibility Testing - Using Asqatasun - Meetup Webinar
 
Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...
 
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps world
 
Containers and Microservices for Realists
Containers and Microservices for RealistsContainers and Microservices for Realists
Containers and Microservices for Realists
 

Recently uploaded

zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
YousufSait3
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
devvsandy
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 

Recently uploaded (20)

zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 

Depth Consulting - Calgary .NET User Group - Apr 22 2015 - Dependency Injection