Gibt es irgendwelche Einschränkungen einer idealistischen HTML5-Webanwendung?

11

Nehmen wir an, die folgenden zwei Annahmen sind wahr.

  • Ihre gesamte Nutzerbasis hat überall Breitbandzugang
  • Es gibt einen imaginären Browser X, der die gesamte Entwurfsspezifikation der HTML5- und WHATWG-Gruppen konsistent implementiert und alle Benutzer verwenden Browser X.

Was sind die inneren Grenzen eines kommerziellen öffentlichen HTML5 Web - Anwendung , dass wir für die kommerzielle öffentliche Desktop - Anwendungen benötigen?

Ich interessiere mich für die Einschränkungen von Plugin-freien Webanwendungen, die für zusätzliche Funktionen nicht auf Flash / Java / SilverLight / etc-Bridges oder für zusätzliche Funktionen auf Browser-Plugins angewiesen sind.

Mögliche Einschränkungen, die nicht zutreffen:

  • Datenbanken? Wir haben WebSQL und indexedDB.
  • Datei IO? Wir haben die HTML5-Datei-API, die sowohl lesen als auch schreiben kann.
  • Geschwindigkeit? Mit dem letzten Rennen der JavaScript-Engine ist der Browser nicht mehr langsam. Native C ++ ist nur dreimal schneller als die V8-Engine von Chrome.
  • Entwicklungswerkzeuge? Das Web ist ausgereift und es gibt eine ganze Reihe von Tools, die zu zahlreich sind, um sie aufzulisten.
  • Geschlossene Quelle? Ja, der gesamte Code ist Open Source. Dies ist ein zweischneidiges Schwert und es gibt zahlreiche Meinungen zur Verwendung von Closed Source oder Open Source Code. Ich persönlich glaube, dass die Vorteile von Open Source Code die Nachteile überwiegen.
  • JavaScript / HTML5? Argumente wie "Ich persönlich denke, HTML5 und EcmaScript sind schreckliche Entwicklungsplattformen" zählen nicht.

Bekannte Einschränkungen:

  • Kritischer Echtzeit- / Sicherheitscode (streng geheim) gehört nicht ins Web und kann es auch nicht. Es muss in einer einfachen, gut kontrollierbaren Sprache wie C oder C ++ geschrieben sein.
  • Jedes Tool, das mit einer fremden Hardware eines Drittanbieters interagieren muss, die an Ihren Computer angeschlossen ist, kann nur schwer mit Ihrer Webanwendung kommunizieren.

Es gibt auch eine ganze Reihe von Programmen, die nicht ins Web gehören. Betriebssysteme, Treiber, Serversoftware, Low-Level-APIs. Ich bin mir dessen bewusst, klassifiziere sie jedoch nicht als "kommerzielle öffentliche" Anwendungen. Dies ist die Art von Software, die auf Computern vorinstalliert werden kann.

Abgesehen davon weiß ich, dass die beiden Annahmen schrecklich unrealistisch sind, aber wir könnten sie in 5/10/20/30 Jahren erreichen. Ich interessiere mich für die Art der Anwendungen und die Funktionen der Anwendungen, die sie vollständig mit dem Web inkompatibel machen .

Motivation:

Der Punkt:

Angesichts der Reihe von Problemen, bei denen eine Desktop-Anwendung eine gültige Lösung ist.

  • Warum ist eine Webanwendung keine gültige Lösung?
  • Wie erkenne ich, ob ich eine Webanwendung als Lösung verwenden kann?

Ich habe versucht, die Hauptschwierigkeiten bei Webanwendungen (Internetverbindung und Browserunterstützung) zu beseitigen, indem ich behauptete, dass sie nicht existieren.

Abgesehen davon sind HTML5-Offline-Anwendungen und Modernizr auf dem besten Weg, beide Probleme zu lösen.

Was sind die anderen Schwierigkeiten bei der Entwicklung von Webanwendungen?

Raynos
quelle
2
Primäre Einschränkung: Eine gute Idee für Webanwendungen, die genügend Benutzer verwenden möchten, verbunden mit einem Geschäftsmodell, das zumindest Kosten verursacht. Der Rest ist weit an zweiter Stelle.
SF.
"Was sind die eigentlichen Einschränkungen"? Was meinst du mit "intrinsischer Begrenzung"? Was bedeuten diese Wörter? Welche Informationen möchten Sie? Welches Problem hast du? Was ist die Frage?
S.Lott
@ SF entfernen Sie das Wort "Web". Sie brauchen ein Problem und eine Lösung. Wenn es sich bei dieser Lösung um eine Anwendung handelt, muss sie das Problem lösen, über eine Benutzerbasis und ein funktionierendes Geschäftsmodell verfügen. Ich vergleiche nur die Probleme, die eine Desktop-Anwendung als Lösung haben, und frage mich, warum eine Webanwendung nicht funktioniert.
Raynos
@ S.Lott dein richtiges, die Frage war zu vage, ich hoffe ich habe geklärt was die eigentliche Frage ist.
Raynos
Was? "Was sind die eigentlichen Einschränkungen einer kommerziellen öffentlichen Webanwendung, für die wir kommerzielle öffentliche Desktopanwendungen benötigen?" Bedeutet dies "Wann brauchen wir den Desktop, weil das Web nicht funktioniert?" Wenn ja, sind alle diese Duplikate: programmers.stackexchange.com/search?q=desktop+web
S.Lott

Antworten:

11

Aus meinem Kopf ...

  • Greifen Sie auf proprietäre Hardware zu, die ihre E / A auf andere Weise als über eine Datei exportiert. Sei es wissenschaftliche Ausrüstung, Industriemaschinen oder ein einfacher CD-Recorder und ein Digitalisierertablett mit Neigungsunterstützung.
  • nur HTTP und eine kleine Familie anderer Protokolle. Sie können keine Sockets erstellen, wie Sie möchten, und die gewünschten Binärdaten übertragen. Dies schränkt die Konnektivität mit anderen Systemen und Diensten erheblich ein.
  • Kein vernünftiger Entwickler wird ein grafikintensives Spiel in Javascript erstellen. Breitband ist bei weitem nicht mit den häufig benötigten DVD / HDD-Durchsätzen vergleichbar. Die Unterstützung für 3D in Canvas ist weitaus schlechter als die, die Sie mit Game Engines erhalten. Keine Möglichkeit, Joystick, mehrere gleichzeitige Tastendrücke zu unterstützen, die offene Natur macht das Betrügen einfach. In erster Linie ist der Leistungsabfall jedoch nicht akzeptabel.
  • Schweres Sandboxen. Sie werden keine Dinge bekommen, die tief in das Betriebssystem integriert sind. Screenshots, Antivirenprogramme, virtuelle Laufwerke, Hintergrundaufgaben in der Taskleiste, Verwaltungsaufgaben usw.
  • kann nicht geschäftskritisch sein. Abhängig von Breitband zu jeder Zeit ist die Ausführung ihrer Basissoftware nicht die bevorzugte Methode, die die meisten Unternehmen gerne ausführen.
SF.
quelle
1
2. WebSockets machen einen TCP-Socket verfügbar. Sie haben in einem Browser keinen Zugriff auf UDP, aber TCP bietet Ihnen viel mehr Optionen.
Raynos
2
3. WebGL macht einige interessante Fortschritte. Die OpenCL-Unterstützung wurde kürzlich gestartet. Sicher, es sind noch 5 Jahre hinter der Entwicklung von Desktop-Spielen, aber es wird langsam möglich.
Raynos
2
@ Raynos: WebSockets bieten Sockets-ähnliche Funktionen, erfordern jedoch einen speziellen Handshake. Sie können ihn nicht einfach an vorhandene Systeme anpassen. Sie müssen serverseitige Änderungen vornehmen. Das heißt, keine generische SSH-Client-Web-App. WebGL könnte einige der gfx-Probleme lösen, noch keine Lösung für Massendatenanforderungen (Gigabyte an Texturen und Netzen), Controller-E / A, und die Audiounterstützung ist derzeit erbärmlich schlecht.
SF.
1
4. Die W3C-Geräte-API (von der ich nichts wusste) ist tatsächlich auf dem besten Weg, die Sandbox-Probleme zu lösen.
Raynos
1
Viele Dinge haben sich geändert, seit Sie diese Antwort zum ersten Mal geschrieben haben. Der Browser ist zu einer eigenständigen legitimen Softwareplattform geworden. Vieles von dem, was Sie in Ihrer Antwort beschreiben, ist jetzt möglich. Ja, ich kann mir bei ausreichendem Aufwand so ziemlich jedes Spiel oder jede Anwendung vorstellen, die im Browser ausgeführt wird.
Robert Harvey
3

Grundsätzlich kann alles, was in das Server / Client-Modell passt, eine gute Webanwendung ergeben, und ispo facto kann auch das Gegenteil gesagt werden. Der Trend, ins Web zu wechseln, ist so schnell eingetreten, dass Programme das Modell und den Controller von seiner Ansicht trennen können, wenn man sieht, wie die meisten Programme in Model / Controller / View modelliert werden können.

Natürlich wird aus Effizienzgründen ein Controller auch auf der Clientseite platziert, um eine Überlastung des Servers mit fehlerhaften Anforderungen und Daten zu vermeiden.

Mein Punkt ist jedoch: Welche Programme passen nicht zur Modell- / Controller- / Ansichtssoftwarearchitektur, da es sich wahrscheinlich um dieselben Programme handelt, die nie in Webanwendungen konvertiert wurden. Gute Beispiele, die mir in den Sinn kommen, sind Betriebssysteme, Taskplaner, Eingabeaufforderung, Virenschutz und Spyware-Schutz. Jedes davon ist wahrscheinlich nicht auf einer Website implementiert, da es nicht zum Modell passt. Und es ist kein Zufall, dass jedes einzelne dieser Programme stark von Ihrem System abhängt. Die meisten erfordern direkten Zugriff auf Hardware, während andere lediglich eine höhere Sicherheit benötigen, um ausgeführt werden zu können, und nicht vertrauenswürdig sind, um von Internet-Websites ausgeführt zu werden.

Natürlich passt Google dieses Konzept mit seinem neuen Betriebssystem komplett neu an. Angeblich ist es im Gegensatz zu Windows nicht einfach ein System, das das Internet zunehmend nutzt, sondern ein System, das stark davon abhängig ist. Bald werden möglicherweise alle diese Programme online verfügbar sein und den Zugriff auf Ihre Hardware und Software ermöglichen, wenn eine strikte Zertifikatauthentifizierung durchgeführt wird, um zu verhindern, dass nur eine Site dazu in der Lage ist, sondern vertrauenswürdige Sites. Ich bin gespannt, was sie sich einfallen lassen, da ich in 20 Jahren denke, dass Computer nicht mehr mit installierbarer Software hergestellt werden. Vielmehr werden alle Dienste online verfügbar sein.

Neil
quelle
0

• Jedes Tool, das mit einer fremden Hardware eines Drittanbieters interagieren muss, die an Ihren Computer angeschlossen ist, kann nur schwer mit Ihrer Webanwendung kommunizieren.

Die Software, an der ich gerade arbeite, hat sowohl einen Desktop-Aspekt als auch einen webbasierten Aspekt, gerade weil sie Daten von Peripheriegeräten von Drittanbietern erfassen muss. Der Entwicklungsbedarf für Treiber und ein Client-Desktop-Programm, um die Lücke zwischen Gerät und Web zu schließen.

Dies schließt Webanwendungen jedoch nicht aus, da diese Art von Desktopanwendungen dünn sein kann und sich die Logik hauptsächlich auf dem Server befindet.

Andererseits kann man unter dem Aspekt des Cloud Computing und der Massenvirtualisierung sagen, dass keine Anwendung notwendigerweise durch die Einschränkungen und Sicherheitslücken der Webtechnologie eingeschränkt werden muss. Das Ausführen von Desktop-Anwendungen aus einer virtualisierten Umgebung auf einem dummen Terminal (ähnlich wie Citrix) ist viel einfacher zu erreichen und könnte die nächste "Modeerscheinung" der Entwicklung sein.

Das Fazit ist, dass es jetzt mehr Auswahlmöglichkeiten als je zuvor gibt und viel mehr sprechende Köpfe die Technologie von morgen als den "besten" Weg spielen.

maple_shaft
quelle
1
Interessanterweise können Sie Desktop-Anwendungen in einer virtualisierten Umgebung in einem Webbrowser ausführen. Die alte Funktion der meisten VNC-Server ist ein Java-Applet für den VNC-Viewer, das standardmäßig unter http: // [Remotecomputer] verfügbar ist: 5800 / Also - Desktop-App als Web-App?
SF.
0

Nehmen wir an, die folgenden zwei Annahmen sind wahr.

  • Ihre gesamte Nutzerbasis hat überall Breitbandzugang
  • Es gibt einen imaginären Browser X, der die gesamte Entwurfsspezifikation der HTML5- und WHATWG-Gruppen konsistent implementiert und alle Benutzer verwenden Browser X.

Was sind die inneren Grenzen eines kommerziellen öffentlichen HTML5 Web - Anwendung , dass wir für die kommerzielle öffentliche Desktop - Anwendungen benötigen?

Ich interessiere mich für die Einschränkungen von Plugin-freien Webanwendungen, die für zusätzliche Funktionen nicht auf Flash / Java / SilverLight / etc-Bridges oder für zusätzliche Funktionen auf Browser-Plugins angewiesen sind.

Ok, dann ist hier das Problem: Dieser Browser wird von Natur aus unsicher sein. Sie bitten uns also, einen Kompromiss zwischen den beiden zu schließen. Wenn Sie jedoch darüber hinwegkommen und davon ausgehen, dass wir Javascript haben (auf das Sie in Ihrem Beitrag hingewiesen haben), erhalten Sie die Antwort, dass es keine App gibt, die nicht nur mit HTML5 / Javascript geschrieben werden kann. Wir gehen jedoch von einem Browser aus, der nicht im Weg steht.

Das Ding hat einen lokalen Datenbankspeicher, kann über HTTP-Anfragen (von denen ein RESTafarianer sagt, dass dies ausreichend ist) Anrufe auf jede andere Plattform tätigen und (über Canvas) so gut wie alles zeichnen, was Sie wollen. Es gibt bereits 3D-Spiele, die mit offenen Standards (OpenGL ish) geschrieben wurden, und es gibt APIs, mit denen Sie fast alles tun können, was Sie wollen.

Der einzige wirkliche Nachteil ist die Geschwindigkeit. Es wird einige Zeit dauern, bis diese HTTP-API-Aufrufe an andere Systeme (Datenbanken) gesendet werden. Es wird einige Zeit dauern, um FILE (COM1 :) -Anfragen zu verarbeiten (um beispielsweise ein serielles Gerät unter Windows zu lesen). Dies sind also die Problembereiche, die ich erwarten würde. Natürlich gehe ich auch davon aus, dass Treiber so geschrieben sind, dass wie Dateien darauf zugegriffen werden kann, was meiner Meinung nach nicht mehr stimmt. Aber sie könnten einen solchen Mechanismus aufdecken;)

Für den Benutzer wird nicht viel anders sein.

jcolebrand
quelle