HDSoftware Skrevet 1. november 2016 Del Skrevet 1. november 2016 Folkens.. Har et lite dilemma, og jeg misstenker vel at svaret er "Det spørs..:", men alikevel slenger jeg ut denne for å få noen meninger. Jeg har akkurat startet med MVC. Ser at man lager modeller som representerer entitetene man bruker. Nå har jeg brukt EntityFramework i noen år og således har jeg jo allerede modeller ferdige som representerer database og biz. Men hva med modellene i MVC? Er det best practice å bruke de eksisterende modellene jeg har eller bør man designe egne modeller som "bare" gjelder kontrollene og Viewene ? Ved å bruke eksisterende modeller vil en jo kunen bruke eksisterende funksjonalitet som allerede er laget og man slipper jo unna en masse greier. På den andre siden kan man jo linke inn entitene i MVC modellene og kalle de direkte derfra og heller ha properties og navigation properties som reflekterer hva man ønsker å vise. Føler liksom at dette går i beina på hverandre og havner støtt og stadig i situasjonen "Dette har jeg jo fra før" og føler jo ikek akkurat at det er bra heller... Tanker.... Lenke til kommentar
Enthroner Skrevet 1. november 2016 Del Skrevet 1. november 2016 Det som er greit med å ha egene data transfer objects (DTO) er at da er du helt eksplisitt med hva du vil - og forventer - å sende over internett. Det er også lettere å håndtere f.eks injection forsøk og slikt. Hvis du har et json endpoint med REST så kan en bruker teoretisk endre felter du kanskje ikke vil skal endres. Alt fra småting som f.eks et CreatedOn felt eller kanskje større ting som bonuspoengbalanse eller andre ting. Selv har jeg skrevet et rammeverk for å eksplisitt skjule eller vise (whitelist vs blacklist) felter fra mine EntityFramework objekter. Men denne bruker jeg kun på små prosjekter. https://github.com/AlexanderBrevig/ExposeOrHide Prosjekter av skala blir lettere å håndtere i min erfaring med et eget, eksplisitt DTO lag. Lenke til kommentar
HDSoftware Skrevet 1. november 2016 Forfatter Del Skrevet 1. november 2016 Det som er greit med å ha egene data transfer objects (DTO) er at da er du helt eksplisitt med hva du vil - og forventer - å sende over internett. Det er også lettere å håndtere f.eks injection forsøk og slikt. Hvis du har et json endpoint med REST så kan en bruker teoretisk endre felter du kanskje ikke vil skal endres. Alt fra småting som f.eks et CreatedOn felt eller kanskje større ting som bonuspoengbalanse eller andre ting. Selv har jeg skrevet et rammeverk for å eksplisitt skjule eller vise (whitelist vs blacklist) felter fra mine EntityFramework objekter. Men denne bruker jeg kun på små prosjekter. https://github.com/AlexanderBrevig/ExposeOrHide Prosjekter av skala blir lettere å håndtere i min erfaring med et eget, eksplisitt DTO lag. Takker for innlegget og det er vel slik jeg tenker også. Ville spørre fordi MVC som sagt er nytt og greit å ta steget i riktig retning. Godt å vite at jeg ikke tenker helt feil da :-) Lenke til kommentar
Enthroner Skrevet 1. november 2016 Del Skrevet 1. november 2016 Vil bare skyte inn at MVC alene fungerer godt for å lage et underliggende API hvor hvert kall bryr seg om en, og bare en, ressurs. Før eller siden vil du ha behov for å bry deg om flere ting på en side. F.eks en blogg med header, innhold,tags, kategorier og kommentarer. Mitt tips til deg da er å ha underliggende server side API skrevet med MVC (hvor views rett og slett bare er JSON eller XML render) også kan du bruke Model View View-Model (MVVM) for selve rendringen av siden din. MVC er et gammelt pattern og er egentlig blitt misbrukt og misforstått over tid. http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Et view skal egentlig ikke bry seg så mye om hvordan ting vises, men hva som vises. Når tiden er inne for å ha flere ressurser på skjerm samtidig er det lurt å ikke prøve å tvinge MCV inn i dette, men heller benytte noe som er laget for å håndtere denne situasjonen. Enter MVVM. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå