【问题标题】:How do you decide if a project should be web-based or desktop-based?您如何决定一个项目是基于 Web 还是基于桌面?
【发布时间】:2010-09-14 21:39:24
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您在三个选项中做出选择:1. 基于网络(如在网络应用中) 2. 基于桌面(桌面应用程序),3. 可以同步或连接到的桌面应用程序云端。您是否考虑过第 4 个选项:基于 Web 的应用程序 that can be used offline,甚至可能是 distributed as a desktop application

标签: 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 的优点是灵活性、可扩展性和易于部署。它不会像桌面应用程序那样响应迅速,但如果您考虑一下您的设计,这并不是什么大问题。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-08-03
                      • 2012-05-10
                      • 2015-12-27
                      • 1970-01-01
                      • 2014-01-28
                      • 1970-01-01
                      相关资源
                      最近更新 更多