Laden...

Umsetzungsidee für Statusübermittlung

Erstellt von brave_snoopy vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.217 Views
B
brave_snoopy Themenstarter:in
99 Beiträge seit 2011
vor 9 Jahren
Umsetzungsidee für Statusübermittlung

Hallo,

ich bin auf der Suche nach einer Idee wie es praktisch am besten und einfachsten umgesetzt werden kann. Meine Programmierkenntnisse in C# sind recht rudimentär aber ich versuche mich gerade an einem kleinen Projekt.

Das Projekt besteht aus 2 Komponenten.

  1. Ein Windows Service wo Quartz.Net bereits implementiert ist als Zeitgeber.
    Alle x Sekunden wird eine Verbindung zu einem Terminalserver aufgebaut
    (Das funktioniert bereits)

2)Eine Anwendung auf dem Terminalserver, welche in der Sitzung gestartet wird, die der Service aufbaut. Die Anwendung soll dann an den Service ein "OK und Zeitstempel" senden, so dass der Service weiß, dass die Anwendung auf dem Terminalserver erfolgreich nach x Sekunden gestartet wurde.
Anschließend soll die Anwendung die Sitzung wieder abmelden.(Dies funktioniert bereits)

Nun gibt es natürlich x beliebige Terminalserver und der Service baut in einer Foreach schleife alle x Sekunden eine Sitzung auf. Auch kann es sein, dass die Anmeldung am TS1 länger dauert als am TS6.

Nun die Frage, wie ich es designe/programmiere dass beim Starten der RDP Sitzung ein Log geführt wird(im RAM reicht) zu welchem TS eine Verbindung aufgebaut wurde und ob bereits ein OK gesendet wurde.

Ist nach 3 Verbindungsaufbauten kein OK gekommen, so wird der TS als "Down" markiert und ein Fehler wird protokolliert.

Ich hoffe meine Anforderung ist verständlich rüber kommen.

Das ganze muss ja irgendwie multithreaded sein, mit einer zentralen Art von DB im RAM.
Ich hätte auch gedacht, dass der Service auf einem TCP Port lauscht und die Anwendung per TCP Verbindung die Daten in der Art von TSNAME:OK:ZEIT sendet.

Allerdings wäre natürlich auch eine Art Session Nummer nicht schlecht, um zu sehen, in welcher Reihenfolge die Verbindungen zu Stande gekommen sind.

Achja und die Verbindungen werden über das Citrix Online Plugin (wfcrun32.exe) gestartet. Da ist leider nix mit Parameter übergeben. Aber das Sitzungsstarten funktioniert einwandfrei.

Danke für eure Ideen.

1.696 Beiträge seit 2006
vor 9 Jahren

Achja und die Verbindungen werden über das Citrix Online Plugin (wfcrun32.exe) gestartet.

Hallo,

es geht hier also um das Loggen von Start von Citrix XenApp bzw. User Session? Wenn ja, dann hat der XenApp doch schon eigene Logging und Monitoring, warum das Rad neuerfinden?

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

B
brave_snoopy Themenstarter:in
99 Beiträge seit 2011
vor 9 Jahren

Weil Citrix/XenApp keine richtige Verbindung aufbaut. Die schauen nur, ob z.B. der IMA Dienst läuft.

Aber es hängen ja doch noch einige mehr Faktoren ab, ob die Sitzung wirklich sauber gestartet werden kann. Wir hatten selbst schon den Fall, dass laut Monitoring alles in Ordnung war und einer von 10 Hosts zwar angefangen hat die Sitzung aufzubauen, doch mittendrin ist der Prozess einfach hängen geblieben.

Daher die Anwendung und die Frage wie ich aus der Sitzung heraus den Status am besten reporten kann.

S
231 Beiträge seit 2007
vor 9 Jahren

Hallo,

ich würde mir eine Struct aufbauen.

  • Host
    (- Maximale Verbindungsversuche)
  • aktuelle Verbindungsversuche

Dann erstellt du ein Array dieser Struct für deine Server.

Du durchläufst das Array und versuchst eine Verindung aufzubauen. Klappt es, stellst du die aktuellen Verbindungsversuche auf 0. Klappt es nicht, erhöhst du Verbindungsversuche um 1. Hast du die Anzahl der maximalen Verbindungsversuche erreicht (bzw. waren es 3), dann kommt die Fehlermeldung.

Viele Grüße

Christoph