Verwenden des Browsers für die Desktop-Benutzeroberfläche

9

Wie kann ich den Browser als Benutzeroberfläche für eine Desktop-App verwenden? Die Wege, die ich bis jetzt gemacht habe, sind ...

  1. Benutze alles HTML / Javascript. Problem: Kann nicht auf das Dateisystem oder nur auf etwas anderes zugreifen.
  2. Führen Sie einen lokalen Webserver aus, während die Anwendung verwendet wird. Problem: Wie töte ich es, wenn der Benutzer fertig ist? Meine Benutzer sind nicht technisch genug, um Strg + C.
  3. Betten Sie eine Browserkomponente in eine normale GUI ein. Problem: Eingebettete Browser-Komponenten sind bestenfalls störrisch. Die Unterstützung für Javascript / CSS ist nie so gut wie in einem echten Browser.
  4. ...?

Die ideale Lösung würde mit jeder Technologie funktionieren. Ich weiß, es gibt Optionen wie das Schreiben von Firefox-Erweiterungen, aber ich möchte volle Freiheit in der Backend-Technologie und Browser-Unabhängigkeit haben.

    
Instance Hunter 29.10.2009, 12:07
quelle

6 Antworten

2

In Windows könnten Sie das IE ActiveX-Steuerelement einbetten, das dieselbe Rendering-Engine wie IE verwendet. (Das ist ein Plus und ein Minus) Sie können die Eigenschaft ScriptObject in Ihrem Host-Code setzen und in Javascript als window.external darauf zugreifen, um Dinge zu tun, die Javascript nicht kann.

Wenn Sie einen lokalen Webserver betreiben, könnten Sie einen Exit-Link in der App haben, der den Web-Server zum Absturz bringt.

    
SLaks 29.10.2009, 12:12
quelle
8

Bitte beachten Sie, dass Sie ein Sicherheitsrisiko erzeugen, wenn Sie einen lokalen Webserver ausführen.

Jede Webseite, die auf demselben Computer ausgeführt wird, der Ihre App kennt, kann mithilfe von JavaScript Anforderungen an Ihren Server senden, und Sie haben keine einfache und zuverlässige Möglichkeit zu wissen, woher die Anfrage stammt. (Vertraue dem Header referer nicht)

Google Desktop, das einen ähnlichen Ansatz verfolgt, verfügt über mehrere Sicherheitslücken, die es jeder Webseite ermöglichen, jede Datei auf der Festplatte zu lesen.

Es gibt mehrere Möglichkeiten, sich davor zu schützen; Ich würde empfehlen, jede Anfrage mit einem auth-Schlüssel zu versehen, der nach dem Zufallsprinzip per Maschine generiert wird (und an einem bestimmten Punkt abläuft), den Sie in die Quelle für die eigentlichen Seiten einfügen können. Der XHR-Schutz verhindert, dass böswillige Websites den Auth-Schlüssel lesen, wodurch sie machtlos werden.

    
SLaks 29.10.2009 12:26
quelle
4

Wenn Sie nach einem Python-Webserver mit einem Kill-Link suchen, können Sie CherryPy immer überprüfen.

%Vor%

Dieser Code basiert auf dem Beispiel von SingleClickAndRun auf der cherrypy-Website: Ссылка

Beachten Sie, dass Sie in einer normalen WebApp wahrscheinlich eine Vorlagen-Engine verwenden und Vorlagen aus Methoden wie main laden würden.

Etwas, das schön wäre, wäre, ein Browser-Steuerelement in ein GUI-Fenster einzubetten und den Server zu schließen, wenn die App beendet wird.

Für die Sicherheit könnten Sie möglicherweise ein Authentifizierungsschema hinzufügen. Es gibt einige, die von cherrypy unterstützt werden, aber Sie könnten auch Ihre eigenen implementieren, indem Sie Tool-Module verwenden.

    
Martin 30.10.2009 02:04
quelle
4

Ich suche genau dasselbe (Desktop-App, die einen aktuellen HTML5 / CSS3-Browser als GUI der Desktop-App verwendet), nur mit Ruby (verschiedene Gründe, warum ich mich entschieden habe, mit Ruby zu arbeiten). Es ist erstaunlich, wie viele plattformübergreifende Bibliotheken sich die Leute ausgedacht haben. Aber, nur wenige bis niemand, hat alle Anstrengungen unternommen, um einen Webbrowser zu einem Desktop-App-UI zu machen. Cross-Plattform-Problem ... Nun, ich werde nicht sagen, gelöst, aber ich werde mehrere Schritte in die richtige Richtung sagen.

Für mich wäre das perfekt mit den neuen HTML5 / CSS3-Standards. Ich weiß, dass es mit einem Webserver, der lokal ausgeführt wird, getan werden kann.

Ein anderer Weg könnte sein, wie die Jungs von "280 North" tun, was sie tun. Sie entwickelten Objective-J (eine Erweiterung von regulärem JavaScript, das imitiert, wie Objective-C reguläres C erweitert) und Cappuccino (das Objective-J-Äquivalent von Objective-Cs Cocoa-Frame-Arbeit am MAC). Sie entwickelten auch "Atlas", die Version von Apples "Interface Builder" von 280Code, für ihre Objective-J- und Cappuccino-Frameworks, um Internet-Anwendungen zu erstellen. Atlas ist eine Cappuccino-Web-App, die auf Ihrem Desktop als Desktop-App ausgeführt wird. In diesem Fall verwenden sie die Narwhal ... eine plattformübergreifende, allgemeine JavaScript-Plattform für die Entwicklung von JS-Apps außerhalb des Browsers (im Grunde ein spezialisierter Webserver).

Wenn jemand mit einer Idee kommen kann, dass "Browser, direkte Verbindung zur Desktop App" funktioniert, ohne dass ein Webserver gleichzeitig vorhanden sein muss und trotzdem den lokalen FS manipulieren kann, wäre ich sehr interessiert ... Hmmm ... Nun, da ich darüber nachdenke, frage ich mich, ob das neue Google Chrome-Projekt "Native Client" dazu verwendet werden kann. NaCL ähnelt Active X, mit der Ausnahme, dass Sie nicht auf eine Windows-Plattform beschränkt sind (sondern zumindest für den Google Chrome-Browser). Nur gibt es Sicherheit über Sandboxing, aber Sie können die lokale FS manipulieren ... Je mehr ich darüber nachdenke, desto mehr beginne ich zu vermuten, dass es getan werden kann.

Irgendwelche Gedanken?

    
Brad Hutchins 21.07.2010 03:40
quelle
1

Sie haben das Betriebssystem, auf das Sie zielen müssen, nicht erwähnt. Sie können jedoch möglicherweise einen webbasierten Webserver mit Programm erstellen und dann den Standardbrowser aufrufen. Warten Sie, bis der Browser vom Benutzer beendet wird, und fahren Sie dann den Webserver herunter.

So können Sie zum Beispiel in Windows CreateProcess () verwenden, um den Prozess zu erzeugen dann MsgWaitForMultipleObjects () zu warten, bis es fertig ausgeführt wird.

    
Robert Love 29.10.2009 12:16
quelle
1

HTML-Anwendungen (kurz HTA) gibt es schon seit einiger Zeit. Sie können alles über hier lesen. Sie sind im Grunde HTML und Javascript mit einigen zusätzlichen Optionen, um ein Fenster und mit Zugriff auf das lokale Dateisystem zu erstellen. Sie scheinen genau das zu sein, was du willst. Es ist Microsoft-Technologie, so dass dies nur mit IE auf Windows-Systemen funktioniert. Ich habe dies erfolgreich als ein Front-End für eine CD-ROM verwendet, die verwendet wurde, um Software an Studenten im ersten Jahr zu verteilen

Eine andere Option wäre die Verwendung von Adobe Air. Ich bin mit der Technologie nicht so vertraut, aber es scheint einen Rahmen zu bieten, um Webseiten als Desktop-Anwendungen zu implementieren. Ich kann keinen zweiten Link als Gast posten, aber google es einfach und du wirst es bald genug finden.

    
Bas 29.10.2009 13:19
quelle