C# 为什么公司仍然使用Windows窗体和WPF应用程序而不是web应用程序?

C# 为什么公司仍然使用Windows窗体和WPF应用程序而不是web应用程序?,c#,asp.net,wpf,desktop-application,C#,Asp.net,Wpf,Desktop Application,为什么公司仍在使用和应用程序而不是web应用程序 我不想讨论。我只想知道原因,因为在过去的几天里,我对我的工作(Windows窗体/WPF)缺乏信心,我认为这是改变技术/工作的好方法。公司仍在使用Windows窗体,因为它允许在低于web应用程序的级别上与Windows进行通信 WPF还允许更大的数据绑定,并有更简单的工具来处理复杂的任务。Windows应用程序具有最佳的用户界面和功能,但可供最小的用户使用,而web应用程序的用户界面功能最有限,但是,它们是最广泛的受众 这取决于公司在web应用

为什么公司仍在使用和应用程序而不是web应用程序


我不想讨论。我只想知道原因,因为在过去的几天里,我对我的工作(Windows窗体/WPF)缺乏信心,我认为这是改变技术/工作的好方法。

公司仍在使用Windows窗体,因为它允许在低于web应用程序的级别上与Windows进行通信


WPF还允许更大的数据绑定,并有更简单的工具来处理复杂的任务。

Windows应用程序具有最佳的用户界面和功能,但可供最小的用户使用,而web应用程序的用户界面功能最有限,但是,它们是最广泛的受众

这取决于公司在web应用程序和Windows应用程序之间做出选择,它们必须开发这些应用程序以实现增长…

一些可能的原因:

  • 桌面应用程序可以很容易地脱机使用(很明显,这正在随着新东西的出现而改变)
  • 有些事情在桌面应用程序中更简单(想想复杂的3D可视化,假设你可以编写一些Flash来完成这些事情)
  • 您可能需要访问本地文件/系统信息/无法从web应用程序访问的其他应用程序
  • 您可以通过本机代码比通过JavaScript更有效地使用本地处理能力(同样,随着浏览器性能的提高而改变)
  • 桌面应用程序所需的技能范围通常小于web(想想C#vs HTML、CSS、JavaScript、Flash、HTTP等),因此它可能适合可用的开发资源

  • 我们仍然使用WinForms和WPF,因为我们需要处理大量数据并需要快速的性能。还有一件事:我们不想将数据存储在web服务器(或云中)

    Windows应用程序与外部世界的联系更加安全。

    在我的例子中,我开发桌面应用程序是因为我需要访问本地资源。 它可以是文件系统、数据库、本机应用程序API、COM组件等

    唯一的web解决方案是运行内部web服务器,但我的大多数客户没有IT人员来维护它。只向客户发送EXE文件要容易得多(例如通过)


    我希望使用Silverlight进行分发。Silverlight 4增加了对本地COM资源的访问,但对本机代码的访问似乎很遥远。

    好吧,Windows或WPF应用程序在许多方面都更强大,开发更丰富、响应更迅速的应用程序的速度也更快。Web应用程序只需要从几乎任何地方登录,但您通常会发现它更笨重,功能更有限。那么,您想要一个功能强大、易于使用的web连接的Windows应用程序吗?简单,只需创建onw。我们做到了,并且我们可以部署一个功能全面的基于Windows的应用程序(以及WPF,它具有惊人的图形和功能),我们的客户可以从任何地方以web应用程序的速度登录,但不需要任何瘦客户端或昂贵的网络。在我的投票中,坚持使用windows应用程序,而放弃一个对那些想在这项技术上开发的人几乎没有帮助的web解决方案。已经说过,web是唯一的方式,这取决于您正在尝试做什么,但如果您正在交付商业产品,请不要再说了。

    WPF和Windows窗体在许多用例中开始失去相关性。只有在Windows/Windows服务器生态系统的深处,它们仍然是引人注目的存在。例如,如果不使用WPF或WinForms,您仍然无法编写专业级的Office插件

    在一个更一般的用例中,比如一个经典的CRUD应用程序,你可以使用Angular或React编写的应用程序。如果您需要操作系统级别的权限,那么很容易转换为Ionic、React Native或Electron,并获得深入的功能。有时,功能确实超过了您从WPF或WinForms“开箱即用”获得的功能(例如,电子烤面包机更具功能,因为它利用了下一代HTML5通知)。编码体验更多的是REPL,您必须编写的实际代码比WPF或WinForms少很多礼仪性(IMHO),所以这是一个很大的吸引力


    有趣的是,VS代码是用电子写成的。事实上,主流电子应用的数量正在显著增加

    没有银弹语言/部署-否则我们都会这么做。不同的业务问题需要不同的实现机制来解决。我们还要补充一点,Windows应用程序在使用的工具方面要强大得多。要制作一个同样出色的web应用程序,您需要设置大量AJAX内容来模拟桌面客户端上免费提供的内容。(如验证的即时反馈等)我曾经决定向一家需要解决问题的小公司交付win应用程序,而不是web应用程序。他们以前有一个web应用程序,并且喜欢新系统,该系统允许他们使用快捷方式和多文档窗口进行拖放。。尝试使用web应用程序做任何事情就像在圆孔中装一个方形的盒子。不要告诉我你正在本地桌面上存储所有数据!你不使用数据库吗?我们将数据存储在本地数据库中,而不是云中。但是数据库必须在本地机器上,否则你无法在路上或向客户提供数据。每个工具都有它的用途。我的公司也使用本地数据库,但对我们来说,这是一个错误的决定。它使许多事情变得过于复杂,而它所提供的好处寥寥无几。