Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Singelton?

Postades av 2007-05-29 08:25:43 - Jimmy Nilsson, i forum asp.net generellt, Tråden har 4 Kommentarer och lästs av 663 personer

Hej!

Hur fungerar igentligen ett singelton objekt i en webapplikation? Säg att vi har en klass enligt följande:

    public class BusinessLogicalLayer
    {
        private static BusinessLogicalLayer instance;

        public static BusinessLogicalLayer GetBusinessLogicalLayerInstance()
        {
            if (instance == null)
                instance = new BusinessLogicalLayer();

            return instance;
        }

    }


För att få en instans av klassen används GetBusinessLogicalLayerInstance. Frågan är nu om alla användare kommer jobba mot ett o samma objekt eller kommer det istället vara så att varje avändare får vars ett(1) objekt?

Mitt antagande är att alla kommer jobba mot samma objekt vilket kan skapa tråd problem(threadsafe) . Kanske man bör ta bort static från private static BusinessLogicalLayer instance;? då borde det väll bli ett objekt per användare?


Svara

Sv: Singelton?

Postades av 2007-05-29 09:48:10 - Thomas Vanhaniemi

Utan att svära på hur det fungerar då jag inte vet riktigt tror jag att det skapas ett nytt objekt per tråd som kör i IIS. Varje tråd tar hand om en, och enbart en, förfrågan åt gången. Därmed borde det inte vara problem med threadsafe, men om alla eventuella trådar i IIS måste komma åt data lagrad i objektet måste man nog spara det i en Application variabel.

Som sagt, ska inte svära på detta men det är vad jag tror. Någon annan som vet bättre?


Svara

Sv:Singelton?

Postades av 2007-05-29 10:49:50 - Ola Lindfeldt

Static blir en instans för hela ASP.NET-applikationen.
Dvs, alla användare skulle ha använt en och samma variabel.
Inte så bra i det här fallet.
I princip säger du EnableMultiThreading=False :)

Och det värsta av allt är att du märker antagligen prestandaförbättringar i utv.miljön,
men det kommer att sluta i katastrof vid 5-10 samtidiga användare.


Svara

Sv: Singelton?

Postades av 2007-05-29 11:48:18 - Jimmy Nilsson

Hehe tackar för det, för att se till så att varje avändare endast har ett objekt av en klass bör man kanske kunna göra på följande vis(e testat)?:

    public class BusinessLogicalLayer
    {
        private BusinessLogicalLayer instance;

        public static BusinessLogicalLayer GetBusinessLogicalLayerInstance()
        {
            if (instance == null)
                instance = new BusinessLogicalLayer();

            return instance;
        }

    }


Man tar helt enkelt bort static framför själva BusinessLogicalLayer objektet. Kan man ändå ha en statisk funktion som sätter en medlem som inte är statisk?


Svara

Sv:Singelton?

Postades av 2007-05-29 13:19:42 - Andreas Paulsson

Nix, det fungerar inte. En statisk metod kan inte accessa en ej statisk medlemsvariabel utan att först skapa en instans av objektet.

Kika annars på threadstatic, se http://msdn2.microsoft.com/en-us/library/system.threadstaticattribute(vs.80).aspx. Sätt det framför din instance-variabel så löser du i alla fall trådsäkerheten. Dock så kommer det att skapas en ny instans för varje tråd som körs och då är det ju inte längre en "riktig" singleton.

/Andreas


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
759
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies