Avatar billede speedpete Nybegynder
25. juni 2007 - 11:30 Der er 8 kommentarer og
1 løsning

Synkronisering i BLL, DAL

Er der nogen hensyn mht. synkroniseret kode i nedenstående, som jeg har overset?

Eksemplet kalder Membership-metoder i DataAccessLayer (DAL), men der er også andre metoder i DAL end de her gengivede, f.eks. db-operationer.

Jeg tænker mig at BusinessLogicLayer (BLL) ikke skal have nogen static metoder, således at hver bruger er nødt til at lave et objekt for at bruge metoderne. Samme med DAL.

Hvis der i givet fald skal synkronisereres, er det så i BLL eller DAL?

public class Brugere_BLL
{
    public Brugere_BLL(){}

    Brugere_DAL dal = new Brugere_DAL();

    public void AddRegnskabsbruger(String BrugerNavn, String Kode, String Email, String Comment, String Rolle)
    {
        try
        {
            dal.AddRegnskabsbruger(BrugerNavn, Kode, Email, Comment, Rolle);
        }
        catch (Exception e)
        {
            throw e;
        }
    }
}

public class Brugere_DAL
{
    public Brugere_DAL(){}

    public void AddRegnskabsbruger(String BrugerNavn, String Kode, String Email, String Comment, String Rolle)
    {
        try
        {
            MembershipUser newUser = Membership.CreateUser(BrugerNavn, Kode, Email);
            newUser.Comment = Comment;
            Membership.UpdateUser(newUser);
            Roles.AddUserToRole(newUser.UserName, Rolle);
        }
        catch (Exception e)
        {
            throw e;
        }
    }
}
Avatar billede arne_v Ekspert
26. juni 2007 - 03:17 #1
Umiddelbart bør du synkronisere så langt nede som muligt (ned: BLL->DAL->database).

Det er ikke helt klar for mig udfra din kode hvad der skal synkroniseres.
Avatar billede speedpete Nybegynder
26. juni 2007 - 08:20 #2
I første omgang... er det nødvendigt at synkronisere nogle steder på:

  MembershipUser newUser = Membership.CreateUser(BrugerNavn, Kode, Email);
  newUser.Comment = Comment;
  Membership.UpdateUser(newUser);
  Roles.AddUserToRole(newUser.UserName, Rolle);
Avatar billede arne_v Ekspert
26. juni 2007 - 20:32 #3
Hvis MemberShip ikke selv synkroniserer saa kan du vel gøre det i
Brugere_DAL.AddRegnskabsbruger !
Avatar billede speedpete Nybegynder
27. juni 2007 - 08:26 #4
akkurat... det var også derfor, jeg ville høre, om der er nogen der ved, om Membership synkroniserer eller ej?
Avatar billede arne_v Ekspert
01. juli 2007 - 02:35 #5
http://msdn2.microsoft.com/en-us/library/system.web.security.membership.aspx

siger:

Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Avatar billede speedpete Nybegynder
05. juli 2007 - 10:32 #6
http://msdn2.microsoft.com/en-us/library/system.web.security.membership_members.aspx

Dvs, hvis jeg forstår det ret, at hvis man siger Membership.UpdateUser(newUser), så kalder man den statiske metode UpdateUser(), og så er der ingen bekymringer? Men hvis man siger Membership m = new Membership() og kalder en ikke-statisk metode på m, så er der grund til bekymring? Hvis Membership i det hele taget kan instantieres? Og hvis den kan, hvornår ville man så have brug for at gøre det?
Avatar billede arne_v Ekspert
07. juli 2007 - 04:06 #7
Det er det dokumentationen siger.

Det er en static class så den har ingen instance metoder.
Avatar billede arne_v Ekspert
07. juli 2007 - 04:06 #8
Og et svar.
Avatar billede speedpete Nybegynder
07. juli 2007 - 08:14 #9
Den har jo f.eks. ToString fra Object?
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