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..)
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?
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...
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...
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?
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).
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).
ok, jeg har åbenbart været lidt forvirret omkring begreber. Takker. Er heldigvis på rette spor...
Synes godt om
Ny brugerNybegynder
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.