Jag har skapat en komponent i VB. Det enda den gör/ska göra är att öppna en databaskoppling (av diverse anl.)
Jag anropar den via min ASP-sida.
Problemet är att jag vill att min databaskoppling i komponenten skall vara "global"...alltså när jag anropar komponenten vill jag att den ska gälla för flera sidor.
Finns det nåt sätt att göra en koppling i en komponent global?
:stud
Jag hoppades att ingen skulle nämna något om att stoppa in connectionobjekt i sessions...
Det är inte att rekommendera. Har man lite trafik på webbplatsen blir det lätt några öppna connections då, eftersom sessionobjektet normalt har en timeout-tid på 20 minuter.
Såg ni snacka skit om sessions :) Bara en liten fråga om det. Låt säga jag har MAX 3 sessions öppna samtidigt. 3 admin konton. Spelar väl inte så mycket roll för prestandan då ?
Ursprungligen av ironhead*hrmmm* sessioner är nog inte att tänka på.
Kan man använda global.asa och application för att bolla kopplingen?
eller är jag helt ute å cyklar?
Problem är inte att objektet aldrig försvinner, utan att det försvinner efter så lång tid. Kopplingen försvinner (eller borde i.a.f. försvinna...) när sessionen avslutas. Om man skulle göra något med global.asa så skulle det inte inträffa förrän sessionen avslutas, så det blir det liksom ingen större skillnad.
Just connections och recordset ska inte vara öppna mer än nödvändigt.
Vitsen med komponenter är inte att göra "global" variabler som ligger över alla sidor utan att man kan bygga en helt annan typ av skalbarhet och flerskiktslösningar med alla dessa fördelar.
Men motfrågan blir: varför skapa en globalvariabel av conn objectet?
Det strider mot all programmering!
Det enda rätta är att öppna och stänga så snabbt som möjligt på alla sidor den ska användas på.
Att göra den global kan vara att inkludera en funktion som öppnar databasen och returnerar ett öppet connection object och en funktion för att stänga och förstöra objectet och sedan på varje sida anropa dessa funktioner, för att öppna och stänga connection mot db.
[r]
Eller att i komponenten fixa all logik som behövs och därinne öppna connectionet och returnera det datat man vill åt.
Det enda du då behöver skicka in i komponenten är själva connectionsträngen.
Detta kan se ut så här:
<%
Set MittObject = Server.CreateObject("Mina.Classer")
Mittobject.ConnectionString = Appliction("ConnectionString_Kunder")
Set objRS = MittObject.GetCustomer()
'#-- LOOPA RECORDSETET --
Set objRS = Nothing
Set MittObject = Nothing
[/r]
cya,
PatrikB
384 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849