Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi COM-Server als Singleton umsetzen (https://www.delphipraxis.net/126889-com-server-als-singleton-umsetzen.html)

crypti 8. Jan 2009 17:49

Re: COM-Server als Singleton umsetzen
 
Danke für die Antworten. Wenn man definitiv nur eine Instanz haben möchte, ist der Weg über einen zweiten COM Server sicher sehr gut. Jedoch wäre es dann theoretisch auch möglich das jemand über COM den zweiten server anspricht und damit doch wieder mehrere Instanzen davon öffnet.

Bezüglich des Problems mit dem Zugriff verweigert werde ich die Empfehlung von spaxxn annehmen und einen neuen Topic eröffnen.

spaxxn 9. Jan 2009 06:37

Re: COM-Server als Singleton umsetzen
 
Mit Gewalt ist theoretisch einiges möglich, aber es soll so eben nicht möglich den Server mehrmals zu starten, da der Server nur für die frühe Bindung zur Verfügung gestellt wird, da die exe auch nur einmal startet und der Server innerhalb dieses Prozesses nur einmal instanziert werden darf.

alzaimar 9. Jan 2009 06:46

Re: COM-Server als Singleton umsetzen
 
Also wenn ich mit Delphi-Bordmitteln einen COM-Server baue, dann wähle ich "Multithreaded" und als Threading-Modell "Free". Ich hab das mal durch Ausprobieren hinbekommen. Die EXE wird einmalig gestartet, nur für jede Verbindung wird ein eigenes COM-Objekt erzeugt (im Speicher).

Ich habe ein Hauptformular, das im OnCreate einmalig die 'globalen', also instanzübergreifenden Objekte in einem Datenmodul erzeugt, also irgendwelche Lookuplisten usw. Die einzelnen Instanzen meines COM-Objektes (die Implementierung des COM-Servers) greifen auf diese globale Instanz zu, wobei ich den Zugriff über CriticalSections kapsele, damit sich die Objekte nicht auf die Füße treten.

Vermutlich geht es auch anders, einfacher und besser, aber meine Lösung funktioniert und hat mich zum Ziel geführt.

spaxxn 9. Jan 2009 06:51

Re: COM-Server als Singleton umsetzen
 
Geht mit Sicherheit, aber durch den zweiten COM-Server hat man die Möglichkeit über das Property direkt auf DB-Server-Funktionen zuzugreifen.

Zum Ziel hat mich auch meine Lösung gebracht. Muss halt jeder für sich wissen, was er will.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:12 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz