[OOP] MVC model controller

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ontwikkelaar MS Dynamics 365 Projecten

Samengevat: Deze werkgever is de kwaliteitsdienst in de tuinbouwsector. Ben jij een ervaren ontwikkelaar? Heb jij ervaring met Ms Dynamics 365 BC? Vaste baan: Ontwikkelaar Ms Dynamics 365 BC ICT MBO 3.500 - 5.000 Ontwikkelaar Ms Dynamics 365 BC Ons bedrijf bewaakt en bevordert de kwaliteit van producten, processen en ketens in de tuinbouw. Wij kenmerken zich door openheid, ruimte voor initiatief, collegialiteit en zelfontplooiing. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Functie: Voor de vacature als Ontwikkelaar Ms Dynamics 365 BC Roelofarendsveen MBO

Bekijk vacature »

SAP ABAP Developer

Dit ga je doen Software ontwikkeling met behulp van o.a. ABAP, Sapscript en Smartforms Maatwerk development op SAP ECC 6.0, in de toekomst S/4 HANA Samenwerken met Business Analisten die functioneel en technisch ontwerpen aanleveren Testen van opgeleverde software Bugfixing Ondersteuning van eindgebruikers Hier ga je werken Onze klant, een internationaal gevestigd productiebedrijf dat mensen blij maakt, is ter versterking op zoek naar een ABAP Developer voor hun SAP team. Het team van 4 mensen verzorgt de ontwikkeling van maatwerk voor de SAP omgeving waar wordt gewerkt met modules SD, FI/CO, PM en MM. Momenteel draait het bedrijf op SAP

Bekijk vacature »

Full stack 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 »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »

OutSystems Developer

Dit ga je doen Het van scratch af aan ontwikkelen van applicaties met OutSystems; Het aanhaken bij diverse projecten binnen de organisatie; Schakelen met de business; Meedenken over de mogelijkheden van het platform binnen de organisatie. Hier ga je werken Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Voor een opdrachtgever, met een prachtig kantoor in omgeving Wateringen zijn wij op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind jij het leuk om in een Agile/Scrum omgeving te werken? Wil jij

Bekijk vacature »

Software Programmeur PHP

Functie Ben jij op zoek naar een nieuwe uitdaging als PHP developer en zoek je een leuke platte organisatie? Lees dan snel verder! Voor een opdrachtgever in omgeving Capelle aan den IJssel dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »

Account Developer

Voor Bol.com zijn wij per direct op zoek naar een Account Developer voor 32-40 uur per week op het kantoor in Utrecht. Wil jij een directe bijdrage leveren door partners van de juiste data-inzichten te voorzien en via campagnes op nieuwe platformkansen en features te wijzen? Ben jij analytisch sterk en kun jij dit vertalen naar plannen en inspirerende gesprekken? Lees dan snel verder! wat bieden wij jou Salaris van €2400 - €2600 obv 40 uur Minimaal 6 maanden Werklocatie is Utrecht Werken bij bol.com wie ben jij Jij bent commercieel gedreven en weet altijd aan de juiste knoppen te

Bekijk vacature »

Grafisch vormgever

Standplaats: Maasland Aantal uren: 32 – 40 uur per week Opleidingsniveau: HBO werk- en denkniveau Ben jij een ambitieuze grafisch vormgever met een passie voor creativiteit en oog voor detail? Vind jij het daarnaast leuk om ook marketingactiviteiten op te pakken? Dan zijn wij op zoek naar jou! Bedrijfsinformatie Westacc Group BV is het zusterbedrijf van HABA en specialiseert zich in (maatwerk) oplossingen voor (elektro) techniek en verlichting in de kampeerbranche. Zij produceren en assembleren onderdelen voor caravans, campers en boten. Voor een groot aantal caravan- en campermerken leveren wij producten als zekeringkasten, invoerdozen, acculaders, schakelmateriaal en verlichting. De producten

Bekijk vacature »

Front-end developer Consultancy in teamverband wer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers. Momenteel zijn ze op zoek naar een ervaren Front-end of Fullstack developer die samen met de consultants aan de slag gaat om de business requirements te vertalen naar technische oplossingen. Los van het finetunen van extenties, help je bij het configureren van bijvoorbeeld een mobiel bankieren app. Hierin ben je van A tot Z betrokken en zie je bijvoorbeeld ook toe op de uitvoering van testen. Je expertise wordt optimaal benut en je krijgt verschillende kansen om deze uit te breiden door met verschillende innovatieve technologieën aan

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar ga jij aan de slag bij een van onze klanten actief in de High Tech Industrie. Onze klanten zijn voornamelijk gelokaliseerd in de omgeving van Eindhoven. Wij zijn erg selectief als het gaat om de projecten die wij accepteren en richten ons dan ook alleen op innovatieve en complexe projecten. Omdat onze klanten voornamelijk gespecialiseerd zijn in de machinebouw, werk jij ook vaak dicht tegen de machines aan. Ons team bestaat momenteel uit Embedded engineers, IOT developers en Cloud engineers. Wij werken voornamelijk aan Microsoft projecten waar er gebruik wordt gemaakt van WPF, UWP, .NET Core

Bekijk vacature »

Medior/senior Front-end developer

Functie Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden gebouwd, of grote complexe wijzigingen worden doorgevoerd op bestaande omgevingen. Je kunt (afhankelijk van jouw wensen en doelen) dus afwisselend werken in beide teams. Hiernaast participeer je in het Chapter Front-end development waar gezamenlijk kennis en ervaring wordt gedeeld. Als Front-end developer is het jouw doel

Bekijk vacature »

Leidinggevend Full Stack Developer

Hé jij, nieuwe Pinkcuber! Ga aan de slag bij Pinkcube, online leverancier van promotieartikelen! Een innovatieve organisatie waar extra stappen zetten voor klanten de normaalste zaak van de wereld is. Ambitieus zijn we ook. ‘Naoberschap’ staat bij Pinkcube hoog in het vaandel; we helpen elkaar en iedereen is welkom. Pinkcube is Great Place to Work Certified, erkend leerbedrijf, maatschappelijk betrokken partner van stichting Present en partner van CliniClowns. En misschien wel jouw nieuwe werkgever. Wij zoeken namelijk een enthousiaste: Leidinggevend Full Stack Developer (40 uur, medior/senior) Ben jij klaar om baanbrekende ideeën tot leven te brengen en deel uit te

Bekijk vacature »

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

Bekijk vacature »

.NET Developer

Functieomschrijving Ben jij klaar voor de volgende stap in jouw carrière? Kom werken bij dit kleine softwarebureau en werk aan de gaafste maatwerk projecten. Je komt te werken in een klein development team en werk nauw samen met elkaar, om maatwerk software te leveren en bij te dragen aan bedrijfsautomatiseringen. Je gaat werken met de Microsoft stack en technieken als .NET, C#, Entity, MVC, SQL server. In de functie krijg je veel vrijheid om zelf beslissingen te nemen en je hebt impact op de bedrijfsprocessen. Bedrijfsprofiel Dit familiebedrijf bestaat al ruim 20 jaar. Zij hebben een vast netwerk van klanten,

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

26/04/2024 00:00:28
 
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.