[MVC] Model Layer uitgelicht

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Developer Coördinator

Bedrijfsomschrijving Als Ontwikkelaar kom je te werken bij een internationale organisatie die zich heeft gespecialiseerd binnen de machinebouw. Totaal wereldwijd bestaat de organisatie uit meer dan 1500 werknemers en bevinden de klanten zich over de hele wereld. Met hun machines worden de klanten kwalitatief sterker en staat innovatie voorop bij de medewerkers. Op het hoofdkantoor dat gevestigd is in Nederland werken ongeveer 300-400 man en daar zal jij ook terechtkomen. In deze functie houd je je bezig met de software die wordt ontwikkeld op de productiemachines en systemen. In deze rol heb je een dubbele functie: je werkt zoveel mee

Bekijk vacature »

Ervaren .NET developer gezocht, api development, .

Ben je een ervaren .NET developer en op zoek naar baan waarbij je je ook meer kunt gaan richten op architectuur? Binnen een leuke, sociale en betrokken werkomgeving? Met technieken als .NET Core en Azure? Dan zou deze baan wellicht iets voor jou kunnen zijn. Voor een organisatie in Rotterdam zijn we op zoek naar eens ervaren .NET ontwikkelaar. De organisatie bevindt zich in de financiële branche en is een van de grotere spelers in hun vakgebied. De organisatie bestaat uit circa 600 medewerkers en heeft verschillende vestigingen in Nederland. Het hoofdkantoor zit in Rotterdam en daar is ook de

Bekijk vacature »

Lead Software Developer (NL) bij PostNL

Lead Software Developer (NL) Den Haag HBO/WO IT Professional "Als Technisch Lead impact maken op de groeiende E-commerce markt met onze logistieke software. Je doet dit door technisch sturing te geven aan het team en ontwikkeling van onze Cloud IT-platformen en Open Source software-oplossingen gebouwd in of C#, Java, Javascript, Typescript, Python of Mobile op Android. Dit vraagt om een rolmodel en tech leiderschap". Wat ga je doen? PostNL is becoming a postal tech company. Als Lead Software Developer ben je de tech lead van een multidisciplinair Business-IT-team bestaande uit onder andere Developers en Solution Consultants. Je zult verantwoordelijk worden

Bekijk vacature »

Systeembeheerder Windows Welkomstbonus € 5.00

Systeembeheerder Windows medior Welkomstbonus van € 5.000,- Bij T2 zorgen we goed voor elkaar en doen wij leuke dingen met leuke mensen. We zorgen voor uitdagende opdrachten zodat jij jezelf onbeperkt kan blijven ontwikkelen. Ben jij een ervaren systeembeheerder Windows en wil je het beste uit jezelf halen? Dan ben je van harte welkom bij T2 en ontvang je onze welkomstbonus ter waarde van € 5.000,-. Er werken leuke mensen bij T2, die op een professionele en informele wijze met hun carrière en collega’s omgaan. Dat is de basis voor succes! Het is vanzelfsprekend dat je met de nieuwste technieken

Bekijk vacature »

Senior fullstack .NET developer

Wil jij samen met gemotiveerde en slimme collega’s bouwen aan ons geavanceerde landschap in Azure? En vind je het ook nog eens leuk om jouw kennis te delen met junior- en medior devs? Dan heb je wellicht interesse in de positie van: Senior fullstack .NET developer voor ons kantoor in Alkmaar Over de positie: Bij SnelStart werken we in een AGILE-structuur om de productie meer focus en impact te geven. Met je collega’s kom je tot de beste resultaten door onderlinge discussie, goede refinement sessies, reviews en écht teamwork. Je hebt de vrijheid om de dingen te doen zoals jij

Bekijk vacature »

Medior .Net Developer - Logistieke zeevracht secto

Voor een hechte, informele en jonge club gespecialiseerd in Transport Management Systemen voor de vracht en havensector zijn wij op zoek naar een medior (3+ jaar) .Net C# Developer. Een goede, sociale communicator die samenwerking en passie voor het vak key vindt. En die durft te sparren, dromen en pionieren! Deze organisatie van 150 man (waarvan 9 IT-toppers) zorgen er al 30 jaar voor dat internationale transport tot in de details kunnen worden berekend, ingepland en gemanaged, bijvoorbeeld in de Rotterdamse haven. Hierdoor worden kosten, materialen, arbeid, ontwerpen en oplevering perfect en just-in-time op elkaar afgestemd. Ze zijn marktleider én

Bekijk vacature »

(Sr.)Fullstack Developer C#on cloud for next gener

For an international, financially stable organization, specialized in creating and streaming video broadcasts, we are looking for a (Sr.) Fullstack C# Developer. The platform hosts millions of (live) broadcasts a year and is exponentially growing. As a Fullstack Developer you will be responsible for the full SDLC of the Front End and Back End (20/80) analyzing new requirements, design, development, testing and deployment (CI&CD) and maintenance within a (Scrum) team of 5 other developers. To qualify you have: Min. 8 years of Fullstack C# experience Min 2 years Experience with Angular (or a javascript framework) Experience with Cloud, AWS is

Bekijk vacature »

Software Solution Architect - Overheid

Software Solution Architect - Overheid Functiebeschrijving: Kom jij ons team helpen bij het ontwerpen en ontwikkelen van moderne, heldere en realiseerbare architecturen voor grote, complexe omgevingen bij onze klanten binnen de Nederlandse overheid? Meer weten? Bel of Whatsapp met Aad van Kempen via 06 10040513! Wat ga je doen? In jouw rol als Software Solution Architect breng je de Nederlandse overheid via CGI naar het nieuwe digitale tijdperk met de beste ICT-infrastructuur. Hoe? Als aanspreekpunt, adviseur en hoeder voor de inrichting van het IT-landschap. Je realiseert efficiënt de IT-toepassingen, operationeel en strategisch. Waarom? Alleen het beste is goed genoeg. Daarom

Bekijk vacature »

Junior BI Developer

Bedrijfsomschrijving De organisatie waar je komt te werken als BI Developer is een grote internationale financiële instelling. Met vele vestigingen in Nederland zijn ze een belangrijke speler op de financiële markt. Jij zal hoofdzakelijk op het kantoor in Amsterdam werkzaam zijn, maar het kan ook voorkomen dat je af en toe naar een andere vestiging gaat. Het bedrijf telt ongeveer 5000 medewerkers waarvan ruim 150 ICT'ers. Het team waar je in komt te werken als (Junior) BI Developer is een ambitieus BI team dat zich bezighoudt met lokale en internationale uitdagingen. Zo zit een andere Junior BI Developer, 2 Medior

Bekijk vacature »

Open Source Developer Ontwikkelaar

Bedrijfsomschrijving Onze klant is gevestigd in regio Breda. Ter uitbreiding zijn zij op zoek naar een ervaren Open Source Developer. Onze klant gelooft in de kracht van samenwerken en vanuit die overtuiging biedt onze klant verschillende Open Source oplossingen aan bij klanten en implementeert deze. De organisatie adviseert klanten over verschillende oplossingen op het gebied van kantoorautomatisering. Als ontwikkelaar ben je verantwoordelijk voor het doorontwikkelen en het integreren van de verschillende componenten. Hierbij ga je sowieso gebruik maken van Open Source oplossingen. Daarnaast ben je verantwoordelijk voor het doorontwikkelen van het hosting platform. Ben jij gek van Open Source en

Bekijk vacature »

Medior/Senior QA Automation Engineer

Experlogix is op zoek naar een Medior/Senior Quality Assurance Automation Engineer die een passie heeft om ervoor te zorgen dat onze software van de hoogste kwaliteit is. Je draagt zorg voor een hoge kwaliteitsstandaard op het gebied van codering, code coverage en het automatiseren van testen voor onze state-of-the-art CPQ-oplossing. Je werkt samen met een team van collega’s in US en Nederland. Samen zorgen jullie ervoor dat geïdentificeerd wordt op welke belangrijke gebieden we ons product kunnen optimaliseren en de prestaties van het product kunnen verbeteren. Zodat we onze klanten nog beter van dienst kunnen zijn. Verantwoordelijkheden Samen met product

Bekijk vacature »

Medior PHP Developer

Bedrijfsomschrijving De organisatie is een marktleider op het gebied van Software ontwikkeling omtrent medewerker applicaties. Hiermee helpen ze klanten met het optimaliseren van bedrijfsprocessen en verduurzamen van de bedrijfsvoering. Innovatie en ontwikkeling staat daarom dan ook hoog in het vaandel. Je collega's hebben een open, informele werksfeer gecreëerd waar de dialoog altijd kan worden aangegaan. Als PHP developer ga je aan de slag met het realiseren van web applicaties on-premise en in de Cloud. Je schrijft innovatieve, maar ook robuuste codes en houdt hierbij rekening met Security aspecten. De code die je schrijft en de koppelingen die jij realiseert hebben

Bekijk vacature »

Cobol Programmeur tijdelijk

Functieomschrijving Ben jij een Cobol programmeur en wil je een toffe opdracht uitvoeren bij een hele bekende overheidsinstelling in Den Haag? Heb je naast ontwikkelen ervaring met ontwerpen en verbeteren van Cobol omgevingen? Reageer dan snel! Ontwikkelen en onderhouden van de Cobol applicatie omgeving; Het ontwikkelen en bouwen van applicaties in een web-omgeving; Verbeteren van de efficiency en kwaliteit van de systemen; Achterhalen requirements; Je draagt zorg voor heldere systeemdocumentatie en instructies. Functie-eisen Een afgeronde HBO opleiding; Minimaal 3 - 5 jaar werkervaring met Cobol; Ervaring met IBS2000, IBM/Power7 en DDS zijn een pré; Je kan goed zelfstandig maar ook

Bekijk vacature »

Ervaren full-stack C# developer, .NET CORE, Typesc

Voor een ambitieuze en snelgroeiende organisatie de regio Rotterdam zijn we momenteel op zoek naar een .NET C# developer. De organisatie bestaat inmiddels ruim 15 jaar en heeft een systeem ontwikkeld waarmee bedrijven de informatie van grote en complexe projecten beter kunnen managen. Dit systeem is geheel webbased. Om hun globale ambities waar te maken zijn ze recentelijk begonnen het systeem geheel te herbouwen met de nieuwste technieken. Denk hierbij aan technieken als .NET CORE, Typescript, React, Kubernetes en Azure. Niet alleen betekent voldoende nieuwe technische uitdaging maar ook betekent dit dat je voor 80 tot 90% van je tijd

Bekijk vacature »

SAP FS-PM Developer DevOps

Bedrijfsomschrijving For our client in Rotterdam, we are looking for a SAP developer with experience in FS-PM (Financial Services – Policy Management). Within the Pensions department, you get to work in one of ten SAP teams. This department is responsible for all of the pension administration services, including general and client-related processes. Increasing customer satisfaction is one of the most important goals of the organization. Together with your team, you ensure that the pension administration service runs as smoothly and as automated as possible. Functieomschrijving Are you a SAP developer with experience in an Insurance company? Do you have experience

Bekijk vacature »
Jasper DS

Jasper DS

23/01/2013 12:22:51
Quote Anchor link
Hallo iedereen,

ik heb de voorbije dagen erg veel gelezen over het MVC-pattern, een ORM en het datamapper-pattern.
de VC van het MVC is voor mij nu vrij duidelijk. Ik heb een eigen interpretatie gemaakt die waarschijnlijk nog wel een pak beter kan maar het volstaat voor wat ik nu wil doen.

Dan schiet er nog de model over. Ik heb hier op het forum geleerd dat je de database / storage moet benaderen vanuit een mapper en een Domain object. Dit topic op stackoverflow ging er nog een beetje dieper op in en voegde aan deze twee elementen nog "de model" toe.

De model layer bestaat dus uit:
  • Domain object
  • Mapper
  • Model
  • StorageClass


Het domain object is vrij duidelijk, het houd de data vast en controleert of de data aan het juiste type voldoet. Het domain object is niet verantwoordelijk voor de storage van de data.

De mapper is de verbinding tussen het domain object en de storage. In de mapper staat geen SQL, de mapper spreekt enkel de juiste storage classe aan die op zijn beurt de rest van het werk doet.

Model zorgt ervoor dat er geen logica in de controller komt.

Je zou dus kunnen zeggen dat de model en mapper er zo uit zien:
Model
  • getAll()
  • getTopFive()
  • getRow()
  • save()

Mapper
  • select()
  • update()
  • delete()


Maar is de mapper en de model eigenlijk niet gewoon hetzelfde en kan je deze niet samenvoegen tot één classe?

Maar achtergrond informatie over mijn manier van denken vind je in deze PDF

Bedankt voor het lezen!
Gewijzigd op 23/01/2013 12:23:07 door Jasper DS
 
PHP hulp

PHP hulp

27/01/2021 01:19:08
 
Wouter J

Wouter J

23/01/2013 13:57:22
Quote Anchor link
Lees eens deze mooie minitut van Niels over models, mappers en meer in het MVC pattern: http://www.phphulp.nl/php/forum/topic/oop-gedachtengang/85017/3/#609065
 
Erwin H

Erwin H

23/01/2013 14:22:47
Quote Anchor link
Ik heb die tut van Niels niet doorgelezen, dus mogelijk dat ik iets dubbels zeg, bij voorbaat excuses dan.

Maar mijn antwoord op de vraag of de mapper en het model niet samen gevoegd zouden kunnen worden is het volgende.
Kan je je een situatie voorstellen waarin je het ene wel wil aanpassen en het andere niet? Zo ja, dan zou ik het gescheiden houden. In dit specifieke geval kan ik me bijvoorbeeld voorstellen dat je voor een applicatie een normale relationele database gebruikt. MySQL, Oracle, MSSQL, DB2, whatever. Volgend jaar echter krijg je de geest en wil je veranderen naar een nosql database. Op zich kan daarmee je hele applicatie gelijk blijven, alleen de manier waarop je de data in de backend verwerkt wordt anders. In mijn ogen blijven de functies zoals je die in het model hebt gedefinieerd dan gelijk, maar de implementatie van de mapper zal anders worden.

Bovenstaand voorbeeld is wellicht niet van toepassing op jou. Probeer dan een situatie voor jezelf te schetsen waarbij je wel de een wilt veranderen en de ander niet. Kan je zo'n situatie werkelijk niet bedenken, dan kan je waarschijnlijk de twee samenvoegen.



P.S. bovenstaande denkwijze geldt natuurlijk niet alleen voor dit deel van een applicatie, maar voor alle onderdelen. Het is in feite mijn grondbeginsel voor het aanmaken van een nieuw object of niet.
 
Jasper DS

Jasper DS

24/01/2013 17:30:23
Quote Anchor link
Wouter J op 23/01/2013 13:57:22:
Lees eens deze mooie minitut van Niels over models, mappers en meer in het MVC pattern: http://www.phphulp.nl/php/forum/topic/oop-gedachtengang/85017/3/#609065

Ook die reactie heb ik al tientallen keren doorgenomen alle paterns opgezocht etc. Ik vind dat Gateway-pattern wel interessant maar weet nog niet hoe ik dat moet implementeren.

Erwin H:
Ik heb die tut van Niels niet doorgelezen, dus mogelijk dat ik iets dubbels zeg, bij voorbaat excuses dan.
...

Hoi Erwin,

ik ben wel van plan om meerder storage types te ondersteunen. Dus dat ik eigenlijk als ik een nieuwe storage toevoeg (Json, Mysql, MSSql) dat ik eigenlijk enkel de storage classe (lees adapter(?)) hoef aan te passen. Maar om dat te bereiken kan ik de mapper en de model nog steeds samenvoegen hé?

Ik dacht dat de regel was dat een mapper enkel Crud methodes kon bevatten ofzo? Indien dat het geval was kon de mapper eigenlijk voor eender welk object gebruikt worden niet?
 
Wouter J

Wouter J

24/01/2013 17:34:40
Quote Anchor link
Quote:
Dus dat ik eigenlijk als ik een nieuwe storage toevoeg (Json, Mysql, MSSql) dat ik eigenlijk enkel de storage classe (lees adapter(?)) hoef aan te passen. Maar om dat te bereiken kan ik de mapper en de model nog steeds samenvoegen hé?

Ja, jij hebt ooit de database abstractie layer nog 1 klasse opgeschoven en in Storage klassen ondergebracht. Erwin plaats die Database Abstractie in de Mapper. Nu wordt bij jou de Model slechts alleen een wrapper die zijn functies naar een directe Mapper equivalent stuurt, wat natuurlijk volstrekt zinloos is.

Quote:
Ik dacht dat de regel was dat een mapper enkel Crud methodes kon bevatten ofzo?

Nee, we hebben (jij hebt) ooit een MapperInterface gemaakt die ervoor zorgt dat we tenminste toegang hebben tot de 4 crud methods. Maar je kan zoveel methods erin doen als je wilt, getById; getByName, ect.
 
Jasper DS

Jasper DS

24/01/2013 20:28:56
Quote Anchor link
oké mooi, dan denk dat ik in mijn geval de mapper of de model kan schrappen (kwestie van naamgeving). Ik kan de mapper dan alle functies geven die ik denk te gebruiken.
 
Jasper DS

Jasper DS

27/01/2013 11:33:07
Quote Anchor link
Ik heb momenteel toch een aparte model en mapper. De mapper bevat select(), update(), delete() en de model bevat getAll(), getById(), getByCat(). De functies uit de model spreken een functie aan uit de mapper. getAll() ziet er bijvoorbeeld zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
public function getAll()
{

    $articleMapper = new ArticleMapper($this->getStorage());
    $articles = $articleMapper->find(array('id', 'name', 'discription'));
    return $articles;
}

?>


In de controller word de model aangeroepen met de specifieke functies, nooit de mapper.

Lijkt jullie dat oke?
 
Wouter J

Wouter J

27/01/2013 13:14:11
Quote Anchor link
Het mag, het lijkt mij alleen een extra laag vol met onnodige moeilijkheid. Een principe dat hier dan vaak genoemd wordt is KISS - Keep It Simple Stupid.

Tevens is regel 4 natuurlijk uit den boze, hiervoor moet je dependency injection gebruiken.
 



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.