Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Prostyprzykład:HelloDI!
21
9
cd.ramki
Na
pdc
2008zapowiedzianoAzureidużozrobiono,byprzekonaćnawetnajbardziej
zatwardziałeorganizacjepracującetylkonabazietechnologiiMicrosoftu.Musiałyone
ponownieocenićswojepozycjewkwestiiprzechowywaniadanych.Istniejeterazpraw-
dziwaalternatywadlarelacyjnychbazdanychijedyne,ocomuszępytaćludzi,to,czy
chcą,żebyichaplikacjabyłagotowanachmurę.Argumentzzamianązyskałteraznasile.
PodobnyruchmożnaznaleźćwcałymkoncepcieNoSQL,gdziemodelujesięaplikacje,
korzystajączezdenormalizowanychdanychczęstobazdokumentowych.Alepomysły
takiejakEventSourcingstająsięcorazbardziejznaczące9.
Wsekcji1.2.1nieużytopóźnegowiązania,ponieważexplicitestworzononowąinstan-
cję
IMessageWriter
przezkodowanienasztywnoitworzenienowejinstancji
Conso-
leMessageWriter
.Jednakmożnawprowadzićpóźnewiązanieprzezzmianętejjednej
linijkikodu:
IMessageWriterwriter=newConsoleMessageWriter();
Abypozwolićnapóźnewiązanie,możliwe,żetrzebazamienićlinijkękoduna
podobnądotej.
Listing1.2.PóźnewiązanieimplementacjiIMessageWriter
IConfigurationRootconfiguration=newConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
stringtypeName=configuration["messageWriter"];
Typetype=Type.GetType(typeName,throwOnError:true);
IMessageWriterwriter=(IMessageWriter)Activator.CreateInstance(type);
UWAGA
Listing1.2upraszczapewnekwestie,abyprzedstawićideę.Tak
naprawdęcierpinatenantywzorzec
OGRANICZONEJKONSTRUKCJI
,októrymmowa
wrozdziale5.
Przezwyciągnięcienazwytypuzplikukonfiguracjiaplikacjiistworzeniezniego
instancji
Type
możnaużyćmechanizmurefleksjidostworzeniainstancji
IMessageWri-
ter
bezznajomościkonkretnegotypuwczasiekompilacji.Żebytozadziałało,wyma-
ganejestokreślenienazwytypuwparametrzekonfiguracji
messageWriter
wpliku
konfiguracyjnymaplikacji:
9
M.Fowler(2005).EventSourcing[online].Dostęp:https://martinfowler.com/eaaDev/EventSour-
cing.html.