Einzelnen Beitrag anzeigen

Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#1

suche Lösungsansatz für Situation? Ist Com möglich?

  Alt 7. Sep 2007, 10:55
Nun bin ich gerade über einige Sachen bei meinen Recherchen gestolpert und hab dazu mal eine Frage...
Com Ist eine feine Sache, wie ich gerade festgestellt habe, nur ist die Frage ob das, was ich realisieren möchte damit machbar ist.

Folgende Situation:
  • Ich hab ein Gerät, welches über eine Schnittstelle angesprochen wird.
  • Diese Schnittstelle gilt Systemweit (Also einmalig am Rechner), da Gerät am Com-Port angeschlossen.
  • Der Rechner ist ein Windows Terminal-Server
  • Ich hab mehre Anwendungen welche diese Schnittstelle implementieren und verwenden.
  • Nur eine Anwendung kann zur gleichen Zeit die Schnittstelle verwenden! (Andere Anwendungen müssen warten bis die Schnittstelle vom aktiven Prozess beendet wurde, um sie öffnen zu können.)
Zur Zeit sieht das so aus, dass Anwendungen von Hand beendet werden müssen, damit eine andere Anwendung die Schnittstelle verwenden kann.
Problem der Situation dabei:
  • Die Anwendungen müssen nicht unbedingt in der selben Session laufen, sprich Benutzer A hat die Anwendung offen, Benutzer B möchte sie öffnen, kann es aber nicht!
  • Benutzer B ist kein Admin, sieht also auch nicht die Prozesse der anderen Benutzer, deshalb weiß er auch nicht (Angenommen er kennt alle Anwendungsnamen) Wer/Was die Schnittstelle belegt...
(Vereinfacht) Ziel ist es nun, dass ein Anwender sieht, welche Anwendung unter welchen Benutzer die Schnittstelle belegt und der Schritt weiter, die Schnittstelle eines anderen beenden/pausieren kann.
Ganz so einfach ist die Sache dann aber wieder nicht, denn wie ihr euch das denken könnt, ist bei solchen Sachen eine Rechte-Verwaltung zwingend notwendig!

Nun will ich den vereinfachten Schritt ein wenig komplexer gestalten, und die Schnittstelle aus den vorhanden Anwendungen entfernen und als System-Dienst laufen lassen.
Anwendungen die diese Schnittstelle nun verwenden wollen, bekommen nun ein Zugang zur Schnittstelle vom Dienst gestellt, welche der Dienst pausieren, entziehen und erneut zustellen kann.

Grund ist ganz simpel, die Rechteverwaltung sollte vom Benutzer selbst nicht zugänglich sein, sprich der Dienst regelt die Zugänge, und stellt nötige Informationen zur Verfügung (z.b. Welcher Benutzer verwendet die Schnittstelle., welche Anwendunge verwendet er dafür)

Nun hab ich solche Sachen bis jetzt noch nie mit Delphi umgesetzt, daher suche ich nach geeigneten Möglichkeiten die Sache umzusetzen.

Die Schnittstelle an sich ist zur Zeit als Interface gelöst, da die Schnittstelle nicht unbedingt mit einem Gerät am Com-Port komunizieren muß.
Von mir angedacht war, dass der Dienst solange er läuft eine Com-Object registriert, welches sich die Benutzer abhollen können.
Dieses Object (Schnittstelle) stellt die Kommunikation zu der eigentlichen Schnittstelle im Dienst her und stellt Möglichkeiten bereit Informationen auszutauschen.

Nun ist die frage ob dies nun so mit COM zu lösen ist, oder ein andere Ansatzpunkt gefunden werden muß.
ausgeschlossen hab ich:
  • Messages
  • Socketverbindungen
  • Mailslots & Named Pipes
Meine Gründe: Für diese Sachen müßte noch ein komplexes Kommunikations-Protokoll erstellt werden, welches ich vermeiden möchte.
Zudem ist sicher, dass die Anwendungen nur auf den Rechner laufen, sprich eine Netz-Kommunikation ist nicht notwendig, daher muss die Lösung auch nicht Plattform unabhängig sein.


Bye Christian
Christian
  Mit Zitat antworten Zitat