DI - WPF multiprojekt felépítése

DI - WPF multiprojekt felépítése
2017-07-26T09:21:39+02:00
2017-07-26T09:21:39+02:00
2022-12-04T16:50:39+01:00
alapanyag
Sziasztok,

Több kérdésem lenne amivel nem tudtam még dűlőre jutni és a segítségeteket kérném. A projektemet szeretném felfrissíteni Dependency Injectionnel illetve értelmesen feldarabolni dll-ekre. A fő cél a modulos felépítés, és a sw alkotóelemeinek cserélhetősége, illetve egyéb segédprogramok implementálása esetén csak a szükséges modulok kerüljenek a segédprogihoz, ne egy komplett réteget kelljen implementálni mindennel együtt.

A projektről: Egy MSSQL DB kapcsolattal rendelkező fogászati példaprogi WPF-ben megírva. Van egy indító projekt, egy Vew-ViewModel projekt, egy BL(üzleti réteg) projekt, DAL(adatbázis) projekt és egy kommunikációs projekt ahol a hálózati és usb kommunikáció van(ez az osztály csak elméleti, mivel részben van kész). A user képes belépni, páciensket rendezni, időpontot felvenni hozzájuk, userek számára a páciensek kortörténete historikusan csekkolható, röntgen képek csatolhatóak a páciensekhez.

Az első kérdésem hogy WPF esetén a GUI view elemeit és a viewmodelleket érdemes-e egy dll-be tenni? Vagy itt már teljesen két külön dll-t kellene lérehozni? A view dll-en belül az összes view megtalálható. A view dll tartalmazza a specifikusn 1-2 embertől kért módosított view-kat is. A fogászati programhoz használatos összes view benne van.


A sw élete során vannak olyan osztályok amelyek elérhetőek a viewmodel, model és néhány üzleti logikát alkalmazó szinteken. Például a settings(Sw és OS környezetet is módosít(képernyő kímélő pölö)), logolás. 

Végül elérkeztem a nagyobb problémámhoz. 
Az indító projektben létrehozom a composition root-ot. A DI-ból kiszedem a main window-t és megnyitom.

A mainwindow-al indítom a sw.-em, midnen egyéb ablak inicializálásáért felelős egyéb osztályt(view,viewmodel,stb) vagy egy WindowFactorynak kellene lennie, ami initeli az éppen megjelenítendő osztályt? És ez az osztály elérhető bárhol view-viewmodel szinten?

A DI hozzárendeli minden viewhoz a hozzá tartozó viewmodelt és a szükséges függőségeket, constructor injectionnel. A DI kontér elhelyezése a fentebb említett WindowFactory-ban vagy mainwindow-ban lenne megfelelő helyen?

Ilyen esetben, az adott osztályok számára elég a dll-ből kihúzni az interface névteret, amin keresztül tudom használni a példányokat és így elég a composition root-ban includolni az osztályok névtereit.

Bocsika, ha kicsit kusza lett, de nem minden teljesen tiszta még ezzel kapcsolatban számomra.

Előre is köszönöm a segítséget.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd