WPF + MVVM + DI (C#) - Best Practicies
Prikazujem rezultate 1 do 9 od 9

Tema: WPF + MVVM + DI (C#) - Best Practicies

  1. #1
    Iskusan frederikrr (avatar)
    Učlanjen
    29.11.2016.
    Pol
    muški
    Poruke
    5.702
    Tekstova u blogu
    2
    Reputaciona moć
    134

    Podrazumevano WPF + MVVM + DI (C#) - Best Practicies

    U poslednjih nekoliko nedelja, dobijao sam zadatke da refaktorisem neke kodove pisane pre 2-3 godine. U pitanju su bile klijent-server aplikacije, gde su klijenti bili single-page WPF aplikacije. I toliko djubreta od koda sam pretresao da sam poceo da sanjam nocu svakakve gluposti

    Takodje, vidim da i ovde dosta ljudi uopste nije shvatilo dva osnovna principa OOP-a, i uporno pokusava da tera po svom, a onda kukaju kada nesto ne moze lepo da se implementira.

    Ta dva motiva, a i trenutan visak vremena na poslu (nisam lud da im kazem da sam zavrsio sve za ovaj sprint dva dana ranije ) me motivisu da otvorim temu, gde bih objasnio kako implementirati jednu jednostavnu desktop aplikaciju, koriscenjem WPF-a, ali tako da ispostujemo MVVM pattern, i da iskoristimo moc Depencency Injection-a.

    Pre nego krenemo, da ponovim dva osnovna principa OOP-a (poznati kao osnovni principi solid programming-a): JAKA KOHEZIJA, i SLABA POVEZANOST (High Cohesion & Low Coupling).

    Jaka kohezija podrazumeva da je jedan objekat odgovoran za jedan posao. Kao i u stvarnom svetu, recimo, automobil ima vise delova, i svaki deo je odgovoran za jedan posao koji radi.
    Slaba povezanost, izmedju delova, podrazumeva da delovi treba da sto je manje moguce zavise jedni od drugih - kako bi lakse mogli da se zamene, unaprede, odrzavaju, popravljaju, da se lako detektuje u kom delu je problem.

    Da bi se ispostovala ova prica u programiranju, osmisljen je MVVM dizajn pattern. Naravno, postoji jos mnogo drugih pattern-a, i svi su tu sa ciljem da ispostuju solid-programming-principles, ali ovde cemo da se zadrzimo, i prikazemo kako radi MVVM.

    Prvo slovo M u skracenici je od MODEL - predstavlja model podataka, tacnije predstavlja nase podatke.
    Drugo slovo V, je od VIEW - predstavlja user interface - prikaz nasih podataka.
    poslednja dva slova su od VIEW-MODEL: medjusloja, koji predstavlja "lepak" izmedju modela i view-a, i sluzi da poveze nase podatke sa interfejsom, ali i mnogo vise: sluzi kao neka vrsta "skretnicara", "dispecera", tacnije onoga koji povezuje ne samo prikaz podataka i ono sto nase podatke sadrzi, vec uz pomoc jednog drugog, dodatnog, jako bitnog mehanizma u celoj ovoj prici, povezuje i prosledjuje ko ce i kako izvrsavati akcije nad tim podacima (komande). Taj dodatni mehanizam se zove Depencency Injection, i o njemu cemo malo kasnije, kroz konkretan primer.
    Dakle, da rezimiramo:
    MODEL - sadrzi podatke.
    VIEW - prikazuje podatke korisniku - UI
    VIEW-MODEL - povezuje ova dva, i ponasa se kao vrhovni komandant, koji odredjuje ko ce koje komande da izvrsi.

    Ime:  mvvm-schema.jpg
Pregleda: 87
Veličina:  12,6 KB

    Mozemo li sada dalje, da polako krenemo sa konkretnim primerom, i da vidimo kako ovo radi? Jel ovo interesuje nekoga, uopste?
    Poslednji put ažurirao/la frederikrr : 09.02.2018. u 09:08
    Dva najveca zla po ljudsko drustvo su rasizam i fasizam.
    Ali ne propada drustvo zbog onih koji cine zlo - Propada zbog onih koji ne cine nista protiv tog zla. Zbog onih koji cute.



  2. #2
    Elita Umri_muski (avatar)
    Učlanjen
    01.01.2014.
    Pol
    muški
    Lokacija
    Mesto gde otkrivate zaboravljene vestine
    Poruke
    18.164
    Reputaciona moć
    268

    Podrazumevano Re: WPF + MVVM + DI (C#) - Best Practicies

    Da steti ne moze...
    Ovi sto citaju kratke kodove, citaju i kratke postove, a nema dobrih programa bez dugih kodova...

  3. #3
    miki208 nije na forumu
    Ponekad ljudi za koje to niko ne bi pomislio, mogu da urade nesto sto niko ne moze da zamisli.
    Moderator miki208 (avatar)
    Učlanjen
    21.01.2010.
    Pol
    muški
    Lokacija
    Beograd
    Poruke
    2.436
    Reputaciona moć
    114

    Podrazumevano Re: WPF + MVVM + DI (C#) - Best Practicies

    Odlicna tema
    Uvek budi ono sto zaista jesi, pa cak iako odstupas od ostalih. Lepota je razlikovati se.

  4. #4
    Iskusan frederikrr (avatar)
    Učlanjen
    29.11.2016.
    Pol
    muški
    Poruke
    5.702
    Tekstova u blogu
    2
    Reputaciona moć
    134

    Podrazumevano Re: WPF + MVVM + DI (C#) - Best Practicies

    Citat Original postavio miki208 Pogledaj poruku
    Odlicna tema
    Hvala Da li mogu da uploadujem ovde jedan zip fajl (6.5 MB) gde imam jedan jednostavni projekat koji bi demonstrirao ovu pricu, pa da ljudi mogu lakse da prate?
    Dva najveca zla po ljudsko drustvo su rasizam i fasizam.
    Ali ne propada drustvo zbog onih koji cine zlo - Propada zbog onih koji ne cine nista protiv tog zla. Zbog onih koji cute.

  5. #5
    miki208 nije na forumu
    Ponekad ljudi za koje to niko ne bi pomislio, mogu da urade nesto sto niko ne moze da zamisli.
    Moderator miki208 (avatar)
    Učlanjen
    21.01.2010.
    Pol
    muški
    Lokacija
    Beograd
    Poruke
    2.436
    Reputaciona moć
    114

    Podrazumevano Re: WPF + MVVM + DI (C#) - Best Practicies

    Naravno, verujem da ne bi bilo prakticno kopirati ceo kod u CODE tagove

    Ukoliko bude problema sa postavljanjem sadrzaja, onda ostavi link do repozitorijuma na githubu
    Poslednji put ažurirao/la miki208 : 09.02.2018. u 14:26
    Uvek budi ono sto zaista jesi, pa cak iako odstupas od ostalih. Lepota je razlikovati se.

  6. #6
    Iskusan frederikrr (avatar)
    Učlanjen
    29.11.2016.
    Pol
    muški
    Poruke
    5.702
    Tekstova u blogu
    2
    Reputaciona moć
    134

    Podrazumevano Re: WPF + MVVM + DI (C#) - Best Practicies

    Nastavljamo u ponedeljak - vikend je family time
    Uploadovacu kompletan solution u visual studiu.
    Ko bude zeleo da isprati ovu pricu, neka otvori, kompajlira, pa cemo da prodiskutujemo korak po korak kompletnu implementaciju.
    Dva najveca zla po ljudsko drustvo su rasizam i fasizam.
    Ali ne propada drustvo zbog onih koji cine zlo - Propada zbog onih koji ne cine nista protiv tog zla. Zbog onih koji cute.

  7. #7
    Iskusan frederikrr (avatar)
    Učlanjen
    29.11.2016.
    Pol
    muški
    Poruke
    5.702
    Tekstova u blogu
    2
    Reputaciona moć
    134

    Podrazumevano Re: WPF + MVVM + DI (C#) - Best Practicies

    Evo linka ka projektu jedne najjednostavnije WPF aplikacije, uradjene onako kako se radi u praksi. Ako je neko zainteresovan, neka skine, neka prouci, i neka krene da postavlja pitanja

    https://ufile.io/0t08z

    P.S.

    Ukoliko je neko zaista zainteresovan da nauci kako se koristi MVVM i DI, evo mu prilike
    Poslednji put ažurirao/la frederikrr : 12.02.2018. u 16:27
    Dva najveca zla po ljudsko drustvo su rasizam i fasizam.
    Ali ne propada drustvo zbog onih koji cine zlo - Propada zbog onih koji ne cine nista protiv tog zla. Zbog onih koji cute.

  8. #8
    Zainteresovan član
    Učlanjen
    12.07.2007.
    Pol
    muški
    Poruke
    125
    Reputaciona moć
    42

    Podrazumevano Re: WPF + MVVM + DI (C#) - Best Practicies

    Importovao sam fajlove i u okviru Solution-a pod nazivom SimpleMVVMApp postoje 5 različitih projekata:

    1. SimpleMVVM.Dependency
    2. SimpleMVVM.Provider
    3. SimpleMVVM.StartUP
    4. SimpleMVVM.View
    5. SimpleMVVM.ViewModel

    Za model nije kreiran zaseban projekat?

  9. #9
    Iskusan frederikrr (avatar)
    Učlanjen
    29.11.2016.
    Pol
    muški
    Poruke
    5.702
    Tekstova u blogu
    2
    Reputaciona moć
    134

    Podrazumevano Re: WPF + MVVM + DI (C#) - Best Practicies

    Update-ovano, skinite ponovo, dodat je model, uvazena sugestija

    U ovom konkretnom slucaju, mnogo je vaznije objasniti funkciju Provider-a, ViewModel-a, i Dependency kontejnera, kako bi se shvatilo kako se sve to lepo povezuje i izvrsava.
    Ocekujem sada pitanja o svemu ovome......
    Skinite solution, otvorite u VS 2015, ili novijem (moze i besplatna, community verzija), kompajlirajte, pogledajte kod, pa hajde da diskutujemo
    Poslednji put ažurirao/la frederikrr : 12.02.2018. u 16:30
    Dva najveca zla po ljudsko drustvo su rasizam i fasizam.
    Ali ne propada drustvo zbog onih koji cine zlo - Propada zbog onih koji ne cine nista protiv tog zla. Zbog onih koji cute.

Slične teme

  1. Best MC
    Autor Pretender u forumu Muzika
    Odgovora: 19
    Poslednja poruka: 24.07.2006., 21:53
  2. Gandalf is the best!
    Autor Feanor the elf king u forumu Književnost i jezik
    Odgovora: 56
    Poslednja poruka: 05.08.2005., 00:05
  3. THE BEST PLAYER
    Autor Killman || u forumu Fudbal
    Odgovora: 20
    Poslednja poruka: 22.03.2004., 03:40
  4. Counter The Best !!!
    Autor Boris u forumu Akcione igre
    Odgovora: 9
    Poslednja poruka: 03.08.2003., 19:08
  5. Nije li RATKO VARDA BEST
    Autor Ratko Varda u forumu Košarka
    Odgovora: 9
    Poslednja poruka: 25.06.2003., 18:24

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •