[Delphi] DCOM server met een fuction?

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Is het mogelijk om net als in een 'gewoon' COM object, functies in een DCOM server te stoppen die door de client zijn te gebruiken?

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Waarom niet? het mooie van (d)com is dat je client app niet eens door heeft of ie tegen een inprocess geladen com object aan lult of tegen 'n remote dcom server.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
De DCOM server levert nu alleen een paar DataSetProviders om de Database te query'en en te bewerken.

Maar wat ik dus ook wil is dat er gewoon een functie is die IETS doet, hoeft niet eens wat te maken te hebben met de database waar de DCOM server ook aan vast zit, zolang het maar 1 en dezelfde DCOM server is.

Maar ik kan niet zomaar een functie stoppen in de (hoofd) RemoteDataModule van de server, of wel?

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Is het niet mogelijk een nieuwe(extra) interface te definieren binnen je dcom server met delphi?

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Valt hij dan wel binnen de huidige DCOM server, of wordt het een registratie op zich?

Op de client wordt het dan zoiets als:
code:
1
2
3
4
5
6
7
8
9
procedure TMainForm.Button1Click(Sender: TObject);
const
  ServerGUID: TGUID = '{6FC03090-F77A-465A-8203-019E4DF9E4DD}';
var
  V: Variant;
begin
  V := CreateRemoteComObject('LOCALHOST', ServerGUID);
  ShowMessage(V.Test);
end;

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Op donderdag 28 februari 2002 12:59 schreef jelmervos het volgende:
Valt hij dan wel binnen de huidige DCOM server, of wordt het een registratie op zich?
Een enkele dcom server kan meerdere objecten met elk weer meedere interfaces servicen maar wederom ik weet niet hoe dit in delphi geimplementeerd is, teven zie ik dat je gebruikt maakt van 'n variant waardoor ie latebinding gaat gebruiken als je veel calls naar de dcom server gaat doen kan het schelen om 'm early te binden.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Zo ziet mijn server eruit:
Afbeeldingslocatie: http://www.endoria.net/upload/?bekijk=1014899538

De GeneralModule is de hoofd RDM zeg maar, de rest zijn Childs (tevens RDM's).

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Op donderdag 28 februari 2002 11:51 schreef jelmervos het volgende:
Is het mogelijk om net als in een 'gewoon' COM object, functies in een DCOM server te stoppen die door de client zijn te gebruiken?
[quote]
Ja dit kan. DCOM is gewoon COM maar dan distributed. Je kunt in je TypeLibrary editor gewoon een functie aan een interface toe voegen en deze implementeren.

In je client doe je dan bijv:
code:
1
ShowMessage(DCOMConnection.AppServer.MijnEigenFunctie);

Oh ja, let wel op bij TDCOMConnection: alleen de ServerGuid, ComputerName en niet de ServerName [/b] invullen anders werkt het niet remote!

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Cool man, dat werkt perfect.


Maar nu moet een Child RDM ook die functie kunnen gebruiken. Dus een Child moet zo'n functie kunnen gebruiken van de (hoofd) GeneralModule. Is dit mogelijk?

Moet ik dan misschien een class function maken binnen die GeneralModule die zichzelf weer aanmaakt en als result terug geeft?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Laat maar, die Child RDM hadden al een Functie waar de Main RDM uit kwam. :) Iig bedankt!

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1