Avatar billede kloppie Nybegynder
05. november 2001 - 13:12 Der er 10 kommentarer

DCOM forbindelse...

Hvordan kan jeg få lov til at oprette flere forbindelser til ét server-objekt? Den er MultiInstance og Apartment
Avatar billede unclebug Nybegynder
06. november 2001 - 19:31 #1
Det kan du bare gøre... Create flere instanser af objektet.
Avatar billede unclebug Nybegynder
06. november 2001 - 19:33 #2
Eller skal det være til SAMME instans? Det kan du ikke gøre med Create pr. default, men du kan sagtens bruge den samme interface pointer flere steder (men vær opmærksom på reference counting..)
Avatar billede kloppie Nybegynder
07. november 2001 - 10:34 #3
Jeg har et antal klienter, som skal melde sine tilstandsskift ind til serveren, som har en liste med klienterne og deres status. Jeg vil lave det med ét objekt på serveren som hver klient kender. De sender så deres computernavn med så jeg kan se hvem der kalder ind. En anden måde ville være at hver klient have et objekt på serveren tilknyttet som de kalder, men det synes jeg virker underligt. Hvad ville du gøre?
Avatar billede unclebug Nybegynder
07. november 2001 - 14:36 #4
Jeg ved godt hvordan jeg ville lave det... men har måske lidt svært ved at forklare det. Hvor stor en del har du lavet i serveren nu?

Men... Jeg ville lave et interface, ex. iState, med en method, ex. SetState(ClientName: BSTR; State: long). Alle klienter bruger iState, og kalder så noget kode der er globalt tilgængeligt i serveren. De creater det enten en gang for alle, eller hver gang de skifter state. Der vil altså være én instans af iState objektet i serveren, for hver klient.

Det globale kode kan du smide i en unit for sig selv, som du så har med i uses i implementeringen af iState (lav en klasse som creates når serveren startes).

Jeg håber det er til at forstå. Som sagt lidt svært at forklare...
Avatar billede kloppie Nybegynder
07. november 2001 - 15:44 #5
Ok, sådan havde jeg også tænkt det. Men min server skal også kunne kalde et COM-objekt på klienten. Nu har jeg lavet det sådan at jeg kalder Login(hostname: WideString) på serveren, som skaber et Connections-objekt, som jeg bruger til at skabe en forbindelse tilbage til serveren. Virker det ikke meget fornuftigt? Så har jeg en container til dem så jeg kan holde styr på dem...
Avatar billede kloppie Nybegynder
07. november 2001 - 15:47 #6
Øjeblik, der skabes én instans af iState til hver klient? Hvordan det?
Avatar billede unclebug Nybegynder
07. november 2001 - 15:51 #7
Jeg mener at alle klienter kalder CoState.CreateRemote (fra [ditProjekt].tlb filen). Så har du lige så mange instanser som klienter (ikke af serveren, men af State objektet)

Hvorfor skal serveren lave et COM objekt på klienten?
Avatar billede kloppie Nybegynder
07. november 2001 - 15:59 #8
Jeg skal kunne reboote, lock, unlocke min klient fra serveren af. Så jeg har lavet en iKlient på klienten med mine funktioner. Så når jeg har kaldt Login på serveren med hostname, kalder jeg i mit eget Connection-objekt, CoKlient.CreateRemote(hostname).
Avatar billede unclebug Nybegynder
07. november 2001 - 16:06 #9
Ok, det lyder jo meget fornuftigt. Er klienten så en COM-server, eller kører der både en alm. exe-fil og en server?

Men for at vende tilbage til dit oprindelige spørgsmål... Det ser jo ud til at det du har vil fungere. Alle klienterne kalder CoState.CreateRemote, som bliver created i en og samme server. Det er flere forbindelser til én server, som du ønskede. Der kører stadig kun 1 server, men med flere instanser af CoState i sig (og som alle kan kalde evt. globalt kode).

Avatar billede kloppie Nybegynder
07. november 2001 - 16:15 #10
ok, jeg har åbenbart været lidt forvirret omkring begreber. Takker. Er heldigvis på rette spor...
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