Transcript
Page 1: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

IoC: koristen vzorec ali nepotrebna komplikacija?Damir Arh, Adacta d.o.o.Arhitekt programske opremeMVP – Visual C#@DamirArh, http://www.damirscorner.com

Page 2: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Agenda

Zakaj IoC? Primerjava vzorcev IoC Ogrodja IoC za .NET Prednosti in slabosti

Page 3: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Zakaj IoC?

Page 4: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Glavni poudarki

Premik odvisnosti v ločen razred Abstrakcija prek vmesnika Zunanje instanciranje odvisnih razredov Uporaba ogrodja IoC

Page 5: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Web Service

View Model

Dependency Injection

Page 6: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Web Service

View Model

Repository

Dependency Injection

Page 7: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Web Service

View Model

Repository

IRepository

Dependency Injection

Page 8: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Web Service

View Model

Repository

IRepository

Dependency Injection

Page 9: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Web Service

View Model

Repository

IRepositoryIoC Container

Dependency Injection

Page 10: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Bind<ViewModel>().ToSelf()

Bind<IRepository>().To<WsRepository>()

Konfiguracija ogrodja IoC

ViewModel(IRepository)

WsRepository() : IRepository

Page 11: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

ViewModel(IRepository)

WsRepository(IWsEndpoint) : IRepository

MainWsEndpoint() : IWsEndpoint

Bind<ViewModel>().ToSelf()

Bind<IRepository>().To<WsRepository>()

Bind<IWsEndpoint>().To<MainWsEndpoint>()

Enostavno širjenje

Page 12: IoC - Koristen vzorec ali nepotrebna komplikacija

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

Page 13: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Nastavitve v kodi ali datoteki?

Zastavite si 3 vprašanja: Kdaj? Kdo? Koliko?

Uporabite lahko oboje

Page 14: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

public class ViewModel

{

public ViewModel(IRepository);

}

public class ViewModel

{

public ViewModel();

public IRepository { get; set; }

}

Setter Injection

Page 15: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Inversion of Control

Dependency Injection

DI != IoC

Page 16: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Service Locator

Page 17: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Web Service

View Model

Repository

IRepositoryIoC Container

Dependency Injection

Page 18: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Web Service

View Model

Repository

IRepositoryService Locator

Service Locator

Page 19: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Življenjski cikel odvisnosti

Page 20: IoC - Koristen vzorec ali nepotrebna komplikacija

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

Page 21: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Ogrodja IoC za .NET

Autofac Castle Windsor Container Ninject Spring.NET StructureMap Unity

Page 22: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Koristi uporabe IoC

Šibka sklopljenost Večja fleksibilnost Lažje testiranje Boljši pregled nad odvisnostmi

Page 23: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

Uporaba za testiranje

Page 24: IoC - Koristen vzorec ali nepotrebna komplikacija

100300

IoC: da ali ne?

Kdaj ne?

Page 25: IoC - Koristen vzorec ali nepotrebna komplikacija

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


Recommended