【问题标题】:How do you decide if a project should be web-based or desktop-based?您如何决定一个项目是基于 Web 还是基于桌面?
【发布时间】:2010-09-14 21:39:24
【问题描述】:
我在决定我的项目是基于网络(如在网络应用程序中)、基于桌面(桌面应用程序)还是可以同步或连接到云。
我不知道其他人是否会对这个应用程序感兴趣,而且它只适合我,所以我倾向于桌面应用程序。如果出于某种原因,我完成了它,发布了它,并且人们真的喜欢它,我可能会看到让它同步到云端(想想 v2)。但我不确定做出如此彻底的改变有多难,而且我不希望最终得到一些无用的好东西,因为我什至在开始项目之前就做出了错误的选择。
对此有任何指导吗?有什么经验法则或最佳实践吗?有什么亲身经历?
如果语言很重要,我考虑 Java 只是因为我最熟悉它,而且它可以让我轻松地与我的朋友分享它以进行测试,如果我遇到困难并需要其他人的帮助人。
【问题讨论】:
标签:
user-interface
desktop-application
web-applications
【解决方案1】:
我一般会问几个问题:
- 甚至可以在网络上完成吗?不久前我没有涉及图像编辑组件,并且必须是一个网络应用程序。完成这项工作涉及很多痛苦,而桌面应用程序会是更好的选择。
- 我需要从任何地方访问它吗?是的,您可以将其加载到 U 盘上,但在这种情况下,网络更为可行。
- 会有多个用户吗?这可以是任何一种方式,但“长尾”通常是指网络。
- 您想使用什么技术?最新最好的基于 WPF 的 UI?桌面(是的,是的,silverlight,我们不要去那里好吗?)。 Django或其他人的脑死愚蠢的简单用户管理?网络。
- 如果它是一个 Web 应用程序,您是否需要担心 SQL 注入、XSS 等常见的攻击媒介?桌面应用也有自己的问题,但曝光率往往较低。
- 资源密集程度如何? 10 个用户会影响 Web 服务器的性能吗?
- 在桌面上进行版本控制可能会很痛苦,而对于 web 应用程序,每个人都使用相同的版本。不过,这可能会咬你一口,请参阅新 Facebook 用户的回击。
编辑:
- 成本也是一个因素。具有数据库后端的 Web 应用程序通常意味着 Web 服务器。如果您想坚持使用 Microsoft Stack,您将需要价格昂贵的 SQL Server 许可证。开源更便宜,但可能并非在所有情况下都是一种选择。 “提供”桌面应用通常更便宜。
【解决方案2】:
如果您作为网络应用程序发布,则无需将其移植过来。无论您走到哪里,您都可以访问它。
【解决方案3】:
我的选择主要基于 GUI。如果 GUI 会很复杂,并且(需要快速或者需要花费大量时间来处理它的某些方面),那么我将使用桌面。如果它很简单,并且总是可以同时处理小数据集,那么我将使用 Web。
我曾开发过一个作为网络应用程序的应用程序,但显然它更适合桌面。这是一个巨大的失败。我不知道客户如何忍受它,因为我肯定不会使用它。桌面版(花了 6 个多月的时间重新编写)把网页版从水里炸了。
话虽如此,我已经看到了一些不错的网络应用程序。
【解决方案4】:
我只能建议几个相关的因素。您如何确定该因素的答案和权重取决于您和其他情况:
- 您的受众群体是什么?你能控制它们吗?
- 您希望实现的交互有多复杂?
- 您需要近乎实时的数据更新吗?
- 您希望在首次发布后多久更新一次应用程序?
- 您是否期望一组定义明确的客户端平台,还是无法预测?
请注意,您的选择还可以包括 Java WebStart 应用程序,它可以减轻典型桌面应用程序的一些缺点。
【解决方案5】:
我想说大多数应用程序应该是基于桌面的。优点是应用程序更快、更流畅。
只有在有明显好处的情况下,您才应该创建一个 Web 应用程序,例如从任何地方访问。 (如果您的应用需要这样做。)
Web 应用程序的一个缺点也可能是它依赖于开发人员,如果您停止支持它,您的所有用户(如果有的话)将无法再使用它。此外,用户可能不愿意在线存储他们的数据。
最终这取决于您要编写什么样的应用程序。即使您将其创建为桌面应用程序,您也可以稍后为网络重写它。无论如何,通常 2.0 版本的软件几乎需要完全重写。
【解决方案6】:
有时网络可能很好,有时则不是。我们正处于进入网络的新浪潮中,但不要忘记一些事情:
- Web 中的 GUI 由于多个浏览器而更加复杂
- 需要在您的系统上工作的人可能不喜欢整天在浏览器中工作
- 对于某些应用程序(图像编辑、需要大量 CPU 的繁重工作),Web 可能会变慢
- Winform 的 Visual Studio 等 Rapid Gui 比 web 更快
但是web在部署和可移植性方面有很多优势。如果您的系统结构良好,您可以稍后使用 MVC 构建两者或更改为另一个。只要改变你的视觉,你会没事的。
【解决方案7】:
如果这是一个供我的多个用户使用的应用程序,并且具有共享数据,那么您可能无论如何都需要一台服务器。在那种情况下,我会倾向于 Web 应用程序。
否则,您会遇到在桌面和服务器之间同步数据的复杂性。
【解决方案8】:
目前没有列出的两个重要问题:
- 第一个版本是否有任何需要对硬件进行低级访问的功能?
-
未来版本是否有任何需要对硬件进行低级访问的功能?
回答第一个问题很容易,但是考虑一下第二个问题可以让您在以后的道路上不那么头疼。
【解决方案9】:
我的默认选择是使用 Web 解决方案,因为它更容易部署并且通常是多平台的。我使用 winforms 应用程序的唯一时间是当有紧迫的安全、性能或功能问题需要它时。
【解决方案10】:
之前您会编写一个桌面应用程序,因为工具更适合此应用程序,并且您会更快地编写它。人们曾经想要网络应用程序,但最后总是选择桌面。
现在情况不同了,您可以快速轻松地编写 Web 服务,因此没有理由不使用基于 Web 的服务。
基于 Web 的优点是灵活性、可扩展性和易于部署。它不会像桌面应用程序那样响应迅速,但如果您考虑一下您的设计,这并不是什么大问题。