Three Layer Architecture

Tags:    c# programering

Hej!

Jeg arbejder iøjeblikket på en motor der der forbinder til EWS (Exchange Web Service) og henter alle mails der er landet i en mailbox. ud fra dette skal jeg så have behandlet disse mails iforhold til nogle specifikationer og regler jeg har fået stillet.

Mit projekt bliver lavet med baggrund på "three layer architecture", grundet denne opbygning er jeg gået lidt i stå da jeg i mit DATA lag ikke kan blive enig med mig selv i hvorledes jeg overføre disse persistense data til mit logik lag.

Hvis mit data lag havde været et alm. sql kald havde jeg på dette punkt smidt det i en datatable og retuneret objektet. men med EWS og den's libary så får jeg allerede på DATA niv. retuneret en liste med objekter.

Hvis jeg retunere mine objekter jeg får fra EWS så biholder den jo forbindelsen til exchange når den videregiver dem, men hvis jeg oversætter dem til egne objekter/datatable så er der også en stor chance for at der måske er info der mangler?

Hvad er den rigtige fremgangsmåde her?



1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Hvad er den rigtige fremgangsmåde her?


Den diskussion bliver næsten aldrig færdig, fordi der findes næsten lige så mange "rigtige" måder, som der findes design guides.

Det jeg vil råde dig til er at lave et repository (klasse), der sørger for at hente dine emails ud. Et repository er en klasse der sørger for håndtere data. Det kunne være gemme data, hente data opdatere og så fremdeles. Den findes typisk nederste lag i modellen (data laget).

Herfra kan der være flere måder at gøre det på. Nogen kan ikke lide at arbejde direkte videre på data objekter i deres model lag, fordi man ser dem som seperate ting. Modellen kan f.eks. lave nogle beregninger, og ofte så ses data objekter som objekter, der kun bruges til opbevaring af data. Så her vil nogen mappe deres data objekt over i en model objekt, og så arbejde videre herfra.

Når jeg ser det i forhold til din beskrivelse så vil jeg i mit EmailRepository lave en metode der hed GetAll()som så returnerede en liste af Email objekter.

Din bekymring angående at der mangler informationer er fint grundet, men jeg synes ikke du skal hænge dig alt for meget i den. Selvom du gør et stort arbejde at finde ud af hvad du skal bruge, så mangler du nok noget alligevel. Derfor er det bare vigtigt at du overvejer hvordan du leverer dine emails videre i programmet, for så er det ikke meget bøvlet at tilføje nye data-felter.



t