【问题标题】:Using web technologies to create desktop applications使用 Web 技术创建桌面应用程序
【发布时间】:2010-09-11 15:59:52
【问题描述】:

最近,网络浏览器改进和实施新技术(例如 HTML5)的速度似乎已大大加快。同时,用于开发 Web 应用程序的工具,例如jQuery 或无数的 Web 框架也使 Web 开发变得更加容易。

我们现在是否可以使用 Web 技术开发纯单用户桌面应用程序?假设我们可以将最新的浏览器与我们的应用程序一起安装,我们不必担心与旧浏览器的兼容性。

【问题讨论】:

    标签: javascript html web-applications


    【解决方案1】:

    恕我直言,基于 Web 的应用程序是未来。目前有一些应用程序需要很长时间才能进入网络,例如 adobe 产品。在我们达到这一点之前,网络仍需要进一步发展。

    Web 浏览器仍然落后于时代,有太多的浏览器份额流向了不支持(或支持不佳)诸如 HTML5、CSS3 等特性的浏览器。

    如果您不介意处理跨浏览器的难题,那么云技术就是您的理想之选。拥有云应用程序的客户的最大优势是他们可以在任何地方访问它而无需下载任何东西。

    但是,如果您指的是将基于 Web 的技术下载到用户桌面,那么您可以使用 adobe air :)

    【讨论】:

      【解决方案2】:

      我个人使用 Web 技术完成了以前在桌面应用程序中完成的所有工作。 javascript 框架从浏览器的差异中消除了很多痛苦。这绝对是内部应用程序的方式。面向外的应用程序可能存在的问题是您必须假设人们没有关闭 javascript。

      编辑:

      如果您希望使用 javascript 等 Web 技术实际开发桌面应用程序,adobe air 可能是您的最佳选择

      【讨论】:

        【解决方案3】:

        没有。这不是一个可以达到的点,因此。 Web 应用程序总是比桌面应用程序更受限制,仅出于安全和隐私的原因,更不用说跨平台敏感性、实施质量以及直接的视觉和设计要求。

        因此,除非您的应用程序可以处理一些非常严重的限制(提升特权的可能性为零,可能限制对文件系统的访问,如果有的话,没有文档交换,速度限制,使用的计算能力限制......) ,这根本不是一个现实的方法。

        编辑:

        通过澄清“视觉和设计要求”位:用户通常期望他们的桌面应用程序具有某种外观和感觉,在多个平台上符合这种外观和感觉是绝对痛苦的;因为无论你走到哪里,所有东西都有不同的尺寸。如果您不打算支持多个平台,那么首先有什么意义?

        换句话说,您最终会遇到这样一种情况:您可以使用 90% 的开发时间来维护样式表,使其在每个平台上看起来都很正常;或者在所有平台上让它变得丑陋(参考:Java)

        【讨论】:

        • 我完全同意。也许谷歌不会因为他们的 chrome 操作系统是基于网络的,所以这不是问题?
        • 我更多的是考虑将 Web 应用程序的服务器部分也放在桌面上,这样就可以使用通常的权限运行。
        • 在你以跨平台方式维护应用程序核心逻辑的地方;将 UI 放在网络浏览器中并不会真正获得任何东西。用户界面很少是棘手的部分。
        • 大多数应用程序不需要超级安全性,尽管它们有很多 Web 应用程序需要(想想银行)。限制对文件系统的访问似乎是个好主意,而计算能力的限制实际上是一个Web 应用程序的争论。
        • @Steve Mc:我想你不太明白这个问题;再读一遍。再次阅读我的答案;我所说的是 a) 出于安全原因,Web 浏览器通常无法访问文件系统,并且 b) 使用 Web 浏览器时,一次操作可以完成多少操作是有限制的;尝试在 JS 中执行会导致浏览器停止操作(参考:停止问题),在“服务器”上执行会导致超时,这意味着您必须花费大量时间重新发明轮子,只是为了让进度条。
        【解决方案4】:

        是的,我们现在可以做到这一点,除了总是有问题的 IE。这在带有 XUL 和 Prism 的 Firefox 中已经有很长一段时间了。我已经看到几个应用程序显示了您所说的功能。它们适用于所有现代浏览器。当然,它们都不能在 IE 中工作。 IE 总是阻碍网络。

        【讨论】:

          【解决方案5】:

          不 - 您可以为用户提供三种特定体验,许多应用程序有理由不混淆它们

          轻量级 - 纯网络,客户端只需要能够运行浏览器 - 这可以进一步细分为移动客户端,运行在挑战环境中的客户端(低 CPU、低带宽等)

          富 Internet 应用程序 - 重量更重的 Web 应用程序 - 不再是传统的 asp.net(我希望如此),因为这些应用程序击败了通信通道(视图状态)和主机服务器(通常回发会导致大量代码在服务器上运行,仅用于 3 行“真正”功能) - 我建议使用 jQuery,因为它有广阔的竞争环境,Silverlight 用于更有限的游乐场,但无可否认的丰富经验,并且想知道什么时候HTML 5 的承诺将真正进入市场

          Thick Client Applications - 自定义代码、访问文件系统、3D 渲染、所有真正需要本地代码和访问本地资源的位

          话虽如此,你的问题的积极意义在于很好地考虑你的应用程序 - 注意你的层之间的分离,特别是关于你的表示层和它与之交谈的逻辑层之间的分离 -

          1) 使用全局通信机制 - 错误,这意味着 REST,因为任何人都可以说它 - 你的所有客户端都可以使用它 - SOAP 不是全局可用的

          2) 不要单一,要面向服务 - 分解你的功能,以便可以直接访问特定的位 - 这意味着 jQuery 和富客户端可以轻松地在需要时轻松访问他们需要的位 - 你想要处于您不在乎客户是谁/什么的位置(对于轻量级的您,对于所有其他人)您创建一次服务并且每个人都以或多或少相同的方式使用它

          3) 为不同的媒体/交付类型提供独特的演示/使服务统一 - (也就是说,对于富客户端,有时需要将服务处理卸载到客户端以节省您的服务器并提高您的可扩展性)

          【讨论】:

            猜你喜欢
            • 2015-07-14
            • 1970-01-01
            • 2012-03-30
            • 1970-01-01
            • 2012-06-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-10-12
            相关资源
            最近更新 更多