[OOP] MVC model controller

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van IT Operations Manager! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van

Bekijk vacature »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

.NET Developer Shared Driving

Bedrijfsomschrijving Onze klant richt zich op het toegankelijker maken van steden, een fantastisch mooi streven. Hoe ze dat doen? Met eigen ontwikkelde software, waarmee vervoersmiddelen gedeeld kunnen worden. Deze inspirerende werkgever maakt een maatschappelijke impact en dat doen ze nu al zo'n 25 jaar! Het bedrijf is gevestigd in het centrum van Rotterdam en kent ongeveer zo'n 90 medewerkers. Het personeel is lekker gewoon gebleven! Iedereen kleedt zich zoals hij of zij dat zou willen en de sfeer is er erg fijn. Een leuke werkgever om voor te werken, en bovendien zijn er voor jou als Software Developer veel mooie

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Junior .NET developer

Functie Wij zijn bezig met het ontwikkelen van een nieuw product en wij hebben jouw hulp hierbij nodig! Als junior .NET ontwikkelaar krijg jij de kans om samen met ons deze nieuwe uitdaging aan te gaan! Momenteel bestaat ons team uit drie interim Software Engineers. Twee hiervan zijn zeer ervaren .NET specialisten die inmiddels hun strepen in dit vakgebied al hebben behaald. Ook hebben wij een junior als onderdeel van ons team die zich op dit moment nog bezig houdt met de Front-end (Angular/TypeScript), maar zich nu ook meer gaat verdiepen in de backend. Wij willen ons team graag verder

Bekijk vacature »

Junior/medior PHP developer Onderwijssector

Functie Momenteel zijn ze op zoek naar een developer die, veelal fullstack, mee gaat werken aan de ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js

Bekijk vacature »

Typescript Developer / Cloud platform

Dit ga je doen (Door)Ontwikkelen van het cloud platform; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het cloud platform; Sparren met de business. Hier ga je werken Onze opdrachtgever, gevestigd in regio Eindhoven, levert een compleet dienstenpakket op het gebied van IT. Zij pakken verschillende (complexe) vraagstukken van grote organisaties op. De sfeer intern is gezellig en informeel. Men houdt van hard werken maar gezelligheid door middel van een borrel of gezamenlijke lunch komt er veel voor. Als Typescript ontwikkelaar word je onderdeel van het team gericht op de (door)ontwikkeling van hun eigen cloud platform welke wordt

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in een ontwikkelteam met 7 .NET developers. In ons team werken er drie senior .NET developer, twee medior .NET developers en twee junior .NET developers. Er is dan ook genoeg senioriteit in ons team om jou te kunnen bieden wat jij nodig hebt! Wij werken in scrum en hebben drie wekelijkste sprints. Daarnaast doen wij minimaal vier keer per jaar een release. Ons platform is ontzettend complex en groot. Het is dan ook in het begin belangrijk dat jij de processen gaat begrijpen. Jij krijgt dan ook een cursus om beter te begrijpen

Bekijk vacature »

Full Stack Developer

Ben jij een kei van een full-stack developer? Heb je ambitie om te groeien en jezelf te ontwikkelen binnen een ambitieus bedrijf? Gaat jouw hart sneller kloppen van transpilers of frameworks zoals Angular, Vue of React? Dan ben jij de persoon die wij zoeken! Voor onze opdrachtgever zijn wij op zoek naar een full-stack developer om onderdeel te zijn van een team dat bestaat uit gedreven developers. Ieders met hun eigen specialiteiten en kennis van de projecten en behoeften vanuit de product owners. We zoeken iemand die met zijn/haar huidige competenties en domeinen dit team wil begeleiden, stimuleren en tevens

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »
Ozzie PHP

Ozzie PHP

26/02/2019 10:48:24
Quote Anchor link
Ola,

Een vraagje ... als ik op internet rondkijk dan zie ik dat er verschillende interpretaties zijn van het MVC-model. En dan doel ik met name op de relatie tussen controller, model en view.

Zo zie je op Wikipedia een afbeelding waar model en view met elkaar communiceren.

https://nl.wikipedia.org/wiki/Model-view-controller-model

Op de onderstaande pagina zie je echter een afbeelding waar dat juist niet het geval is. Hier praat de controller met het model en de view, maar hebben het model en de view geen weet van elkaar.

https://www.quora.com/What-is-the-difference-between-the-OOP-object-oriented-programming-concept-and-the-MVC-model%E2%80%93view%E2%80%93controller-concept

Deze laatste manier is hoe ik zelf ook tegen het MVC-model aankijk. De controller vangt het request op, praat met het model om data op te halen en stuurt vervolgens de juiste gegevens naar de view.

Er is echter 1 ding wat ik me afvraag.

Is het model uitsluitend bedoeld om data op te halen? Of mag er ook 'logica' in zitten?

Een heel simpel voorbeeldje ...

Een website met films moet aanbevolen films tonen voor ingelogde bezoekers. Voor iemand van 12 (een kind) moeten andere films worden getoond dan voor iemand van 25.

Maar waar zit nu de logica ... in de controller of in het model?

Stuurt de controller als de leeftijd jonger is dan x jaar een verzoek naar het model om aanbevolen 'kinderfilms' op te halen? Of stuurt de controller een generiek verzoek naar het model om aanbevolen films op te halen, en bepaalt het model zelf op basis van de leeftijd welke films hij ophaalt? Wie is zeg maar 'leading' in dat proces. Zijn daar richtlijnen voor?

Toevoeging op 26/02/2019 10:57:51:

Misschien nog een tweede voorbeeldje ...

Stel we hebben een loginpagina. Iemand voert z'n gebruikersnaam en wachtwoord in. Wie voert dan vervolgens de controle uit? Verstuurt de controller een verzoek naar het model om het wachtwoord (hash) op te halen, en kijkt de controller vervolgens zelf of dat overeenkomt met het opgegeven wachtwoord? Of stuurt de controller enkel een verzoek 'controleer wachtwoord' naar het model, en voert het model de gehele controle zelf uit?
 
PHP hulp

PHP hulp

15/01/2025 19:03:18
 
Ward van der Put
Moderator

Ward van der Put

26/02/2019 11:03:01
Quote Anchor link
Die logica zit in een ander model. :D

Een film is namelijk een ander model dan een lijst met films. De controller stuurt in dit geval het model voor een lijst of collectie met films aan, niet dat voor een film.

(Ik gebruik zelf overigens ook liever de tweede interpretatie van het MVC-pattern omdat het in PHP meestal geen zin heeft een view rechtstreeks aan een model te hangen zonder tussenkomst van een controller. Het kán wel, maar het heeft weinig praktische toepassingen.)
 
Ozzie PHP

Ozzie PHP

26/02/2019 11:09:02
Quote Anchor link
>> Een film is namelijk een ander model dan een lijst met films. De controller stuurt in dit geval het model voor een lijst of collectie met films aan, niet dat voor een film.

Ik snap wat je bedoelt :-)

Maar de vraag blijft hetzelfde ... wat vindt waar plaats. Volgens mij (correct me if I'm wrong) zou de controller niet ZELF rechtstreeks die lijst met films moeten ophalen, maar verloopt dat via het model dat bij die controller hoort. Dus de controller zegt tegen het model dat het model (via een ander model) een lijst met films moet ophalen en moet teruggeven aan de controller. Tot zover klopt het denk ik nog?

Maar nu dus de vraag ... in het voorbeeldje met de leeftijd ... zegt de controller tegen het model "geef me films voor iemand van 12"? Of zegt de controller "geef me een lijst met films" en bepaalt het model welke films het teruggeeft?
 
Ward van der Put
Moderator

Ward van der Put

26/02/2019 11:27:26
Quote Anchor link
Het kan beide, maar bij complexere criteria is het makkelijker de verantwoordelijkheden bij het model te leggen. Bijvoorbeeld:

class AdultMovies extends Movies

De controller hoeft nu niet te weten wat de criteria zijn die het model gebruikt om tot een bepaalde samenstelling van films te komen. Dan kan bijvoorbeeld een WHERE ages >= 18 zijn, maar ook een set van geheel andere criteria (bijvoorbeeld een rating volgens een of ander reviewsysteem).

Heb je omgekeerd echter een applicatie nodig die juist wél gericht op specifieke leeftijden kan zoeken, dan wordt de leeftijd een expliciet argument waarmee de controller het model moet kunnen aansturen.
 
Ozzie PHP

Ozzie PHP

26/02/2019 12:27:21
Quote Anchor link
Hmmm,oké daar zit wat in.

En het andere voorbeeldje wat ik gaf wat betreft inloggen?

Dus een gebruiker logt in. De LoginController ontvangt de ingevoerde gebruikersnaam en wachtwoord. Gaat de controller nu zelf de controle uitvoeren of het wachtwoord klopt? Of stuurt hij de gebruikersnaam en wachtwoord naar het model en voert het model de controle uit?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/02/2019 20:01:37
Quote Anchor link
>> Dus een gebruiker logt in. De LoginController ontvangt de ingevoerde gebruikersnaam en wachtwoord. Gaat de controller nu zelf de controle uitvoeren of het wachtwoord klopt? Of stuurt hij de gebruikersnaam en wachtwoord naar het model en voert het model de controle uit?

Hoe logt de gebruiker in? Via een een login formulier of een api of misschien wel een via de commandline (beheerder tools) ?

Welke rol heeft jantje? wat mag jantje wel en niet?

Welke veiligheidsmaatregelen zijn van kracht? (misschien wel 2-step-verification)

Welk algoritme wordt gebruikt bij het hashen van de wachtwoorden?

Heb ik het antwoord al gegeven? :p
 
Ozzie PHP

Ozzie PHP

26/02/2019 20:37:10
Quote Anchor link
>> Heb ik het antwoord al gegeven? :p

Nou, je hebt in ieder geval een boel vragen gesteld :D

Maar ik neem aan dat je wil zeggen dat het in het model thuishoort omdat het logica betreft. Correct?
 
Thomas van den Heuvel

Thomas van den Heuvel

26/02/2019 21:30:13
Quote Anchor link
De beste opmerking die ik hier ergens over gelezen heb:

Vergeet niet dat een model een IDEE is, het is een leidraad bij het op een bepaalde manier inrichten van een applicatie. Hierbij kun je dus rustig beslissingen nemen om dingen anders in te richten zolang je de hoofdlijnen maar in grote lijnen aanhoudt.

Het heeft geen enkele zin om het MVC-model heel strict te volgen omdat dit mede in kan houden dat je allemaal virtuele muren optrekt om bepaalde onderdelen, of dat deze compleet onbereikbaar voor elkaar zijn op het moment dat dat wel eens verdomd handig geweest had kunnen zijn.

Je moet dit soort ontwerpbeslissingen nemen op grond van wat handig en praktisch is, in plaats van jezelf in de blubber vastrijden enkel en alleen om een soort van ideaalbeeld van een methodiek na te streven, die je verder echt helemaal niets oplevert.

Ik heb dit soort "discussies" al zo vaak gezien op het internet, en elke MVC-zealot predikt daarbij dat zijn geloof het ware is...

Wie zegt dat die precieze aanpak (of welke specifieke MVC-aanpak dan ook die ergens uit de doeken wordt gedaan) de "beste" is voor jouw applicatie? :/
Gewijzigd op 26/02/2019 21:37:53 door Thomas van den Heuvel
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/02/2019 21:36:02
Quote Anchor link
Een model is nog erg basic maar wel beter dan in een controller. Je moet de controllers klein houden.
Denk breder:

- een security class die zich gaat gedragen naar de instellingen die gedaan zijn.
- meerdere password encoders (sha, bcrypt, ...) waarvan er één gebruikt wordt per Authenticator (één Authenticator zou een LoginFormAuthenticator kunnen zijn)
- een Firewall die bepaalt wat er afgeschermd moet worden
- Authorization: Wie is er gemachtigd om het gevraagde te mogen zien/bewerken/verwijderen

Als je zondag niets te doen hebt zou je dit eens kunnen lezen
 
Ozzie PHP

Ozzie PHP

26/02/2019 22:10:05
Quote Anchor link
@Frank: oké, got the idea ;)

@Thomas:

Ja, snap wel wat je zegt. Het is inderdaad voor meerdere interpretaties vatbaar. Ik las ook ergens dat je de controllers zo klein mogelijk moet houden (ook wat Frank zegt) en models zo groot mogelijk. Volgens mij stond er zoiets als "use skinny controllers and fat models". Ik denk dat ik de controller een beetje moet zien als een soort dirigent die met z'n stokje aanwijst wat er moet gebeuren, en het model als het orkest dat de muziek produceert :-)
 
Thomas van den Heuvel

Thomas van den Heuvel

26/02/2019 22:54:28
Quote Anchor link
Maar heb je ondertussen al wat muziek gemaakt, of ben je nog steeds je orkest aan het samenstellen? :p

En hoe klinkt die muziek dan :].
 
Ozzie PHP

Ozzie PHP

26/02/2019 23:19:48
Quote Anchor link
Ik ben nog de juiste bandleden bij elkaar aan het rapen ;-) En ergens heel in de verte beginnen er wat trompetten te blazen :)
 
Ward van der Put
Moderator

Ward van der Put

27/02/2019 08:56:40
 
Ozzie PHP

Ozzie PHP

27/02/2019 10:29:50
Quote Anchor link
Haha ... nice! :-)))
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.