View
3.276
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Introduction to Spring.NET, Inversion of Control. Spring.NET is an open source application framework that makes building enterprise .NET applications easier.
Citation preview
www.orbitone.com
Raas van Gaverestraat 83B-9000 GENT, Belgium E-mail [email protected] Website www.orbitone.com
Tel. +32 9 265 74 20Fax +32 9 265 74 10VAT BE 456.457.353Bank 442-7059001-50 (KBC)
10 May, 2009 Inversion Of Control - Spring.NET Overview
Inversion Of Control - Spring.NET Overview2
Dependencies and Dependency Injection
10 May, 2009
Inversion Of Control - Spring.NET Overview3
What is Dependency Injection?
Dependency injection (DI) in programming refers to the process of supplying an external dependency to a software component.
It is a specific form of inversion of control where the concern being inverted is the process of obtaining the needed dependency.
10 May, 2009
Inversion Of Control - Spring.NET Overview4
But … what is Inversion of control?
Inversion of control, or IoC, is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to the traditional architecture.
Control flow is expressed in imperative programming in the form of a series of instructions or procedure calls. Instead of specifying a sequence of decisions and procedures to occur during the lifetime of a process, the user of a IoC framework writes the desired responses linked to particular events or data requests.
10 May, 2009
Inversion Of Control - Spring.NET Overview5
IOC Container
10 May, 2009
Inversion Of Control - Spring.NET Overview6
Aha…and what is an IOC container?
10 May, 2009
Inversion Of Control - Spring.NET Overview7
Spring.NET
an application framework for buidling Enterprise .NET applications
an IoC Container (Inversion of Control) that manages and injects dependencies on behalf of developers (DI = Dependency Injection)
10 May, 2009
Inversion Of Control - Spring.NET Overview8
And more…
10 May, 2009
Inversion Of Control - Spring.NET Overview9
IoC Containers for .NET
PicoContainer.NET: lightweight and highly embeddable IoC container
StructureMap: lightweight Inversion of Control (IoC) Container written in C#; can improve the architectural qualities of .NET apps by reducing the mechanical costs of good design techniques
Castle: Tools for application development including small IoC container
Spring.NET: full featured IoC container (port of Java version)
10 May, 2009
Inversion Of Control - Spring.NET Overview10
Practice First approach - Dependencies
public class ExampleObject {
private AnotherObject objectOne; // dependencies
private YetAnotherObject objectTwo;
private int i;
public AnotherObject ObjectOne {
set { this.objectOne = value; }
}
public YetAnotherObject ObjectTwo {
set { this.objectTwo = value; }
}
public int IntegerProperty {
set { this.i = value; }
}
}
10 May, 2009
Inversion Of Control - Spring.NET Overview11
Configuration I
Preferred way to create Object Factories and Application contexts is via configuration:<configuration> <configSections> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> </sectionGroup> </configSections> <spring> <context> <resource uri="config://spring/objects"/> </context> <objects> ... </objects> </spring></configuration>
Handlers used for Spring configuration section
Where to find object configuration, e.g. file, assembly, config
Configuration of Spring managed objects
10 May, 2009
Inversion Of Control - Spring.NET Overview12
Configuration II
The configuration tells Spring.NET how objects depend on each other:
<object id="exampleObject" type="Examples.ExampleObject, ExamplesLibrary">
<property name="objectOne" ref="anotherExampleObject"/>
<property name="objectTwo" ref="yetAnotherObject"/>
<property name="IntegerProperty" value="1"/>
</object>
<object id="anotherExampleObject" type="Examples.AnotherObject, ExamplesLibrary"/>
<object id="yetAnotherObject" type="Examples.YetAnotherObject, ExamplesLibrary"/>
Object name Object type: namespace path + class, assembly
Properties referring to other objects: often called dependencies or collaborators
10 May, 2009
Inversion Of Control - Spring.NET Overview13
Usage
Now instantiating an ApplicationContext is simple:
IApplicationContext ctx = ContextRegistry.GetContext();ExampleObject person = (ExampleObject)ctx.GetObject(“exampleObject ");
ID that should appear in object
configuration
10 May, 2009
Inversion Of Control - Spring.NET Overview14
Example application
10 May, 2009
Inversion Of Control - Spring.NET Overview15
Solve the dependencies with Spring.NET IOC
Demo
10 May, 2009
16 Inversion Of Control - Spring.NET Overview10 May, 2009
http://en.wikipedia.org/wiki/Inversion_of_control http://martinfowler.com/articles/injection.html http://abdullin.com/wiki/inversion-of-control-ioc.html http://www.springframework.net/doc-latest/reference/html/objects.html http://www.developer.com/net/csharp/article.php/3722931/Dependency-Inje
ction-with-SpringNet.htm
Resources
17 Inversion Of Control - Spring.NET Overview
www.orbitone.com
10 May, 2009