Kezdőoldal » Számítástechnika » Programozás » MVVM tervezési mintában a...

MVVM tervezési mintában a lekérdezéseket hol kell elhelyezni?

Figyelt kérdés
A ViewModelen belüli fájlokba vagy külön létrehozni egy mappat a ViewModelen belül és abba külön fájlokat a különböző lekérdezésekre?
2020. szept. 18. 19:51
1 2
 1/13 anonim ***** válasza:
8%

A lekérdezés az lényegében maga a Modell része. Azaz modell mappa.

Úgy látom, nem érted az MVVM minta lényegét, inkább elmagyarázom.

Van egy modelled. Ez maga az adat, és a réteg, ami biztosítja az adathoz a hozzáférést (jellemzően ORM könyvtár, de ha muszáj, akkor a modell gettereibe stb. írhatsz sql lekérdezést kézzel).

Van egy View azaz nézet. Ez semmi mást nem csinál, csak megjeleníti az adatot, de sablonszerűen, azaz neki mindegy kéne legyen milyen adatot kap, neki nem feladata dolgozni vele, csak megjeleníti. Lehetőség szerint ide lehet onClick és hasonló eseményeket integrálni, ha inline megoldásokkal megoldható.

És végül létezik a ViewModel, ami egy köztes réteget biztosít a modell és a nézet közé. Az ő dolga az, hogy a modellben lévő adatot átalakítsa olyanra, amit a view kezel, és visszafelé és igaz, amit inputnak adnak a nézetben például egy mezőben azt átadja megfelelően a modellnek.


Ha ezt így mind átgondolod, megérted, miért nem a viewmodel feladata a lekérdezés.

2020. szept. 18. 20:05
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:
79%

Model -> Minden ami business logic. Ez nem jelenti azt, hogy csak "modelleket" írhatsz oda, nyugodtan írhatsz oda mást is, servicet, bármit, ami a business logichoz kell (microsoft hivatalosan ezt mondja a modelről)

ViewModel -> Adatokat dolgoz fel és tárol megjelenítésre.

View -> gyakorlatilag a felhasználói felület.

2020. szept. 18. 20:10
Hasznos számodra ez a válasz?
 3/13 A kérdező kommentje:
Én még a modelben sose láttam, hogy bármit is csináltak volna, ott csak kizárólag adatok vannak get/set-el semmi más...
2020. szept. 18. 20:45
 4/13 anonim ***** válasza:
100%

[link]


"Model classes are non-visual classes that encapsulate the app's data. Therefore, the model can be thought of as representing the app's domain model, which usually includes a data model along with business and validation logic."

2020. szept. 18. 21:00
Hasznos számodra ez a válasz?
 5/13 anonim ***** válasza:
Nem kell túlbonyolítani. Én is jártam a te cipődben, az MVVM a business logic és a view között teremti meg a kapcsolatot viewmodel segítségével.
2020. szept. 18. 21:01
Hasznos számodra ez a válasz?
 6/13 A kérdező kommentje:

És mi az a buisness logic? Mi tartozik bele? Ezt már sok helyen olvastam, de sehol sem volt leírva sohase. Mintha a kisujjból kéne kiszopni. :)


Tehát akkor példa, hogyha a Modelben fejtük ki a metódusokat, lekérdezéseket:


Ha jelszót kérek be inputról:


A ViewModel megkapja a jelszót a View inputról. A ViewModel elkéri a HASH metódust, majd az inputról kapott jelszót elHASHELI és a változóba elmentett hash-t vissza adja Modelnek. Majd elkéri az adatbázisban tárolt jelszót és visszakéri a már előbb lehashelt jelszót is, amit összehasonlít. Majd, ha egyezik visszaadja a Modelnek, a Modellnak az egyezést, majd továbbítja a ViewModel az egyezést a View-ra, hogy a felhasználót beengedje és a ViewModel változtatja a felütet a bejelentkezésről egy másik ablakra.

2020. szept. 18. 21:22
 7/13 anonim ***** válasza:
100%
A színtiszta modell osztályokba nem írnék semmit, az csak adatot tároljon, különben megsérted a Single-responsibility principle-t , csak gettert settert ahogy mondtad. De a business logic szorosan hozzá kapcsolódik, szóval az mehet mellé, úgy mint pl akármilyen repository vagy DAO, vagy egyéb más service vagy manager, ami azért felel, hogy működjön is a dolog.
2020. szept. 18. 21:37
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:
100%
Sorry, nem olvastam végig, jelszó összehasonlítást nem így végeznek, inkább van egy adatbázis, és abban hasonlítja össze a hashelt értéket.
2020. szept. 18. 21:40
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:

"A színtiszta modell osztályokba nem írnék semmit, az csak adatot tároljon,"


De fentebb még az volt magyarázva, hogy nem csak adatot tárol.


A példa meg csak egy példa, arra vonatkozóan, hogy jól értem e a dolgot. ;).


Amúgy meg szerintem teljesen, mindegy, hogy az alkalmazásba hasonlítod össze vagy az adatbázisba. Adatbázist nem is terhelném ezzel. Inkább akkor már szerveroldalon. De ez tényleg csak egy példa volt ...

2020. szept. 18. 21:48
 10/13 A kérdező kommentje:
De, ha ezt vesszük akkor mégsem írkálhatunk pl LINQ lekérdezéseket a Modelbe, hanem majd vagy külön Services mappát létrehozunk és oda rakjuk be, ahogyan az interfészeket is, és egyéb mock-okat, vagy a ViewModelban írjuk, ahogy a kérdésembe is kérdeztem. Szóval akkor térjük vissza a kérdéshez. Hová írod a lekérdezést? :)
2020. szept. 18. 21:54
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!