De meesten onder jullie weten wel dat je - zeker in een serieuze applicatie- de business logica, de data (access) logica en de presentatielaag van elkaar gescheiden moet houden.
Nu vroeg ik me eigenlijk af hoe je best de communicatie tussen de data access logica en de business logica verwezenlijkt. Ik heb al op het 'Architecture center' van Microsoft dit artikel gelezen, maar echt veel materie over de communicatie tussen de verschillende tiers ben ik niet tegengekomen.
Nu, wat is volgens jullie de beste manier om die communicatie te laten verlopen?
Stel, je hebt volgende data-access en business-logic class:
Hoe laat je die classes nu het best met elkaar samenwerken/communiceren?
Situatie 1:
Je doet de communicatie in de presentatie-laag:
of
Situatie 2:
Integreer je de data-access componenten beter in de business logic component:
In dat artikel van MS wordt de 2de manier niet vermeld, ergens in de appendices zie je wel de 1ste manier vermeld staan. Ik denk zelf dat de 1ste manier ook de betere is; de BL en DAL zijn volledig van elkaar gescheiden, maar zorgt imho niet voor zo'n 'abstracte' code als situatie 2 in de presentatielaag.
Dus, welke situatie vinden jullie beter, en waarom, of, hebben jullie nog een andere manier die volgens jullie beter is?
Dit gaat dus niet over het 'echte' ontwerp van bovenstaande classes, maar eerder over de communicatie ertussen
Nu vroeg ik me eigenlijk af hoe je best de communicatie tussen de data access logica en de business logica verwezenlijkt. Ik heb al op het 'Architecture center' van Microsoft dit artikel gelezen, maar echt veel materie over de communicatie tussen de verschillende tiers ben ik niet tegengekomen.
Nu, wat is volgens jullie de beste manier om die communicatie te laten verlopen?
Stel, je hebt volgende data-access en business-logic class:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| // Data access class class PersonDAL { private string _connectionString; public string ConnectionString { set { _connectionString = value; } } public void Save(Person) { } public Person Load(int pk) { } public bool Delete(Person) { } } // Business Logic class public class Person { private int _id; private string _naam; private DateTime _geboortedatum; // Hier komen nog properties en BL-methods. } |
Hoe laat je die classes nu het best met elkaar samenwerken/communiceren?
Situatie 1:
Je doet de communicatie in de presentatie-laag:
code:
1
2
3
4
5
6
| PersonDAL daPerson = new PersonDAL(); daPerson.ConnectionString = getConnectionString(); Person p1 = daPerson.Load(1); // doe wat wijzingen aan p1 daPerson.Save(p1); |
of
Situatie 2:
Integreer je de data-access componenten beter in de business logic component:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| class Person { private int _id; private string _naam; private DateTime _geboorteDatum; public Person(int personId) { PersonDAL daPerson = new PersonDAL(); daPerson.ConnectionString = getConnStr(); daPerson.Load(personId); } } |
In dat artikel van MS wordt de 2de manier niet vermeld, ergens in de appendices zie je wel de 1ste manier vermeld staan. Ik denk zelf dat de 1ste manier ook de betere is; de BL en DAL zijn volledig van elkaar gescheiden, maar zorgt imho niet voor zo'n 'abstracte' code als situatie 2 in de presentatielaag.
Dus, welke situatie vinden jullie beter, en waarom, of, hebben jullie nog een andere manier die volgens jullie beter is?
Dit gaat dus niet over het 'echte' ontwerp van bovenstaande classes, maar eerder over de communicatie ertussen
[ Voor 3% gewijzigd door whoami op 18-12-2002 10:10 ]
https://fgheysels.github.io/