您如何确定项目是基于Web还是基于桌面?

时间:2008-10-02 18:43:18

标签: user-interface desktop-application web-applications

我无法确定我是否希望我的项目基于网络(如在网络应用中),基于桌面(桌面应用程序)或可以同步或连接到桌面应用程序的桌面应用程序云。

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

对此有什么指导吗?任何经验法则或最佳做法?任何个人经历?

如果语言很重要,我只是因为我最熟悉它而考虑Java,并且很容易让我与我的朋友分享它进行测试,如果我遇到困难并需要其他人的帮助人

10 个答案:

答案 0 :(得分:17)

我通常会问几个问题:

  • 甚至可以在网上完成吗?我不久前做过的事情涉及图像编辑组件,并且必须是一个Web应用程序。这项工作涉及很多痛苦,桌面应用程序将是一个更好的方法。
  • 我是否需要从任何地方访问它?是的,你可以把它装在拇指驱动器上,但在这种情况下网络更加可行。
  • 会有多个用户吗?这可能是两种方式,但“长尾”通常意味着网络。
  • 你想用什么技术?最新最好的基于WPF的用户界面?桌面(是啊是的,银光,让我们不去那儿好吗?)。大脑死了傻瓜容易管理Django或其他人?幅。
  • 如果它是一个网络应用程序,你需要担心常见的攻击媒介,如SQL注入,XSS等?桌面应用程序也有自己的问题,但往往曝光率较低。
  • 资源密集程度如何? 10个用户会破坏Web服务器的性能吗?
  • 在桌面上进行版本控制可能会很麻烦,而对于webapp,每个人都使用相同的版本。这可能会让你感到困惑,看看新Facebook用户的回击。

编辑:

  • 成本也是一个因素。具有数据库后端的Web应用程序通常表示Web服务器。如果您想坚持使用Microsoft Stack,那么您需要SQL Server的许可证才能获得高价。开源更便宜,但在所有情况下可能都不是一个选择。 “服务”桌面应用程序通常更便宜。

答案 1 :(得分:4)

如果您作为网络​​应用发布,则无需将其移植。无论你去哪里,你都可以访问它。

答案 2 :(得分:4)

我主要基于GUI做出选择。如果GUI将变得复杂,并且(需要快速或将需要花费大量时间来处理它的方面),那么我将使用桌面。如果它很简单,并且将始终使用小数据集,那么我将使用Web。

我已经开发过一款作为网络应用制作的应用,显然它更适合桌面应用。这是一次巨大的失败。我不知道客户如何忍受它,因为我当然不会使用它。桌面版本(重新编写需要6个月的时间)将网络版本从水中吹走。

话虽这么说,我看到了一些不错的网络应用程序。

答案 3 :(得分:3)

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

  • 你的观众是什么?你对它们有什么控制权吗?
  • 您希望实施的互动有多复杂?
  • 您是否需要近乎实时的数据更新?
  • 您希望在首次发布后更新应用程序的频率是多久?
  • 您是否期望一组明确定义的客户端平台,或者您能否预测到这一点?

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

答案 4 :(得分:3)

我会说大多数应用程序应该基于桌面。优点是更快,更流畅的应用程序。

如果Web应用程序有明显的好处,您应该只创建一个Web应用程序,例如从任何地方访问。 (如果你的应用需要这个。)

Web应用程序的缺点也可能是它依赖于开发人员,如果您退出支持它,所有用户(如果您有任何用户)将无法再使用它。此外,用户可能不愿意在线存储数据。

最终,这取决于您要编写的应用程序类型。即使您将其创建为桌面应用程序,您也可以稍后为Web重写它。无论如何,2.0版本的软件通常需要几乎完全重写。

答案 5 :(得分:1)

有时网络可以很好,有时候不是。我们正处于网络新浪潮中,但不要忘记一些事情:

  • 由于多个浏览器
  • ,网页中的GUI更复杂
  • 需要在您的系统上工作的人可能不喜欢在浏览器中工作一整天
  • 某些应用程序的Web速度较慢(图像编辑,需要大量CPU的繁重工作)
  • 像Visual Studio for winform的Rapid Gui比网络更快

但是web在部署和可移植性方面有很多优势。如果你的系统结构合理,你可以在以后使用MVC构建的东西制作两个或更改为一个。只需改变视觉效果就可以了。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

到目前为止,列表中没有两个重要问题:

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

回答第一个问题非常容易,但考虑到第二个问题可以为您节省一些麻烦。

答案 8 :(得分:0)

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

答案 9 :(得分:-2)

以前你已经编写了一个桌面应用程序,因为工具更好,你可以更快地编写它。人们过去想要网络应用程序,但总是最终使用桌面。

如今情况有所不同,您可以快速轻松地编写网络服务,因此没有理由不去基于网络。

基于Web的优势在于灵活性,可扩展性和易部署性。它不像桌面应用程序那样具有响应能力,但如果你考虑一下你的设计,这不是一个问题。