Archief - [PROG] Data afscherming bij GUI componenten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

passero

Legacy Member
In grote projecten wordt er meestal met verschillende lagen gewerkt waarbij het de bedoeling is om zoveel mogelijk af te schermen en de data te centraliserne in klassen...

Nu, mijn probleem is dat die lagen door elkaar geraken als je met GUI componenten werkt.
Stel ik heb een datagrid die bepaalde rows laat tonen uit een tabel. Die tabel komt uit mijn datalaag.
Nu is het mogelijk om aan de datagrid de rij op te vragen en zelf zaken mee te doen zonder dat je hier een controller voor moet aanspreken dus verlies je de scheiding van uw lagen...
Dit is dus niet echt goed, toch zeker als zo zaken belangrijk zijn voor het project.
Hoe los je dat dan op? Moet ik dan van elke component die ik zou gebruiken, een eigen versie van schrijven die erft van de default in de programmeertaal maar waar ik bepaalde methodes private zet en andere methodes aanpas zodat ze de controller gebruiken of wat is hier een deftige oplossing?

UniKorn

Legacy Member
Eerst en vooral moet je de scheiding van lagen met een korreltje zout nemen. De ideale wereld (conceptueel gezien) is een scheiding van de data, business en user interface. Op performantieniveau gezien is dit echter niet de ideale wereld (text mag maar 50 characters lang zijn, als dat puur in business layer zit dan wil dat zeggen dat om dat na te kijken er een call naar de server moet gaan, en een terug moet komen om te zeggen dat de tekst te lang is)

Wat er meestal gebeurt is hetvolgende:

presentation layer
business ui layer
=========
businesslayer
=========
datalayer

waar een gedeelte van de business gekopieerd wordt naar de business ui layer (bijvoorbeeld de 50 characters business zit in de control zelf). De businesslayer in het midden gaat er echter van uit dat alle data die het binnenkrijgt niet beantwoord aan de business regels (dus de 50 character check gebeurt ook in de business layer zelf). Dit om ervoor te zorgen dat als er ooit een andere interface op de business aangesloten wordt de objecten nog altijd beantwoorden aan de business rules.

Om datagrids enzovoort te vullen gebruiken wij readonly objecten. Deze objecten kunnen alleen maar gelezen worden en niet gewijzigd.

H@voc_!nc.

Legacy Member
Ge hebt verschillende architecturale (grellig woord :p) oplossingen...
deze boek is ne zeer goede en must read: Expert VB and C# 2005 Business Objects

presentation
UI
Business
Data Layer
Data Storage

Maar het ligt er allemaal een beetje aan ge hebt verschillende methoden en oplossingen met elk hun voor en nadelen.
Is niet iets dat he even kan uitleggen :)

Dus diene boek lezen is de boodschap :p

passero

Legacy Member
mmm met andere woorden, gewoon voort doen gelijk ik bezig ben :)

Het is dus niet zo'n ramp als je een rij kan lezen vanuit een grid, maar het wijzigen moet dan wel via de controller gebeuren? Heb ik het goed zo :)

UniKorn

Legacy Member
Lees C# 2005 Business Objects zoals Havoc zegt en alles wordt een pak duidelijker :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan