目前哪些 Windows GUI 框架值得学习?

17

我计划编写一个Windows应用程序,以帮助自己完成一些探索性测试任务(笔记、数据生成、缺陷记录),但在选择框架/语言时遇到了困难。我的唯一经验是Web开发,从我所看到的情况来看,WinForms、WPF、Silverlight、Swing等框架都同时被认为是过时和繁荣的,这取决于你问谁。

虽然我的主要目标是创建该应用程序,但显然我想在此过程中学到有用的东西,而不是通过学习永远不会在工作项目中使用的技能。哪种Java或C#框架可以推荐学习?


6
WPF已经过时了吗? - pezcode
1
@pezcode:你还没听说吗?Metro/WinRT现在是最酷的新潮流 - BoltClock
1
@BoltClock 最终所有东西都会变得过时,我还在等待Html变得过时,但这可能不会发生在我的有生之年:) 至于Wpf,它将保持一段时间,因为Metro应用程序并不意味着要取代所有东西。很多人跳过了Vista,这导致Xp的寿命非常长。这在Win8中可能会经常发生,除非他们开始赠送触摸屏:) - Silvermind
4个回答

23

注意:考虑到本回答发布于2012年。自那时以来,有些事情发生了一些变化,例如 Silverlight 已被弃用。


本地应用程序

就业方面:现在,大多数公司(至少是我所在的阿曼和阿联酋的大多数公司)正在慢慢迁移到云端。但仍有一些本地应用程序开发的机会。如今最需要求的框架是(不是WPF),而是Windows Forms

为什么选择老旧的 Windows Forms 而不是令人惊叹的 WPF?一个原因是遗留应用程序。现在,大多数公司仅开始小规模的 GUI 应用程序项目,主要是商业应用程序。对于这种应用,WPF 将非常昂贵,因为他们已经拥有 Windows Forms 经验丰富的工作人员和大量的遗留代码,但对于 WPF,他们将不得不创建一个新的代码库,这是相当冒险的。因此,让你保持就业的最好方法是 Windows Forms。

对于新项目:但是,如果你所说的“值得学习”是指新的、雄心勃勃和富有魅力的项目。那么 WPF 可能是你最好的选择。这真的取决于你的要求。

云端

现在,谈到云。Java FX 和 Silverlight 目前处于领先地位。然而,Java FX 可能有优势,因为它支持更多的平台。但另一方面,Silverlight 拥有 Microsoft 的所有强大资源,并且非常适合 Windows Phone 开发。

比较

为了进行比较,以下是每个工具包提供的内容:

Windows Presentation Foundation:

  • Microsoft 的强大资源
  • 适合创建新的桌面应用程序
  • 炫目的外观
  • 令人惊叹的 API
  • XAML,将设计与逻辑分离的最佳方式
  • 创建适用于云的应用程序(但它们只适用于带有.NET的Windows)
  • Windows Phone可以运行WPF的子集

Windows Forms

  • 曾经拥有Microsoft的力量和资源,现在WPF拥有了这些
  • 适合维护遗留应用程序
  • 如果你是企业家,那么员工经过良好的培训
  • 相当成熟的API
  • 支持比WPF更多的平台(通过Mono)

Java FX

  • 创建适用于云的应用程序
  • 由Oracle支持
  • 相当不错的API
  • 跨平台,在大多数PC上运行,智能手机是一个问题。

Silverlight

  • 创建适用于云的应用程序
  • 由Microsoft支持
  • 相当棒的API
  • XAML
  • 跨平台,在Mac和PC上运行,也可在Windows Phone上运行。

GTK#

  • 跨平台,在大多数PC上运行,不支持智能手机。
  • 由开源社区支持
  • Mono认可
  • 适合创建Gnome应用程序。

Swing

  • 跨平台,在大多数PC上运行,智能手机是一个问题。
  • 相当成熟
  • 适合使用Java2D创建2D游戏

结论

正如你所说:

虽然我的主要目标是创建应用程序,但显然我希望在这样做时学到一些有用的东西,而不是选择永远不会在工作项目中看到的技能。

嗯,如果你不在微软、甲骨文、谷歌等主流公司工作,你最有可能看到的框架是Windows Forms和WPF。至少这是大多数公司在这里使用的。所以我推荐这些。JavaFX和Silverlight也看起来有潜力,并且可能在不久的将来被使用。


你应该提到MoonlightDesktop,虽然它不再受支持,但具有WPF的一些很好的特性,并且可以在浏览器之外工作。我还没有调查过它,但它似乎是可行的。 - ATL_DEV
6
更新:与此同时,Silverlight已经被淘汰。 - Mauro Sampietro

8

WPF。最佳的Windows支持。顺便说一下,它并不过时。


1
它也非常类似于Metro风格的东西。即使您以后想要创建Metro风格的应用程序,您也可以重复使用您从WPF中获得的XAML和大多数架构知识。 - CodesInChaos
这里有Mono项目版本的MoonlightDesktop。虽然它没有得到支持,但它可能具有适当的WPF子集,并且可以在浏览器之外工作。可悲的是,Mono没有意识到他们手头的财富。即使它不像WPF那样强大,他们也可以轻松地将其转变为事实上的图形引擎。 - ATL_DEV

1

Java FX 2.0 看起来非常有前途,如果 swing 对你来说已经过时,现在可以使用它了。请注意,它与之前的版本几乎没有什么共同之处。例如,可以参考这个与swing的简短比较。Oracle说他们计划开放源代码。

现在它还比较新,因此不太可能用于现有应用程序。


鉴于Java FX在桌面上似乎是建立在/使用Swing之上,如果Swing过时了,它就会陷入麻烦。(如果有人对此事感到困惑,那么需要注意的是Swing并没有过时。) - Andrew Thompson
1
据我了解,Javafx 2.0不是基于swing构建的。它们可以(在某种程度上)互操作,但是它们是不同的。例如,Javafx2不使用EDT而是使用另一个特定的线程。之前的版本可能使用swing,我不确定。 - assylias

1
你可以选择将你的应用程序制作成HTML+Javascript,并通过嵌入浏览器引擎(IE或其他)在桌面应用程序上运行。如果你需要本地API,那么有机制可以使其可用于浏览器的Javascript代码。

1
这几乎从来不起作用。一次编写,到处运行通常会在所有支持的平台上提供可怕的用户体验。HTML/JS开发起来太过繁琐。 - ATL_DEV
1
你完全误解了我的意思。我并没有建议在每个浏览器上运行它。我建议嵌入特定的浏览器引擎(如IE),并针对该引擎进行编写。开发是否繁琐,这是一个取决于口味的问题。 - Kyberias
1
我只想指出这种说法的荒谬之处,考虑到我们现在生活在Node和Electron的世界中。嘿 - Aslan French

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接