none
Fragen zu Beginn eines Projekts RRS feed

  • Allgemeine Diskussion

  • Hallo,

    ich soll eine Anwendung schreiben welche folgende Aufgaben erfüllen soll:

    Auf einem Rechner im Unternehmen ist der IIS installiert, auf welchem eine ASP.NET Anwendung laufen soll. Diese Anwendung soll von den im Netz befindlichen Clients in einem Abstand von 20 Sekunden aufgerufen werden und es sollen die IP's der Clients gespeichert werden. 

    Über einen Link auf der Webseite soll es dann möglich sein, Informationen vom Client anzufordern (CPU Auslastung, Memory usw.). Dieses soll dann in einem modalen Fenster angezeigt werden.

    Mich interessiert, wie ich die Kommunikation vom IIS zum Client entwickeln kann? Habt Ihr da schon Erfahrungen gemacht, wie man so etwas umsetzen kann? Bisher hatte ich immer nur Anwendungen erstellt, welche Daten zum Server gesendet haben, aber noch nie den umgedrehten Fall.  

    Könnte Ihr mir mit einem Lösungsansatz helfen?

    LG

    Claudia

    Donnerstag, 28. Januar 2016 15:14

Alle Antworten

  • Hallo,

    wenn ich es richtig verstehe, sollen die Clients in regelmäßigen Abständen ihren Zustand an den IIS-Server übertragen. Das könnte man elegant mit einem Webservice lösen oder auch eine Socket/Websocket-Lösung andenken (die ich aber für aufwändiger halte). Hier ist die Richtung ja eigentlich klar vorgegeben. Die IP ist ja immer Bestandteil des Requests, also kein Problem.

    Die übermittelten Daten werden dann von der ASP-Anwendung gespeichert und können dann über einen Webbrowser von anywhere abgerufen werden.

    Allerdings schreibst du im ersten Absatz, die Clients sollen den Server anfunken. Im dritten Absatz implizierst du nun, dass der Server die Daten beim Client abholen soll? Verstehe ich das richtig? Ist es nicht auch hier so, dass du nur Daten zum Server senden musst und nicht umgekehrt?

    Gruß

    Donnerstag, 28. Januar 2016 17:02
  • Hallo,

    ich habe es vielleicht falsch erklärt. Zuerst soll der Client im Abstand von ca. 20 Sekunden den Server kontaktieren. Dort stelle ich mir einen Webservice vor, welcher die aktuelle IP speichert. 

    Die Daten der Clients werden in einer Art Dashboard als Liste angezeigt. Wenn nun ein Client näher betrachtet werden soll, dann soll über die Liste (Link) eine Verbindung zum Client aufgebaut werden. Dieser soll als Antwort dann eine Anzahl an Informationen zurückgeben, welche in einem modalen Fenster angezeigt werden sollen.

    So ist der Plan.

    Eine Verbindung zum Server (Webservice) hatte ich schon mal in der Vergangenheit. Jetzt muss jedoch vom Server an den Client eine Anfrage geschickt werden, welcher daraufhin seine Informationen (detaillierte Infos) wieder zum Server schickt.

    Dafür weis ich noch nicht so richtig, wie ich dabei vorgehen kann.

    LG

    Claudia

    Donnerstag, 28. Januar 2016 19:17
  • Hallo Claudia,

    ich habe 2012/13 mal so etwas aus dieser Quelle gebastelt:

    http://www.espend.de/artikel/pc-information-und-installierte-software-ueber-wmiregistry-mit-vbnet-remote-auslesen.html

    Ich brauchte damals aber "nur" 32/64 Bit und installiertes RAM.
    Die Software war mir total egal. Ich zitiere mal vorsorglich aus dem Artikel:
    "Die Ports 135 für WMI und 445 für den Registry Zugriff müssen frei sein."

    Da ich davon ausgehe, das das Projekt über genug Rechte seitens des Bestellers/Bezahlers verfügen wird, sollte das kein Problem sein, die nötigten Infos rauszuholen.

    ---- Nur nebenbei

    Wir hatten damals auch ein "Sender-Programm", welches "stündlich" an eine Datenbank ComputerID,Anmeldename,Plattenkapazität und genutztes RAM gefunkt hat.Das war ganz toll, brache aber nix, wenn es um User geht, die bei einem Anruf gleichzeitig 60MB/Excel 90MB PDF und diverse Instanzen von der Warenwirtschaft aufmachen nur weil ein Cheffe/Kunde grad mal schreit

    Ich glaube, dass es reichlich Servertools gibt, die sowas besser monitoren könnten.

    Gruß

    Raimo

    Donnerstag, 28. Januar 2016 20:55
  • Hi Claudia,
    für die Aufgabenstellung gibt es verschiedene Lösungsmöglichkeiten.

    Wenn Du von einem Webserver und Dashboard schreibst, so ist dabei der typische Weg ein http, mit welchem vom Browser das Dashboard abgerufen wird. In diesem Fall meldet sich immer der Client (Browser) beim Webserver und tauscht Daten aus. Der WebServer (IIS) kann diesen Prozess nicht selbst initiieren.

    Im Browser kann ein JavaScript ausgeführt werden, der sich zyklisch mit dem WebServer verbindet und auf Anfragen antwortet, um Info aus dem Client zurückzusenden.

    Eine andere Lösungsmöglichkeit wäre ein Programm, welches auf dem Client läuft, der die Information haben will und dafür sich beim WebServer die IP-Adresse holt. Mit der IP-Adresse kann dann ein remote WMI abgesetzt werden.

    Eine weitere Möglichkeit wäre eine ClickOnce-Anwendung, die auf jedem Client installiert wird und die dann einen Dienst auf jedem Client startet, der entweder über Sockets bzw. TCP/IP sich mit einer Anwendung oder einem WebService auf dem Webserver verbindet, um dann auf Anfragen zu reagieren.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut

    Donnerstag, 28. Januar 2016 21:07
  • Ah, ok. Wenn der Client ansprechbar sein soll, benötigt dieser einen wie auch immer gearteten Listener, der Anfragen entgegen nehmen kann.

    Falls alle Clients unter Windows ab Version 7 aufwärts laufen, könnte man sich auch vorstellen, den bordeigenen IIS auf den Clients zu aktivieren und dort ebenfalls einen Webservice zu installieren.

    Dieser "Client-Webservice" könnte  lokal mit allen benötigten Rechten ausgestattet werden, um autonom Systeminformationen einzusammeln und diese dann alle 20 Sekunden an den Server zu senden und zugleich von dort jederzeit Anfragen entgegennehmen zu können. Auf der Clientseite müsste der IIS passend konfiguriert werden.

    Der Server (=ASP-Anwendung) stellt eine Webseite bereit zur Darstellung des Dashboards und auch einen Webservice, der von den Clients abboniert wird um die dort gesammelten Daten zu übermitteln. Der Aufwand (vom Dashboard mal abgesehen) wäre sicherlich ziemlich überschaubar. Aspekte wie Verfügbarkeit und Sicherheit dürften damit auch umzusetzen sein.

    Gruß
    • Bearbeitet K. Pater Freitag, 29. Januar 2016 08:50
    Freitag, 29. Januar 2016 08:47
  • Hallo Peter,

    mich würde die Möglichkeit einer ClickOnce-Anwendung interessieren. Ich denke, das wird genau das sein was ich brauche. 

    Ich hatte noch einmal die Aufgabe durchdacht - geplant ist eine Art Dashboard, in welchem die Clients eine Art Status anzeigen (grün/rot). Dieser Status soll über einen Webservice, welcher auf dem IIS läuft und durch den Client alle 20 Sekunden eine Info mit der IP/aktuelle Zeit des Clients erhalten. Bis dahin habe ich keine Probleme.

    Dabei soll es dann für jeden Client einen Link oder ein Button geben. Wenn man auf den Link klickt, soll entweder eine neue Webseite oder ein modales Fenster geöffnet werden, auf welchem man dann über ein Menü Details, welche man ansehen will, auswählen kann.

    Angedacht sind z.B. CPU (alle Kerne), RAM, HDD, Screenshots usw.

    Ich denke, dass die ClickOnce der Lösung nahe kommt. Die Rechner hängen im Firmennetzwerk, welches sich aber über ganz D verteilt. 

    Für mich ist jetzt jedoch noch nicht so ganz klar, wie ich über den Link auf der Webseite den Client Rechner erreichen kann und ihm mitteile, welche Info's ich benötige? Dieser soll dann in einer Schleife alle paar Sekunden die Daten aktualisiert auf der Webseite anzeigen, solange ich die Seite offen habe.

    Da habe ich im Moment noch eine Dekblockade.

    Vielleicht hast Du ja ein paar Tipps oder Beispiele für meine Aufgabe?

    LG

    Claudia 

    Mittwoch, 3. Februar 2016 11:24
  • Hi Claudia,
    ClickOnce ist eine Verteilungstechnologie, die im Standardfall ohne administrative Rechte auskommt und auf dem Client-Rechner ein Programm im Bereich des angemeldeten Benutzers installiert. Um an die von Dir genannte Information zu kommen, werden administrative Rechte benötigt. Das ist zu berücksichtigen.

    Damit der zentrale Server die benötigte Information anzeigen kann, muss er sie sich entweder holen oder bekommt sie regelmäßig. Wenn er sich die Information holen muss, dann muss das im Client installierte Programm eine Serverfunktionalität haben, z.B. einem TCP-Listener. Wenn der Server die Information vom Client bekommen soll, dann muss der Client diese regelmäßig senden. Das bedeutet u.U. sinnlose Netzwerklast oder stark verzögerte Aktualität der Angaben.

    Eine weitere Baustelle ist das Web-Dashboard, dessen Anzeige regelmäßig aktualisiert werden soll. Da das der Server nicht von sich aus machen kann, müssen JavaScript-Techniken zur Anwendung kommen, d.h. ein JavaScript im Browser des Dashboard-Nutzers pollt regelmäßig, z.B. mit Ajax.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut

    Donnerstag, 4. Februar 2016 18:40