代码之家  ›  专栏  ›  技术社区  ›  Thomas Owens

你如何决定一个项目是基于网络还是基于桌面?

  •  14
  • Thomas Owens  · 技术社区  · 16 年前

    我很难决定我的一个项目是基于网络的(如在网络应用程序中),基于桌面的(桌面应用程序),还是可以同步或连接到云的桌面应用程序。

    我不知道其他人是否会对这个应用程序感兴趣,它只会对我感兴趣,所以我倾向于桌面应用程序。如果出于某种原因,我完成了它,发布了它,人们真的喜欢它,我可能会看到让它与云同步(想想v2)。但我不确定要做出这样一个彻底的改变有多困难,我也不想最终得到一些无用的好东西,因为在我开始这个项目之前我做了一个糟糕的选择。

    对此有什么指导吗?有经验法则或最佳实践吗?有个人经历吗?

    如果语言很重要,我只想到Java,因为我最喜欢它,而且它很容易让我和我的朋友分享测试,如果我陷入困境,需要别人的帮助。

    10 回复  |  直到 16 年前
        1
  •  17
  •   swilliams    16 年前

    我通常会问几个问题:

    • 甚至可以在网上完成吗?不久前,我有一个图片编辑组件,必须是一个网络应用。要完成这项工作需要付出很大的代价,而桌面应用程序将是更好的选择。
    • 我需要从任何地方访问它吗?是的,您可以将其加载到一个拇指驱动器上,但是在这种情况下,Web更为可行。
    • 会有多个用户吗?这可以是任何一种方式,但“长尾巴”的东西通常意味着网络。
    • 你想用什么技术?最新和最棒的基于WPF的用户界面?桌面(是的,是的,Silverlight,我们不去那里,好吗?)你的大脑死了,愚蠢,很容易管理django或其他人?网状物。
    • 如果它是一个Web应用程序,您是否需要担心常见的攻击向量,如SQL注入、XSS等?桌面应用也有它自己的问题,但往往有较少的曝光。
    • 资源密集度如何?10个用户会破坏Web服务器的性能吗?
    • 在桌面上进行版本控制是一件痛苦的事情,而使用webapp,每个人都使用相同的版本。不过,这会咬你一口,看看Facebook新用户的回击。

    编辑:

    • 成本也是一个因素。具有数据库后端的Web应用通常意味着Web服务器。如果你想坚持使用微软的软件栈,你就需要获得昂贵的SQL Server许可证。开放源码更便宜,但并非所有情况下都可以选择。”提供“桌面应用程序通常更便宜。
        2
  •  4
  •   madcolor    16 年前

    如果你作为一个网络应用发布,你就不需要移植它了。无论你走到哪里,你都可以接触到它。

        3
  •  4
  •   Danimal    16 年前

    我的选择主要基于GUI。如果图形用户界面会很复杂,并且(需要很快,或者会有一些需要花费大量时间处理的方面),那么我将使用桌面。如果它很简单,并且总是有小的数据集可以同时使用,那么我将使用Web。

    我曾经开发过一个作为网络应用的应用程序,很明显它更适合桌面。这是一个巨大的失败。我不知道顾客是怎么忍受的,因为我肯定不会用它。桌面版(花了6个多月的时间重新编写)把网络版吹出了水面。

    也就是说,我看到了一些不错的网络应用程序。

        4
  •  3
  •   David M. Karr    16 年前

    我能建议的就是几个相关的因素。您如何确定该因素的答案和权重取决于您和其他情况:

    • 你的观众是什么?你能控制他们吗?
    • 您期望实现的交互有多复杂?
    • 是否需要近乎实时的数据更新?
    • 您希望在第一次发布之后多久更新一次应用程序?
    • 您期望一组定义良好的客户机平台,还是不能预测这一点?

    注意,您的选择还可以包括Java WebStaseApple应用程序,这减轻了典型桌面应用程序的一些缺点。

        5
  •  3
  •   Georg Schölly Crazy Developer    16 年前

    我认为大多数应用程序应该是基于桌面的。其优点是更快、更流畅的应用程序。

    只有当Web应用程序有明显的好处时,您才应该创建它,比如从任何地方访问。(如果你的应用程序需要的话。)

    Web应用程序的一个缺点也可能是它依赖于开发人员,如果您停止支持它,您的所有用户(如果您有)就不能再使用它了。此外,用户可能不愿意在线存储数据。

    最终,这取决于您想要编写哪种应用程序。即使你创建它作为一个桌面应用,你可以稍后重写它为网络。通常,2.0版本的软件需要几乎完全重写。

        6
  •  1
  •   Patrick Desjardins    16 年前

    有时候网络是好的,有时候不是。我们正处在一个新的浪潮中,进入网络,但不要忘记一些事情:

    • 由于有多个浏览器,Web中的图形用户界面更加复杂。
    • 需要在系统上工作的人可能不喜欢整天在浏览器中工作。
    • 对于某些应用程序(图像编辑、需要大量CPU的硬作业),Web可能会变慢。
    • 类似于图形用户界面的Visual Studio for WinForm比Web更快

    但是网络在部署和可移植性方面有很多优势。如果您的系统结构良好,您可以在以后使用MVC构建的东西同时进行这两种操作,或者更改为一种操作。只要改变你的视力,你就没事了。

        7
  •  1
  •   Craig Fisher    16 年前

    如果这是一个应用程序,要使用我的多个用户和共享数据,您可能还是需要一个服务器。在这种情况下,我倾向于使用Web应用程序。 否则,在桌面和服务器之间同步数据会很复杂。

        8
  •  1
  •   Ryan    16 年前

    到目前为止,清单上没有列出两个重要问题:

    • 第一个版本是否有任何需要低级别硬件访问的功能?
    • 威尔 未来 版本有需要低级别硬件访问的功能吗?

    回答第一个问题很容易,但是考虑一下第二个问题可以让你省去路上的一些头痛。

        9
  •  0
  •   Danimal    16 年前

    我的默认选择是使用Web解决方案,因为它更容易部署,而且通常是多平台的。我唯一一次使用WinForms应用程序是因为有迫切的安全、性能或功能问题需要它。

        10
  •  -2
  •   gbjbaanb    16 年前

    以前你会写一个桌面应用程序,因为这个工具更好,你会写得更快。人们曾经想要网络应用,但最终总是使用桌面。

    现在情况不同了,你可以很快很容易地编写一个WebService,所以没有理由不使用基于Web的方法。

    基于Web的优点是灵活性、可扩展性和易于部署。它不会像桌面应用程序那样反应灵敏,但如果你考虑一下你的设计,这就不是什么问题了。