Hallo,
folgendes würde ich gerne mit
DCOM realisieren, bin jedoch mit meinen ersten Versuchen gescheitert:
- es soll eine Serveranwendung geben die (neben anderen Dingen) es über
DCOM Clientanwendungen ermöglicht beispielsweise mit einer Methode GetUniqueNumber(..) eine eindeutige Nummer aus einem Nummernkreis zurückliefert und diese gleichzeitig in die Datenbank schreibt - das ganze würde ich in einer critical section machen um wirklich sicherzustellen, dass Nummern nicht doppelt vergeben werden können.
Soweit so gut, ich hab in meiner Serveranwendung über Datei -> Neu ein Automatisierungsobjekt hinzugefügt, danach die gewünschten Methoden definiert, diese implementiert und danach die exe mit /regserver registriert. Clients können sich auch mit CreateRemoteComObject verbinden und bekommen durchaus auch Rückgabewerte beim Funktionsaufruf. Mein Problem ist nun allerdings, dass jeder Aufruf von Clients eine neue Instanz der Serveranwendung öffnet - und genau das möchte ich vermeiden, es soll immer nur eine einzige Serverinstanz geben damit wirklich sichergestellt werden kann, dass via critical section nur eine Nummer gleichzeitig vergeben wird... ganz abgesehen davon, dass die Serverapplikation ja auch noch andere Dinge in der Datenbank erledigt und es somit zu Katastrophen kommt wenn da mehrere Instanzen gleichzeitig arbeiten.
Gibt es da irgendeine Möglichkeit, dass sich mehrere Clients immer zum selben Serverprozess verbinden können? Es wäre auch vorteilhaft, wenn Clients die Serverapplikation durch einen Aufruf von CreateRemoteComObject nicht eigenmächtig starten können - es soll dann einfach nur gemeldet werden, dass der Server derzeit nicht läuft.
Ist so etwas über
DCOM überhaupt sinnvoll realisierbar oder wäre das vollkommen am Konzept vorbei?
Danke für eure Hilfe!