ioc - koristen vzorec ali nepotrebna komplikacija
DESCRIPTION
Slides from my session on IoC basics at NT conference 2013TRANSCRIPT
100300
IoC: koristen vzorec ali nepotrebna komplikacija?Damir Arh, Adacta d.o.o.Arhitekt programske opremeMVP – Visual C#@DamirArh, http://www.damirscorner.com
100300
Agenda
Zakaj IoC? Primerjava vzorcev IoC Ogrodja IoC za .NET Prednosti in slabosti
100300
Zakaj IoC?
100300
Glavni poudarki
Premik odvisnosti v ločen razred Abstrakcija prek vmesnika Zunanje instanciranje odvisnih razredov Uporaba ogrodja IoC
100300
Web Service
View Model
Dependency Injection
100300
Web Service
View Model
Repository
Dependency Injection
100300
Web Service
View Model
Repository
IRepository
Dependency Injection
100300
Web Service
View Model
Repository
IRepository
Dependency Injection
100300
Web Service
View Model
Repository
IRepositoryIoC Container
Dependency Injection
100300
Bind<ViewModel>().ToSelf()
Bind<IRepository>().To<WsRepository>()
Konfiguracija ogrodja IoC
ViewModel(IRepository)
WsRepository() : IRepository
100300
ViewModel(IRepository)
WsRepository(IWsEndpoint) : IRepository
MainWsEndpoint() : IWsEndpoint
Bind<ViewModel>().ToSelf()
Bind<IRepository>().To<WsRepository>()
Bind<IWsEndpoint>().To<MainWsEndpoint>()
Enostavno širjenje
100300
<module name="xmlConfig">
<bind service="MVVM.ViewModel, MVVM"
to="MVVM.ViewModel, MVVM" />
<bind service="MVVM.IRepository, MVVM"
to="MVVM.WsRepository, MVVM" />
<bind service="MVVM.IWsEndpoint, MVVM"
to="MVVM.MainWsEndpoint, MVVM" />
</module>
Konfiguracija v XML
100300
Nastavitve v kodi ali datoteki?
Zastavite si 3 vprašanja: Kdaj? Kdo? Koliko?
Uporabite lahko oboje
100300
public class ViewModel
{
public ViewModel(IRepository);
}
public class ViewModel
{
public ViewModel();
public IRepository { get; set; }
}
Setter Injection
100300
Inversion of Control
Dependency Injection
DI != IoC
100300
Service Locator
100300
Web Service
View Model
Repository
IRepositoryIoC Container
Dependency Injection
100300
Web Service
View Model
Repository
IRepositoryService Locator
Service Locator
100300
Življenjski cikel odvisnosti
100300
Življenjski cikel odvisnosti
Različen obseg uporabe instanc: Enkratna uporaba (transient) Trajna (singleton) Znotraj niti Znotraj zahtevka (splet)
Skrb za sproščanje (IDisposable): Ročna Samodejna
100300
Ogrodja IoC za .NET
Autofac Castle Windsor Container Ninject Spring.NET StructureMap Unity
100300
Koristi uporabe IoC
Šibka sklopljenost Večja fleksibilnost Lažje testiranje Boljši pregled nad odvisnostmi
100300
Uporaba za testiranje
100300
IoC: da ali ne?
Kdaj ne?
300
VPRAŠANJAProsimo vas, da po koncu predavanja izpolnite vprašalnike. Nekoga izmed vas bomo nagradili z Nokio Lumia 820.
Vprašalniki bodo poslani na vaš e-naslov, dostopni pa bodo tudi preko profila na spletnem mestu www.ntk.siNajlepša hvala!
Iščete kakovostno izobraževanje? Obiščite Microsoftove izobraževalne centre:
Uspeh = Znanje = Microsoftovi uradni tečaji + predavatelji Microsoft Certified Trainer