BtM909 schreef op donderdag 09 juli 2015 @ 23:36:
[...]
Misschien echt een domme vraag, maar waar bouw jij in hemelsnaam aan? Je bent constant hier aan 't ranten / vragen / praten / "opmerken" over heel veel verschillende onderdelen.
Je bent toch niet een OS aan 't schrijven ofzo?

Ik werk door aan een bestaand systeem, gewoon een webapplicatie hoor

Het is .NET MVC, maar het idee is dat controllers geen DB-bewerkingen doen en alles via een service-laag gaat. Dus de controllers doen weinig anders dan rechten controleren en opdrachten doorzetten. Een action is weinig anders dan:
C#:
1
2
3
| public ActionResult SomeAction() {
this.Services.SomeService.SomeAction(someParameters);
} |
Met dus wat extra eromheen.
Die services verwerken alles, zetten DB-entities om naar service-entities en terug (doel is om de DB-lib niet als reference te hebben in de web-projecten (beheer en niet-beheer)) en doen CRUD.
Soms hebben sommige services elkaar nodig, anders is het allemaal niet heel DRY. Nu gebruikten alle services een eigen DBContext (bij elk request, de services zijn géén singleton) en ging dat dus mis als je DB-entities ging doorspelen.
Toen had ik van de DBContext een singleton gemaakt voor alle services (nog steeds, elk request wordt er een nieuwe gemaakt natuurlijk), maar toen ging daar dus ergens iets mis, en toen bedacht ik dat het niet nodig was een singleton te gebruiken aangezien services helemaal geen DB-entities naar buiten mogen doorsturen (dan zijn die functies ook voor de controllers zichtbaar en dat wil je niet). Toen heb ik een heel erg klein stukje niet-DRY geschreven om een boel ellende te voorkomen. Dus geen singletons meer, en een paar regels dubbele code.
Een nog beter idee: ik ga hier nooit meer zeuren over *iets* omdat het enkel tijd kost aan uitleg
En die service-opzet heb ik niet bedacht maar die stond er al (half) toen ik er aan ging werken