Vor kurzem schien sich das Tempo, mit dem Webbrowser neue Technologien (z. B. HTML5) verbesserten und implementierten, beträchtlich beschleunigt zu haben. Zur gleichen Zeit, die Werkzeuge für die Entwicklung von Web-Anwendungen, wie z. jQuery oder die Myriaden von Web-Frameworks haben auch die Web-Entwicklung viel einfacher gemacht.
Sind wir jetzt an einem Punkt, an dem es sinnvoll ist, eine reine Einzelplatz-Desktop-Anwendung mit Web-Technologien zu entwickeln? Vorausgesetzt, wir können einfach den neuesten Browser zusammen mit unserer Anwendung installieren, müssen wir uns keine Gedanken über die Kompatibilität mit älteren Browsern machen.
IMHO Web-basierte Anwendungen sind die Zukunft. Derzeit gibt es Anwendungen, die sehr lange brauchen, um ins Web zu gehen, wie z. B. Adobe-Produkte. Das Web muss noch viel mehr vorankommen, bevor wir zu diesem Punkt kommen.
Die Webbrowser liegen noch hinter den Zeiten und es gibt viel zu viele Browseranteile, die die Browser nicht unterstützen (oder schlecht unterstützen) wie HTML5, CSS3, etc.
Cloud-Technologien sind der richtige Weg, wenn es Ihnen nichts ausmacht, sich mit Cross-Browser-Problemen zu befassen. Der beste Vorteil für einen Kunden mit Cloud-Apps ist, dass er überall darauf zugreifen kann, ohne etwas herunterladen zu müssen.
Aber wenn Sie eine webbasierte Technologie auf den Desktop des Benutzers herunterladen möchten, können Sie Adobe Air verwenden:)
Ich persönlich mache alles mit Web-Technologie, die ich vorher in einer Desktop-Anwendung getan hätte. Die JavaScript-Frameworks nehmen die Browserunterschiede sehr in Kauf. Es ist definitiv der Weg für interne Anwendungen. Das mögliche Problem mit nach außen gerichteten Anwendungen ist, dass Sie davon ausgehen müssen, dass JavaScript nicht deaktiviert wurde.
Bearbeiten:
Wenn Sie wirklich Desktop-Anwendungen mit Web-Technologie wie Javascript usw. entwickeln möchten, könnte die Adobe Air das sein Weg zu gehen
Nein. Und das ist kein Punkt, zu dem man als solcher kommen kann. Web-Anwendungen werden immer begrenzter sein als Desktop-Anwendungen, und zwar aus Gründen der Sicherheit und der Privatsphäre, ganz zu schweigen von der plattformübergreifenden Sensibilität, der Implementierungsqualität und den direkten visuellen und gestalterischen Anforderungen.
Als solches kann Ihre Anwendung mit einigen ziemlich strengen Einschränkungen umgehen (keine Chance auf erhöhte Rechte, wahrscheinlich eingeschränkter Zugriff auf das Dateisystem, wenn überhaupt, kein Dokumentenaustausch, Geschwindigkeitsbegrenzungen, Einschränkungen der Rechenleistung, ...) Es ist einfach kein realistischer Ansatz.
Bearbeiten:
Durch die Klarstellung des "visual and design requirements" -Bits: Die Benutzer erwarten im Allgemeinen ein gewisses Aussehen und Verhalten mit ihren Desktop-Anwendungen, das Anpassen an dieses Look and Feel über mehrere Plattformen hinweg ist ein absoluter Schmerz; weil alles unterschiedlich groß ist, egal wohin du gehst. Wenn Sie ohnehin nicht planen, mehrere Plattformen zu unterstützen, worauf kommt es an erster Stelle an?
Mit anderen Worten, Sie landen in einer Situation, in der Sie 90% der Entwicklungszeit nutzen können, indem Sie Stylesheets pflegen, die auf jeder Plattform für Ordnung sorgen; oder machen Sie es auf all Plattformen hässlich (ref: Java)
Ja, wir sind jetzt an dem Punkt, wo es gemacht werden kann, außer für den immer problematischen IE. Dies ist seit einiger Zeit in Firefox mit XUL und Prism möglich. Ich habe ein paar Anwendungen gesehen, die die Fähigkeiten zeigen, von denen Sie sprechen. Sie arbeiteten in allen modernen Browsern. Natürlich kann keiner von ihnen im IE arbeiten. IE hält immer das Web zurück.
Nein - es gibt drei spezifische Erfahrungen, die Sie dem Benutzer anbieten können, und es gibt Gründe in vielen Apps, sie nicht zu verwirren
Leichtgewicht - reines Web, Client muss nur einen Browser ausführen können - dies kann weiter in mobile Clients unterteilt werden, Clients, die in schwierigen Umgebungen laufen (niedrige CPU, geringe Bandbreite, etc.)
Rich-Internet-Anwendungen - Viel schwerere Web-Anwendungen - nicht so viel traditionelles asp.net mehr (ich hoffe), weil die Apps aus dem Kommunikationskanal (Viewstate) und dem Host-Server schlagen (Oft führen Postbacks dazu, dass auf dem Server nur drei Zeilen "echter" Funktionalität laufen.) - Ich würde jQuery für sein weites Spielfeld, Silverlight für den begrenzteren Spielplatz, aber die unbestreitbar reiche Erfahrung vorschlagen und sich fragen, wann Versprechen von HTML 5 wird wirklich auf dem Markt sein
Thick Client Applications - benutzerdefinierter Code, Zugriff auf das Dateisystem, 3D-Rendering, alle Bits, die wirklich lokalen Code mit Zugriff auf lokale Ressourcen benötigen
Nachdem das gesagt wurde, bezieht sich der positive Spin auf Ihre Frage darauf, Ihre Anwendungen gut zu faktorisieren - achten Sie auf die Trennung zwischen Ihren Ebenen, besonders im Hinblick auf die Trennung zwischen Ihrer Präsentationsebene und den logischen Ebenen, mit denen sie kommuniziert / p>
1) Verwenden Sie einen globalen Kommunikationsmechanismus - errr, das bedeutet REST, weil jeder es sprechen kann - alle Ihre Clients können es verwenden - SOAP ist nicht so global einsetzbar
2) Seien Sie nicht monolithisch, seien Sie serviceorientiert - brechen Sie Ihre Funktionalität auf, damit bestimmte Bits direkt angesprochen werden können - dies bedeutet, dass jQuery- und Rich-Clients leicht auf die benötigten Bits zugreifen können, wenn sie sie benötigen in der Position zu sein, dass es dir egal ist, wer / was der Klient ist (für leichtgewichtiges du, für alles andere), du erstellst den Dienst einmal und jeder benutzt ihn mehr oder weniger auf die gleiche Art und Weise
3) Machen Sie die Präsentation für die verschiedenen Medien / Zustelltypen / make services uniform - (bei Rich Clients lohnt es sich manchmal, die Service-Verarbeitung auf den Client zu verlagern, um Ihren Server zu schonen und Ihre Skalierbarkeit zu erhöhen)
Tags und Links javascript html web-applications