用户界面-你如何决定一个项目是基于网络还是基于桌面



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

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

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

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

我通常会问几个问题:

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

编辑:

  • 成本也是一个因素。具有数据库后端的web应用程序通常意味着web服务器。如果你想坚持使用Microsoft Stack,你需要SQL Server的许可证,这可能会很昂贵。开源更便宜,但可能不是所有情况下都可以选择。"服务"桌面应用程序通常更便宜

如果您以web应用程序的形式发布,则不必对其进行移植。无论你走到哪里,你都可以访问它。

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

我曾开发过一款作为网络应用程序的应用程序,当时它显然更适合桌面。这是一次巨大的失败。我不知道客户是如何忍受它的,因为我肯定不会使用它。桌面版(花了6个多月的时间重写)把网络版搞得一团糟。

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

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

  • 你的听众是什么?你能控制他们吗
  • 您期望实现的交互有多复杂
  • 您是否需要近乎实时的数据更新
  • 您希望在第一次发布后多久更新一次应用程序
  • 你希望有一套定义明确的客户端平台吗?或者你不能预测吗

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

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

只有当web应用程序有明显的好处时,才应该创建它,比如从任何地方访问。(如果这对你的应用程序是必要的。)

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

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

有时web可能很好,有时则不然。我们正处于网络上的新浪潮中,但不要忘记几件事:

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

但是web在部署性和可移植性方面有很多优点。如果你的系统结构良好,你可以两者兼而有之,或者稍后用MVC构建一些东西来更改。只要改变你的视觉效果,你就会好起来的。

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

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

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

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

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

以前你会写一个桌面应用程序,因为工具更适合这样做,而且写得更快。人们曾经想要网络应用程序,但最终总是选择桌面应用程序。

现在情况不同了,你可以同样快速、轻松地编写web服务,所以没有理由不使用web。

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

相关内容

  • 没有找到相关文章

最新更新