Avatar billede carstensuurland Nybegynder
11. maj 2005 - 13:50 Der er 1 løsning

Hardcore: Komponenter under MTS

Hej Eksperter

Jeg har et lille spørgsmål omkring anvendelse af COM (lavet i VB) under MTS (Microsoft Transaction Server).

Jeg har ladet mig fortælle (og jeg er meget skæptisk...) at jeg ikke kan være sikker på, at jeg altid snakker sammen med den samme komponentinstans fra kald til kald.

F.eks.

Dim myObj As Object
Set myObj = CreateObject("My.Object") 'eller CreateInstance...

myObj.PropertyOne = "abc"
myObj.PropertyTwo = "def"

...

Ifølge det jeg har fået at vide, kan jeg ikke være sikker på, at kaldet til PropertyOne hhv. PropertyTwo foregår på samme objektinstans grundet MTS's objectpool og JIT.

Er der nogen der kan give mig et 100% klart svar:
Når jeg opretter en instans af et objekt (og for den sags skyld opretter andre objekter i mine objekter) kan jeg så være sikker på, at de referencer jeg har til dem ALTID er til de samme objektinstanser og ikke bare en tilfældig som MTS har liggende på hylden? - Holder MTS'en objektets state?

/Tak :-)
Avatar billede hvideg Nybegynder
27. juni 2005 - 01:44 #1
Det eneste du behøver at tænke på, som VB programmør er at dine komponent instanser er komplet unikke forekomster, som er dine og ingen andres. Når det drejer sig om COM og ikke COM+.

MTS holder proces state for dine metodekald, kort fortalt, naturligvis også objekt state, men det er ofte i metoderne at transaktionens naturen i mts udnyttes, så at gem eller opdater er alt eller intet.

Ganske almindelig COM som du kender det at arbejde med ellers. Den taber ikke noget.

Det du har hørt hører måske sammen med COM+ objekt pøle. Her er det asynkrone processer, hvor modtageren af opgave, eller metodekald at udføre ikke nødvendigvis er de samme fra kald til kald, men her er vi en en ganske anden arkitektur end
VB6 COM objekter registrerede i MTS. De er synkrone.

At almindelige COM objekter er i samme proces som programmet betyder at hvis du bruger det i VB6 front end. Så er alle handlinger på et objekt på samme objekt fra du instantierer det til du sætter det til ingenting, det samme objekt.

MTS sikrer i den forbindelse blot at du gør hvad du må på databasen, igennem din instans, samt at dine transaktioner ikke bringer databasen til en ustabil tilstand, samt sikrer evt at der ikke laves mere end et defineret antal instanser af et objekt som myWorkerObject og lignende.
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