如何在开发 Web 应用程序和桌面应用程序之间做出决定

Jon*_*Tan 5 php c# wpf desktop-application vs-web-application-project

我是一家制造公司的软件工程师实习生,他们希望我为公司开发应用程序。然而,他们倾向于使用 Web 应用程序,我想知道桌面应用程序是否更适合这份工作。因此,我一直在谷歌搜索并查看 stackoverflow,以找出桌面应用程序和 Web 应用程序之间的优缺点。以下基本上是我发现的:

快速免责声明,我有 C# 和 WPF 的背景,所以我有点偏见,因为开发桌面应用程序对我来说更容易。我没有网络经验,所以在那个领域我没有什么可以真正谈论的,这就是为什么我想更多地了解这个应用程序是否更适合作为网络应用程序或桌面应用程序。我绝对愿意学习 PHP 和 Web 开发以扩展我的能力。我已经开始(有点)研究使用 PHP7 和 Laravel 框架开发 Web 应用程序。

桌面应用程序的优点:

  1. 通常比 Web 应用程序快(假设 Web 应用程序将执行复杂的查询、计算等,而不仅仅是显示标记)
  2. GUI 的开发速度更快
  3. 更安全,因为桌面应用程序默认是私有的。
  4. 有更多可用控件为用户提供更丰富的交互体验(或者至少,与基于 Web 的应用程序相比,这些控件在基于桌面的应用程序上更容易/更快地实现)
  5. 可以利用用户硬件。

桌面应用程序的缺点:

  1. 使用/部署受系统限制(但是,这应该不是问题,因为我们所有的系统都是基于 Windows 的。)
  2. 更新和安装必须手动实施。
  3. 如果每个客户端桌面都有一个数据库连接,则扩展性不好,因为数据库负载很重。(但是,情况可能不会如此,因为我们的用户不会超过 500 个)。

Web应用程序的优点

  1. 跨平台(不需要处理不同的操作系统)所以它很容易移植
  2. 开发快速简便
  3. 部署很容易,因为更新是自动的和服务器端。
  4. 大型社区支持和可用框架。

Web 应用程序的缺点

  1. 更大的开销(由于需要通过互联网传输数据,应用程序往往会变慢)。
  2. 需要处理不同的浏览器。Javascript 很可能需要在一个 Web 平台(Chrome、Firefox 等)上进行调整以使其完美,而在其他平台上则不完美。(不过,这不是什么大不了的事)。
  3. 安全是一个问题,因为数据将是公开的。

请让我知道上述任何内容是否已过时(我发现的大多数帖子都来自 2011 年或更早)或错误。此外,如果有任何其他利弊要考虑。

转到应用程序说明....

公司背景:我们每天制造和加工数十种不同的零件。对于每种类型的零件,在加工 X 量零件后,都需要取样进行检查。因此,例如,零件 Y 每 120 分钟抽取 3 个样本进行检查(因为机器通常在 120 分钟内完成处理 X 个数量)。然后将检查结果(测量数据)存储在数据库(MySQL 数据库)中。

应用程序目的的一般摘要:

  1. 查看我们设计的所有部件的原理图(我们将所有原理图以 pdf 格式存储在网络驱动器上,因此这只是从驱动器中提取请求的特定 pdf 并将其显示在应用程序上)。
  2. 查看/更新公司所有机器的状态(它们在加工什么部件,它们是否在线/离线等)。某个用户(检查员)将使用此应用程序来更新机器状态/信息。然后另一个用户(操作员)将使用该应用程序查看状态。
  3. 监控零件检查。因此,对于正在处理的每台机器和零件,都会有一个计时器,让操作员用户知道何时需要提交某个零件进行检查。提交零件后,检查员将收到检查零件的通知,在让应用程序知道他们完成了检查后,计时器将重新启动,让操作员知道下次需要提交零件的时间。
  4. 该应用程序将根据从检查结果获得的零件测量值计算统计数据(例如,Cpk 值),并将统计数据与图形/图表一起显示。

我希望我已经足够清楚地解释了所有这些。其他一些需要注意的事情,据我所知,用户不需要远程访问。此应用程序几乎只能在公司网站上使用。此外,该公司想要一个 web 应用程序的最初原因是因为运营商将使用平板电脑来运行该应用程序,而他们购买的平板电脑是基于安卓的原始平板电脑。但是,他们决定改用 Windows Surface 平板电脑,因此现在可以使用 WPF 应用程序。

说了这么多,我真的在寻找关于有更多经验的人会推荐什么路线的意见。我还在上大学,所以请原谅我缺乏知识/经验。在 Web 应用程序和桌面应用程序之间做出决定时,我还应该考虑什么?

以下是我在思考这个话题时看到的一些页面:

  1. Web 应用程序相对于桌面应用程序的优势
  2. https://www.quora.com/How-much-different-is-it-to-build-a-web-application-vs-a-desktop-application
  3. https://www.quora.com/What-are-the-advantages-and-disadvantages-of-web-based-application-development-vs-desktop-application-development

有更多的 stackoverflow 页面,但上面列出的页面几乎包含了其他页面所说的所有内容。

编辑:到目前为止,似乎网络应用程序正在获胜(我一点也不介意,我实际上很高兴能够根据我所听到的内容开发一个网络应用程序)。有没有人更愿意做一个桌面应用程序?如果是这样,为什么?

Loz*_*ace 4

我本质上对网络应用程序有偏见。由于浏览器的原因,它们很难正确,它们通常是不安全的(尽管是偶然的)。该平台很糟糕(JavaScript 和来自随机人员/组织的无数库),“一切都是字符串”。我还可以继续说下去。

然而,无可否认,它是接触广泛的公众受众并允许持续更新的最佳平台。

在企业环境中,这些优势确实会消失,但并非完全消失。例如,更新通常可以通过将所有 .exe 和 DLL 存储在共享目录中来实现。正如您所说,您可以使用 Windows 平台更快、更便宜地构建更丰富的 UI。

关于您的架构,在类似情况下对我有用的东西是拥有一个 Windows 前端,但也有业务逻辑、数据访问(连接池)和在无状态 Web 服务器上进行处理的能力(或2)通过 Web 服务从 UI 访问(您选择的协议 - 由于 WCF 和 WSDL,我更喜欢 SOAP,但很多人不喜欢)。

这样可以实现集中的数据访问,并提供一个放置一次性批处理作业或计算的位置,然后可以共享这些作业或计算。它还具有的优点是,如果您需要做一些真正密集的事情,则并非每台客户端计算机都必须具备该功能。

您的情况似乎适合此模型,但由于缺乏大量内部知识,这主要是意见,但可能是值得考虑的意见。