26. januar 2007 - 15:44Der er
18 kommentarer og 1 løsning
Seperate lag
Hej,
Jeg vil gerne prøve at få bedre fat i lagdeling. Tre lag: Presentation, Business og Data.
Ideen er vel at afhængigheden er lineær? Altså at hvert lag kun kalder ned i modellen.
Presentation kalder Business (modellen) og modellen kalder datalaget.
Jeg har for forsøgets skyld prøvet at opdele dette med 3 seperate projekter i Visual Studio. 1 Windows applikation (Presentation) + 2 ClassLibries (Business + Data).
Det går meget godt indtil jeg løber i problemer omkring datalaget.
Business projektet har en reference til datalaget, så denne kan anvende de mappers der er tilgængelig i datalaget.
Men for at mine DataMappers kan returnere objekter til mit Business lag [eksempel GetUser(int userId)], skal datalaget jo også kende min Business assembly..
Men det giver hvad Visual Studio kalder circular dependency.
Er løsningen at jeg fra mit datalager lader være med at returnere Business entiteter og istedet lader DAL smide IDataReaders retur til Business laget, for derefter at lade den selv have ansvaret for at oversætte disse "bulk" data til business entiter?
Jeg håber meget at der er et par stykker som vil give sit besyv med for at kaste en smule lys over min forvirring :)
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
1) Dermed ligger al min forretningslogik i DAL? 2) Er jeg ikke sikker på jeg forstår. Hvis du mener jeg returnerer en faktisk instans af User (som er i sep. assembly) fra DAL, så får jeg vel en afhængighed hvor DAL kalder "opad"?
Den User klasse jeg snakker om indeholder kun data ingen logik.
Private fields, en constructor uden args, en constructor med alle args, public properties for alle fields og maaske en ToString, Equals og GetHashCode.
Skal BLL have en User klasse med noget business logic i saa laver den sin egen klasse evt. med en constructor som kan tage en data User klasse som argument.
Så bliver det sådan i første omgang. Det er jo rart nok lige at få bekræftet at det ikke er helt helt ude i skoven, selvom der naturligvis altid er forskellige holdninger til den slags.
Jeg siger mange tak for dine forskellige vinkler på mine spørgsmål.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.