Správičky 2 830 Blogy 948 Fórum 79 132

Zaujímavosti zo sveta

13.05 Antispam report Exchange 2013/…
blogCZSK
Nedávno jsem se setkal s prosbou, zda je možno udělat report nad funkcionalitou antispamu Exchange a trošku jsem narazil na problém, jak dos…
13.05 Pozvánka: konference, workshop…
blogCZSK
Níže jsme pro vás připravili přehled akcí, které jsou pro vás připraveny v příštích několika týdnech. Coding Bootcamp 19. 5. 2016 – Praha V …
12.05 Pozvánka: Nástroje a služby pr…
blogCZSK
Od vývoje přes nasazení po správu napříč platformami Rádi byste optimalizovali vývoj svých aplikací na různé platformy a nevíte jak? Zajímá …
12.05 System Center Configuration Ma…
blogCZSK
V minulém díle jsme nainstalovali SQL Server, který je nutný pro běh Configuration Manageru. Dnes nás čeká instalace WSUS, což je produkt, j…
11.05 Hovory od křivého stolu (5)
blogCZSK
A máme tu další díl českého video seriálu Hovory od křivého stolu (5). Pro toto vydání HKS jsme se ponořili do hlubin naší budovy a natočili…
11.05 Pozvánka: Coding Bootcamp Meet…
blogCZSK
V rámci pražského Coding Bootcampu budete mít možnost se naučit vše, co potřebuje moderní webový vývojář. Abyste měli představu, co bude náp…
10.05 Zajímavé kurzy a videa–MVA a C…
blogCZSK
I tento měsíc vám přinášíme výběr nejzajímavějších videí, kurzů a záznamů konferencí. Veškeré kurzy pak naleznete na portálu MVA a výuková v…
10.05 Azure Site Recovery – VMWARE (…
blogCZSK
Připravil jsem pro vás sérii článků, zabývající se technologií Azure Site Recovery. Konkrétně v šesti na sebe navazujících článcích se dozví…
09.05 DataScript: akční nabídka škol…
blogCZSK
Připravili jsme pro vás nabídku školení On-Demand. A jaké jsou výhody? nižší cena učíte se z pohodlí svého domova nebo kanceláře přístup mát…
05.05 System Center Configuration Ma…
blogCZSK
V předchozím díle jsme si nainstalovali prerekvizity potřebné pro běh Primary Site Configuration Manageru a také jsme připravili doménu pro …
20.04 Odkazy z prohlížeče – 20.4.201…
atasoft
CodeProject Video Transcoding and Streaming on the fly – CodeProject – přímo v prohlížeči (?) A Sample Code Submitted for Senior C# …
11.04 Linq a pracovní pohovor
mstr
Zjišťovat znalosti Linqu u pracovního pohovoru může být obtížné - s Linqem se asi setkal každý C# programátor, ale vždy záleží, do jaké hlou…
08.04 Linq - k čemu použít Aggregate…
mstr
K jednomu z předchozích článků, ve kterém jsem dal k dispozici cheatsheet pro Linq, se mne jeden známý zeptal, k čemu že je dobrý Aggregate …
27.03 Bezpečnost – věc veřejná
Poslední březnový den se v Praze uskuteční jednodenní konference o počítačové bezpečnosti SecPublica 2016. Jejím heslem je "securitas, res p…
16.03 Příklad na pohovor s programát…
mstr
Na blogu jsem uveřejnil několik příkladů z pohovorů s uchazeči o místo programátora. Dovolím si tedy uveřejnit jeden z dalších možných příkl…
15.03 IDisposable v příkladech
viga
Rozhraní IDisposable slouží k uvolnění “unmanaged” zdrojů. Nejčastěji to jsou různé objekty z Win32API (otevřené soubory, síťové spojení, GD…

Simple Injector 3

harrison314 - 20.5.2016 8:54 - 4376 views

Davam do pozornosti IoC kontainer SimpleInjector.

Ide o malý a jednoduchý kontainer, ktorý toho dokáže veľa, ide jednoducho rozšíriť a je konceptuálne zaujímavý.

A co je najhlavnjšie podpruje dobrý návrh a sám sa snaží byť čistý.

 

Osobne by som na velkú webovú aplikáciu uprednostil Windsore, no pre mlaé weby a desktop apky by som zvolil Simple Injector.

 

http://simpleinjector.readthedocs.io/en/latest/quickstart.html

 


harrison314

Článkov: 0, Správičiek: 7, Príspevkov vo fóre: 212, Príspevkov v blogu: 0, Bodov: 1200
Najaktívnejší č.: 44
Profil používateľa

Reakcie

# RE: Simple Injector 3 20.5.2016 10:38:58 liero

Otazka je, si ci na malych webkach a appkach potrebujes komplikovat zivot IoC kontainerom :)

# RE: Simple Injector 3 23.5.2016 7:47:56 harrison314

Nepovedal som ze pri malych dektop apkach, skor som to myslel pri akychkolvek desktop apkach.

@liero: cim mi ma IoC kontainer komplikovat zivot?

# RE: Simple Injector 3 23.5.2016 16:48:14 liero

@harrison314: napriklad tym, ze tym stratis referencie na konkretne implementacie. Chcem napr zistit, kde vsade sa pouziva classa MyService.

Taktiez kazdy IoC kontainer trochu komplikuje kazdemu dalsiemu, kto dany projekt nepisal.

Dalej, IoC sa znacne komplikuje, ked treba napriklad do konstruktora injectovat hodnoty, ktore su zavisle na runtime kontexte, napriklad IDcka, user inputy, atd. Teda nieco, co sa neda nasetupovat dopredu. Vtedy treba pouzit okrem IoC napriklad factory pattern, alebo nejaku velmi specificku feature IoC.

Predsa len je IoC dalsia layer of indirection (neviem to prezolit).

Nehovorim, ze su to neprekonatelne prekazky, ale niekedy je jednoduchsie lepsie. IoC je nieco, co sa da v jazyku ako C# lahko zaviest aj dodatocne, ked sa projekt rozrastie.

# RE: Simple Injector 3 24.5.2016 8:38:44 harrison314

"napriklad tym, ze tym stratis referencie na konkretne implementacie. Chcem napr zistit, kde vsade sa pouziva classa MyService"
To ani nehladaj, malo by ta zaujimat pouzitie jej rozhrania.

"Taktiez kazdy IoC kontainer trochu komplikuje kazdemu dalsiemu, kto dany projekt nepisal."
Ani nie je to len o inom pristupe, je to len odputanie sa od konkretnych implementacii v kode.

"Dalej, IoC sa znacne komplikuje, ked treba napriklad do konstruktora injectovat hodnoty, ktore su zavisle na runtime kontexte, napriklad IDcka, user inputy, atd. Teda nieco, co sa neda nasetupovat dopredu. Vtedy treba pouzit okrem IoC napriklad factory pattern, alebo nejaku velmi specificku feature IoC."

V takycthto pripadoch sa injektuje Factory, to nie je nic specificke, ale standardny postup. Inou moznostou je danu zavislost odovzdvat ako parameter metody.

Ja mam pocit, ze kod po zavedeni IoC kontaineru, je viac SOLID (je to vedlajsi efekt, pluz zlepsnie testovatelnosti), zjednoduchsuje sa mi sprava resoursov a mam oddeleny infrastrukturny kod od aplikacneho.

# RE: Simple Injector 3 24.5.2016 10:27:08 harrison314

PS:
Co sa tyka Indirection, tak sa treba odkazovat len na typ, IoC kontainery (SimpleInjector je v tomto obzvlast tvrdy) vedia validovat graf zavosloti. Takze to ze nie je nieco v poriadku sa dozvies hned v kompozicnom roote.

Inak, vstekeho vela skodi, aj sialene injektovanie kazdej blbosti.

# RE: Simple Injector 3 25.5.2016 22:40:52 duracellko

Inac spolu s .NET Core prichadza tiez jednoduchy DI container. Rovnako na zlozitejsie veci asi nebude, ale na mensie appky by mohol byt.

https://docs.asp.net/en/latest/fundamentals/dependency-injection.html

# RE: Simple Injector 3 2.6.2016 19:27:38 T

1. IoC je designovy princip a DI je konkretna technika, ako ho dosiahnut (IoC teda uz vobec nema features), mozem mat este DI framework, ktory moze mat features.
2. Ina technika IoC je napr. factory pattern, service locator a pod. treba zvolit vhodnu ucelu
3. Bez jasneho ucelu (davam za pravdu lierovi) je snaha o DI len zbytocne zavedena komplexita a DI ma aj nevyhody oproti inym technikam IoC, liero niektore spomina, preto treba zvazit co a kedy.

Fowler, snad bude jasna pointa:
"Inversion of Control is a key part of what makes a framework different to a library."

http://martinfowler.com/bliki/InversionOfControl.html
4. pocit viac SOLID ;-)
pouzitie DI framework vo vztahu ku jednotlivym jeho principom
Srp - irelevatne
Ocp - irelevatne
Lsp - irelevatne
Isp - irelevatne
Dip - sice DI je jeden zo sposobov naplnania principu ale jeho samoucelne pouzitie z neho "viac SOLID" a rozhodne lepsi kod nerobi

Pridať reakciu

Titulok:
Meno:
Url:
Koľko je 22 + 4?
(ochrana proti spamu)
Komentár:

Najaktívnejší užívatelia
1. 75910 b. photo quickydocs
2. 48800 b. photo xmhlxzybzzyq998
3. 48110 b. photo bfdgfdhfdhfd06
4. 42045 b. photo pmpindia123
5. 37855 b. photo vlko
6. 21520 b. photo T
7. 15965 b. photo spigi
8. 15450 b. photo Anonymous
9. 13645 b. photo jerryroy
10. 13360 b. photo spiceland