Avatar billede websam Nybegynder
05. juli 2006 - 11:26 Der er 21 kommentarer og
1 løsning

Data Access Layer (DAL)

Hejsa,

Jeg har siddet og læst følgende artikel/tutorial på asp.net's hjemmeside :

http://www.asp.net/learn/dataaccess/tutorial01vb.aspx?tabid=63

Her beskrives en måde at lave et data access layer (DAL) ved hjælp af typed dataset igennem vs.net.

Jeg kan sagtens se fordelen, rent udviklings mæssigt, ved at gøre det på denne måde det er hurtigt og nemt at gå til, men er det nogen fordel at benytte sig af denne fremgangs måde frem for selv at lave en klasse med diverse metoder til at trække data fra databasen ved hjælp af datareaders istedet for dataset ?

Hvad er din holdning til dette ?

/Websam
Avatar billede arne_v Ekspert
05. juli 2006 - 15:34 #1
Er Toyota eller VW bedst ?

:-)
Avatar billede arne_v Ekspert
05. juli 2006 - 15:42 #2
Man skal skrive mindre kode for at bruge typed data set end at lave sin egen objekt model
(bruge generelle collections gerne typesafe af egne klasser).

Til gengaeld synes jeg at det typed data set er lidt for knyttet til databasen.

Jeg har aldrig brugt et typed data set. Men hvis jeg skulle bruge det
ville jeg kun bruge det PL-DAL og BLL-DAL men aldrig PL-BLL. Og jeg ville
kun bruge det til lille-mellem projekter ikke til store-meget store projekter.

Men det er kun min personlige smag/fornemmelse.

Der er ikke nogen endegyldig sandhed for den slags spoergsmaal.

Og jeg kan kun opfordre dig til at proeve lidt forskelligt og finde ud af
hvad din menining er.
Avatar billede arne_v Ekspert
05. juli 2006 - 15:42 #3
(og du vidste vel at jeg havde den mening udfra tidligere traade)
Avatar billede websam Nybegynder
05. juli 2006 - 16:07 #4
Ja det anede mig jo at du nok ville komme med et bud på det. men hvorfor ville du kun bruge det til mindre ting ?

Og hvad mener du med at du ikke ville bruge det imellem PL og BLL ?

PL trækker i BLL som igen bruges til at tilgå DAL som i artiklen/toturial vist ovenfor er et typed dataset.

Hvad mener andre der til dagligt arbejder med .Net platformen Hvad benytter i og hvorfor ?

/Websam
Avatar billede arne_v Ekspert
05. juli 2006 - 16:10 #5
Til stoerre ting tror jeg paa den rigtige domain object model.

Fordi typed data set har en svag duft af DAL over sig vil jeg ikke bruge
det steder hvor DAL ikke er involveret (og derfor ikke Pl-BLL).
Avatar billede websam Nybegynder
05. juli 2006 - 16:12 #6
Og så er stort set alle de projekter jeg laver opbygget af forskellige selvstændige moduler således at jeg kan tilpasse behovet til de forskellige projekter hvilket gør at modulerne for sig selv ikke er specielt store.

/Websam
Avatar billede websam Nybegynder
05. juli 2006 - 16:24 #7
Det vil så sige at det BLL de laver i artiklen efterfølgende ikke duer "i din verden" da den bruges til at kontakte det typed dataset ?

Eller skal jeg snarre forstå det sådan at typed dataset ikke er din kop te i forhold til almindelige dataset genereret i en DAL klasse for sig ?

/Websam
Avatar billede arne_v Ekspert
05. juli 2006 - 16:34 #8
"ikke duer" er alt for staerkt et udtryk

"mindre paent" er mere beskrivende for min holdning

jeg synes at BLL kode der returnerer typed data set er lidt for bundet
til DAL

det virker, det er bedre end mange loesninger, men jeg synes ikke at det
er den aller paeneste loesning
Avatar billede arne_v Ekspert
05. juli 2006 - 16:41 #9
og typed data set er bedre end normnal data set til alt undtagen demo apps

efter min mening
Avatar billede arne_v Ekspert
05. juli 2006 - 16:43 #10
Avatar billede websam Nybegynder
05. juli 2006 - 16:52 #11
Ok, det var også mere for at høre nogle holdninger til det, men der er ikke meget der tyder på at der mange der benytter sig af denne fremgangs måde *GGG*

Det er jo for det meste dig der byder ind på disse spørgsmål ;o)

Som sagt i tidligere tråde om dette emne så har jeg benyttet mig af metoden med en Database-hjælpe klasse, DAL klasse, BLL klasse, Info/entity klasse og PL som virker ganske fint. Men der er jo ikke noget i vejen for at udvide horisonten ;o)

Det kan også i perioder virke voldsomt med alle disse klasser når modulerne ikke er ret store, men jeg får da i det mindste en rød tråd i det hele som er nem at gå til hvis jeg skal ændre/tilføje ting til modulerne.

/Websam
Avatar billede websam Nybegynder
05. juli 2006 - 17:15 #12
Og med den tråd du henviser til + en række andre jeg har læst er det jo netop et spørgsmål om smag, samt en indsigt hvad der arbejder bedst i de forskellige senarier man nu måtte blive stillet for.

Det eneste jeg stadigt ikke helt ser nogen fordel i er den famøse factory klasse i mine DAL og BLL klasser. Den sørger for, som du tidligere har skrevet, at adskille mine lag helt :

Public Class f_Factory
    Public Shared Function LoadClass(ByVal Type As String) As i_Interface
        Select Case Type
            Case "hent_class"
                Return New c_Friend
            Case Else
                Return Nothing
        End Select
    End Function
End Class

Public Interface i_Interface
    '--- en række metoder
End Interface

Friend Class c_Friend
    '--- en række metoder
End Class

Kan du komme med en fornuftig redegørelse for hvorfor jeg skulle bruge den factory klasse fremfor bare at kalde mit interface ?

/Websam
Avatar billede arne_v Ekspert
05. juli 2006 - 19:16 #13
det er vigtigt for vedligehold at koden er nem at overskue og gennemskue men
den egenskab er langtfra kun afhaengig af antal linier kode - flere linier
velstruktureret kode kan nemt vaere nemme at forstaa end faerre linier kryptisk
kode

og kode lever ofte laengere end oprindeligt planlagt - selvom genbrug i anden
kontekst maaske ikke er planlagt naar koden skrives, saa sker det tit at
behovet for det opsaar hen af vejen
Avatar billede arne_v Ekspert
05. juli 2006 - 19:19 #14
factory tricket goer at du kan udskifte klassen c_Friend med klassen c_Friend2
uden at laget ovenpaa skal aendres eller recompiles

i_Interface o = f_Factory.LoadClass("hent_class")

kender ikke c_Friend

hvis du bruger

i_Interface o = New c_Friend

saa skal linien rettes naar du skifter fra c_Friend til c_Friend2
Avatar billede arne_v Ekspert
05. juli 2006 - 19:24 #15
maaske vil

i_Interface o = f_Factory.LoadClass(ConfigurationSettings.AppSettings("hent_class"))

bedre understrege fleksibiliteten
Avatar billede arne_v Ekspert
05. juli 2006 - 19:29 #16
hvis du har oceaner af tid og lyst til at fordybe dig i den slags teknik, saa
proev og kig paa et IOC / DI framework som f.eks. SpringFramework.NET

for teaser se http://www.springframework.net/doc/reference/html/quickstarts.html

(jeg kan faktisk ikke lide Spring, men det goer det jo ikke uinteressant at
kigge lidt paa det)
Avatar billede websam Nybegynder
05. juli 2006 - 21:23 #17
Se nu tror jeg 5 øren faldt med den factory klasse, det tog sq oxo sin tid, det gør jo klart livet lettere ikke at skulle ændre noget i andre klasser bare fordi man ændre én klasse.

Oceaner af tid har jeg ikke, men pga. en operation her på fredag får jeg 14 dage hvor jeg ikke må lave en døjt, så det er jo en oplagt mulighed til at få kigget lidt på de forskelligr ting ;o)

/Websam
Avatar billede arne_v Ekspert
06. juli 2006 - 01:53 #18
factory og abstract factory er kendte patterns fra GoF bogen, som du måske også skulle
studere ved lejlighed
Avatar billede arne_v Ekspert
06. juli 2006 - 01:53 #19
og et svar
Avatar billede websam Nybegynder
06. juli 2006 - 08:15 #20
Og hvor får jeg fat i den bog henne ?

/Websam
Avatar billede arne_v Ekspert
06. juli 2006 - 13:48 #21
Køber den i en velassorteret bog butik som f.eks. Amazon eller besøger dit
lokale folkebibliotek.

Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Avatar billede websam Nybegynder
07. juli 2006 - 19:28 #22
Cool det vil jeg kigge på ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester