Avatar billede Slettet bruger
25. april 2006 - 11:07 Der er 9 kommentarer og
1 løsning

sendes objecter mellem lag altid som arrylistt, ds eller lignende

Hej

Med henvisning til http://www.eksperten.dk/spm/697819, vil jeg gerne vide:

Når man sende data fra sit DAL til sit BLL, sendes det så altid som en collection, ds eller lignende.

Lidt uddybende forklaring:

Jeg har lavet en class i mit DAL som hedder RSDAfdeling

Hvis jeg skal bruge alle afdelinger i mit BLL, sendes de fra DAL til BLL som en arraylist. Hvis jeg kun skal sende én afdeling, kunne jeg i princippet nøjes med at sende et object defineret som RSDAfdeling, men så får jeg blandet mit DAL ind i mit PL og det skulle jeg jo gerne holde adskildt ik?

Hvad er løsningen? At sende en enkelte afdeling som arraylist?
Avatar billede arne_v Ekspert
25. april 2006 - 12:57 #1
et enkelt simpelt objekt, en collection af simple objekter og primitive data typer
er vel mulighederne - i OOP er primitive data typer ikke så pænt (men collection
versus data set er Folkevogn versus Toyota)

du kan sagtens sende et enkelt objekt mellem dine lag

og dine lag er ikke mere blandet ved at sende en X mellem lagene end med
at sende en collection af X

definer X i dit DAL som værende en ren data klasse (kun fields, properties,
constructor, tostring og den slags - ingen database kode)
Avatar billede Slettet bruger
25. april 2006 - 13:20 #2
Dvs. at der ikke er noget galt i at definere en instans af en Dal.Class i sit codebehind?
Avatar billede arne_v Ekspert
25. april 2006 - 14:14 #3
Ikke hvis det er en klasse som er specielt lavet til at udgøre
interface mellem BLL og DAL (og dermed uafhængig af implementtaionen
i DAL)
Avatar billede Slettet bruger
25. april 2006 - 14:28 #4
..som f.eks.?

Namespace BLL
    Public Class VSBookManager
        Dim objDAL As IVSBookDB = New VSBookDB()       
Public Function GetVsDok() As VSDok
            'Laver Chace af VSDok
            Dim VSDokSource As VSDok = CType(HttpContext.Current.Cache("VSDokChache"), VSDok)
            If VSDokSource Is Nothing Then
                VSDokSource = objDAL.GetVSDok()
                HttpContext.Current.Cache("VSDokChache") = VSDokSource
            End If
            Return VSDokSource
        End Function

    End Class

End Namespace
Avatar billede Slettet bruger
25. april 2006 - 14:29 #5
I min codebehind har jeg:

Sub Page_Load()
        If Not IsPostBack Then
            Dim objBLL As New VSBookManager
            Dim VSDokCache As New DAL.VSDok
            VSDokCache = objBLL.GetVsDok

            Id_lbl.Text = VSDokCache.Id.ToString
            DokNr_lbl.Text = VSDokCache.Kapitel + "." + VSDokCache.Sektion + "." + VSDokCache.Instruksbilag
        End If

    End Sub
Avatar billede arne_v Ekspert
25. april 2006 - 15:12 #6
jeg har ingen indvendinger mod brug af data objekter

jeg kan ikke lide brugen af HttpContext.Current i BLL
Avatar billede Slettet bruger
25. april 2006 - 15:14 #7
Hvordan ville det så være smart at lave det?
Avatar billede Slettet bruger
25. april 2006 - 16:59 #8
Puha - jeg kommer til at oprette et nyt spm. Jeg syntes stadig ikke jeg forstår det. Sender du et svar på dette, så laver jeg et nye mere uddybende spørgsmål
Avatar billede arne_v Ekspert
25. april 2006 - 17:47 #9
Enten kan du flytte caching fra BLL til PL (i PL er det jo OK at bruge
HttpContext.Current) eller saa skal du lave en PL uafhaengig cache
i dit BLL
Avatar billede arne_v Ekspert
25. april 2006 - 17:52 #10
og et svar
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
Kurser inden for grundlæggende programmering

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