14

我无法决定我的项目是基于 Web(如在 Web 应用程序中)、基于桌面(桌面应用程序)还是可以同步或连接到云的桌面应用程序。

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

对此有任何指导吗?有什么经验法则或最佳实践吗?有什么亲身经历吗?

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

4

10 回答 10

17

我一般会问几个问题:

  • 它甚至可以在网络上完成吗?不久前我没有涉及图像编辑组件,并且必须是一个网络应用程序。完成这项工作涉及很多痛苦,而桌面应用程序将是一个更好的方法。
  • 我需要从任何地方访问它吗?是的,您可以将其加载到拇指驱动器上,但在这种情况下,网络更为可行。
  • 会有多个用户吗?这可以是任何一种方式,但“长尾”的东西通常意味着网络。
  • 你想用什么技术?最新最好的基于 WPF 的 UI?桌面(是的,是的,silverlight,我们不要去那里好吗?)。Django或其他人的脑死愚蠢的简单用户管理?网络。
  • 如果它是一个 Web 应用程序,您是否需要担心 SQL 注入、XSS 等常见的攻击媒介?桌面应用程序在这里也有自己的问题,但曝光率往往较低。
  • 它的资源密集程度如何?10 个用户会扼杀 Web 服务器的性能吗?
  • 在桌面上进行版本控制可能会很痛苦,而对于 webapp,每个人都在同一个版本上。不过,这可能会咬你一口,请参阅新 Facebook 用户的回击。

编辑:

  • 成本也可能是一个因素。具有数据库后端的 Web 应用程序通常意味着 Web 服务器。如果您想坚持使用 Microsoft Stack,您将需要价格昂贵的 SQL Server 许可证。开源更便宜,但可能并非在所有情况下都是一种选择。“服务”桌面应用程序通常更便宜。
于 2008-10-02T18:51:13.517 回答
4

如果您作为网络​​应用程序发布,则不必将其移植过来。无论您走到哪里,您都可以访问它。

于 2008-10-02T18:47:22.670 回答
4

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

我曾开发过一个作为网络应用程序制作的应用程序,显然它更适合桌面。这是一个巨大的失败。我不知道客户如何忍受它,因为我肯定不会使用它。桌面版(花了 6 个多月的时间重新编写)将网络版从水中吹走了。

话虽如此,我已经看到了一些不错的网络应用程序。

于 2008-10-02T18:50:58.713 回答
3

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

  • 你的听众是什么?你对他们有控制权吗?
  • 您期望实现的交互有多复杂?
  • 您需要近乎实时的数据更新吗?
  • 您希望在首次发布后多久更新一次应用程序?
  • 您期望一组定义明确的客户端平台,还是无法预测?

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

于 2008-10-02T18:53:05.090 回答
3

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

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

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

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

于 2008-10-02T19:00:23.167 回答
1

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

  • 由于多个浏览器,Web 中的 GUI 更加复杂
  • 需要在您的系统上工作的人可能不喜欢整天在浏览器中工作
  • 某些应用程序的 Web 可能会变慢(图像编辑,需要大量 CPU 的艰苦工作)
  • 像 Visual Studio 这样的 Rapid Gui for winform 比 web 更快

但是web在部署和可移植性方面有很多优势。如果您的系统结构良好,您可以稍后使用 MVC 构建两者或更改为另一个。只要改变你的视觉,你会没事的。

于 2008-10-02T18:58:47.133 回答
1

如果这是一个供我的多个用户使用的应用程序,并且具有共享数据,那么您可能无论如何都需要一台服务器。在这种情况下,我会倾向于 Web 应用程序。否则,您会遇到在桌面和服务器之间同步数据的复杂性。

于 2008-10-02T19:25:55.383 回答
1

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

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

回答第一个问题很容易,但考虑一下第二个问题可以让你在以后的路上不那么头疼。

于 2008-10-02T19:31:08.837 回答
0

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

于 2008-10-02T18:48:45.503 回答
-2

以前您已经编写了一个桌面应用程序,因为工具更好,而且您编写它的速度更快。人们曾经想要 Web 应用程序,但最终总是使用桌面。

现在情况不同了,您可以快速轻松地编写 Web 服务,因此没有理由不采用基于 Web 的方式。

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

于 2008-10-02T18:49:49.870 回答