mOSSpOWER Geschrieben 18. Oktober 2007 Teilen Geschrieben 18. Oktober 2007 Hallo Kollegen, ich erstelle gerade eine Anwendung, die sich viele Informationen (Quoten, Ergebnisse ect.) aus dem Internet beschafft. Hier können zu Spitzenzeiten 70-100 InternetExplorer-Objekte instanziert sein und laufen. Natürlich werden alle Fehler, also es kann nicht wie gewünscht navigiert werden, festgehalten, hier die ganze HTML-Datei. Da es ja eine Zeit lang dauert, bis man das Fehlverhalten von allen Websites herausgefunden, bzw. das finden von Fehlern wesentlich schneller geht mit zusätzlichen Screenshots, dachte ich mir, dass ich eben immer bei einem Fehler zusätzlich, neben dem HTML-File, ein Screenshot erstelle. Dies funktioniert auch wunderbar. Nur habe ich hier ein Problem, bezüglich der Sichtbarkeit des Fensters. Wenn ich das InternetExplorer Objekt auf Visible = false stelle, soll später ein Windows-Service sein und den MSIE will ich nicht sehen, dann bekomme ich immer ein schwarzes Bild. Komisch ist, dass wenn ich alle Objekte auf meinem zweiten Bildschirm aufrufe (und diesen ausschalte), die Bilder trotzdem vorhanden sind (bei Visible = true). In ferner Zukunft (wenn das Programm fertig ist), werde ich natürlich die Anwendung auf einem Server laufen lassen, hier möchte ich eigentlich überhaupt keinen Bildschirm anschliesen (nur mit Remote-Desktop). Jetzt die Frage, muss ich auf die Images verzichten, wenn auf dem Server eine Exception fliegt, oder gibt es da eine Möglichkeit, denn im Bild sind ja auch nur irgendwelche binären Daten gespeichert. Gegenwärtig mache ich das, wie wahrscheinlich die meisten, mit User32.dll und GDI32.dll. Freue mich über Eure Antworten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 18. Oktober 2007 Teilen Geschrieben 18. Oktober 2007 Hallo, nur mal so eine generelle Frage: Warum ~100 IE Instanzen? Um zu prüfen, ob eine Webseite da ist oder nicht, reicht es doch einfach einen HTTP Connect zu machen. Gruß Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mOSSpOWER Geschrieben 18. Oktober 2007 Autor Teilen Geschrieben 18. Oktober 2007 Hallo, nur mal so eine generelle Frage: Warum ~100 IE Instanzen? Um zu prüfen, ob eine Webseite da ist oder nicht, reicht es doch einfach einen HTTP Connect zu machen. Gruß Phil Ne, ich muss dann auf diesen Seiten navigieren und Daten einsammeln, die bleiben dann immer solange offen, bis kein Fehler passiert .. kann Tage oder Monate dauern. Hier kann ich dann den Status halten (bei z.B. AJAX-Seiten) ... d.h. ich brauche nicht immer neu zur Seite navigieren. In der Regel passiert halt immer dann ein Fehler, wenn der Server nicht oben ist, oder Änderrungen an der Seite durchgeführt wurden. Mit den Screenshots kann ich die Fehler viel schneller finden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 18. Oktober 2007 Teilen Geschrieben 18. Oktober 2007 Hallo, Ne, ich muss dann auf diesen Seiten navigieren und Daten einsammeln, ... automatisiert navigieren? Machst Du die Kontrollen per Hand? Denn 100 Instanzen, das sind ja auch für einen Menschen viel. Ich verstehe das Konzept überhaupt nicht. Für mich klingt es so, als ob Du Dir von mehreren Webseiten Daten automatisiert besorgen willst und eine Rückmeldung bekommen möchtest, falls bei einer Seite keine Daten geliefert wurden. Die Daten kann ich ohne Probleme direkt über HTML herunterladen, wenn es XHTML ist, dann per XSL transformieren, falls kein XHTML, dann per Stringparsing. Die URLS zu den Webseiten kenne ich ja auch, d.h. wenn ein Connect fehlschlägt oder die Transformation / Stringparsing nicht klappt, weiss ich bei welcher Seite ein Fehler aufgetreten ist. Ajax brührt Dich ja nur indirekt, da dies ja mit dem Server zusammenarbeitet und Du die Daten letztendlich im HTML stehen hast. Tut mir leid für das Unverständnis Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mOSSpOWER Geschrieben 18. Oktober 2007 Autor Teilen Geschrieben 18. Oktober 2007 Hallo, automatisiert navigieren? Machst Du die Kontrollen per Hand? Denn 100 Instanzen, das sind ja auch für einen Menschen viel. Ich verstehe das Konzept überhaupt nicht. Für mich klingt es so, als ob Du Dir von mehreren Webseiten Daten automatisiert besorgen willst und eine Rückmeldung bekommen möchtest, falls bei einer Seite keine Daten geliefert wurden. Die Daten kann ich ohne Probleme direkt über HTML herunterladen, wenn es XHTML ist, dann per XSL transformieren, falls kein XHTML, dann per Stringparsing. Die URLS zu den Webseiten kenne ich ja auch, d.h. wenn ein Connect fehlschlägt oder die Transformation / Stringparsing nicht klappt, weiss ich bei welcher Seite ein Fehler aufgetreten ist. Ajax brührt Dich ja nur indirekt, da dies ja mit dem Server zusammenarbeitet und Du die Daten letztendlich im HTML stehen hast. Tut mir leid für das Unverständnis Phil Klar, Du hast recht (und mein Vorhaben auch richtig verstanden). Ich habe mir einen Navigator programmiert, mit dem man automatisiert navigieren kann. Nun, warum ich dennoch meine Variante wähle ist ganz einfach 1) Ich will auch AJAX (dynamische - und nachgeladene Inhalte) lesen können (mit "normalen" HttpRequest-Objekten geht das nicht) 2) Wenn ich immer wieder auf eine Seite muss (ggf. auch anmelden ect.), und mir die HTML-Seite auslesen, dann dauert dies ewig länger, als wenn ich schon auf der Seite bin und mir zum Auslesen (was ich über Variante A immer z.B. mit einem HTML-Parser oder plain RegEx machen muss) das DOM-Objekt des Internetexplorers schon zur Verfügung stellt - soll heißen, ich komme wesentlich schneller an meine Daten .. OK, bis die Seite das erste mal aufgerufen wurden und der DOM geladen, dauert am Anfang länger, aber bereits ab dem zweiten oder dritten Zugriff habe ich Variante A outperformed. Gruß P.S. Ich gebe Dir mal ein Beispiel. Lese ich z.B. Daten von einem sehr schnellen Liveticker (z.B. Fußball) und die Seite bietet AJAX-Support an, dann bekomme ich sofort in das vorhandene DOM-Objekt Änderrungen geliefert und brauche nur zyklisch das DOM durchlaufen. Anderenfalls müsste ich einen Refresh machen oder neu auf der Seite anfragen und den Stream auswerten (was sehr performancelastig ist) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.