c# - 目前有哪些Windows GUI框架值得学习?

标签 c# java windows user-interface

<分区>

我打算编写一个 Windows 应用程序来帮助自己完成一些探索性测试任务(记笔记、数据生成、缺陷记录),但我一直停留在选择框架/语言的早期阶段。我唯一的经验是 Web 开发,据我所知,WinForms、WPF、Silverlight、Swing 等都同时过时并蓬勃发展,具体取决于您询问的对象。

虽然我的主要目标是创建应用程序,但显然我想在这样做的同时学习一些有用的东西,而不是学习一些在工作项目中永远不会看到的技能。人们会推荐学习哪些 Java 或 C# 框架?

最佳答案

注意:请考虑发布此答案的时间(2012 年)。从那以后,事情发生了一些变化,例如 Silverlight已被弃用。


原生应用

就业: 好吧,如今大多数公司(至少是我居住的阿曼和阿联酋的大多数公司)都在慢慢迁移到云端。然而,原生应用程序开发仍有一些机会。现在最苛刻的框架是,(不..不是WPF),它是Windows Forms !

为什么使用普通的旧 Windows 窗体而不是很棒的 WPF?一个原因是,遗留应用。现在大多数公司只开始小规模的 GUI 应用程序项目,主要是业务应用程序。为此,WPF 将非常昂贵,因为他们已经拥有在 Windows 窗体方面经验丰富的工作人员和大量遗留代码,但是对于 WPF,他们将不得不创建一个新的代码库,这是相当冒险的。因此,让您保持工作的最佳方式是 Windows 窗体。

对于新项目:但是,如果说“值得学习”,您的意思是新的、雄心勃勃的和迷人的。那么 WPF 可能是您的最佳选择。这实际上取决于您的要求。

云端

现在,对于云。 Java FX 和 Silverlight 目前都在正面交锋。然而,Java FX 可能有优势,因为它支持更多的平台。但话又说回来,Silverlight 背后有 Microsoft 的所有力量和资源,它是 Windows Phone 开发的理想选择。

比较

为了进行比较,以下是每个工具包的用途:

Windows Presentation Foundation:

  • Microsoft 的力量和资源
  • 非常适合创建新的桌面应用程序
  • 养眼
  • 很棒的 AP​​I
  • XAML,将设计与逻辑分开的最佳方式
  • 为云创建应用程序(但它们只能在带有 .NET 的 Windows 上运行)
  • Windows Phone 可以运行 WPF 的一个子集

Windows 窗体:

  • 曾经拥有微软的权力和资源,现在WPF拥有了
  • 非常适合维护遗留应用程序
  • 训练有素的员工队伍,如果您是企业家
  • 相当成熟的API
  • 支持比 WPF 更多的平台(通过 Mono)

Java 外汇:

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

银光:

  • 为云创建应用
  • 由微软支持
  • 非常棒的 AP​​I
  • XAML
  • 跨平台,在 Mac 和 PC 上运行,在 Windows Phone 上运行。

GTK#:

  • 跨平台,可在大多数 PC 上运行,不在智能手机上运行。
  • 得到开源世界的支持
  • Mono 认可
  • 非常适合为 Gnome 创建应用程序。

Swing :

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

结论

如你所说:

While my main aim is to create the app, obviously I'd like to learn something useful while doing so rather than picking up skills with something that's never going to be seen on a project at work.

嗯,您最有可能在工作中看到的框架(如果您不了解 Microsoft、Oracle、Google 等主流公司的话)是 Windows Forms 和 WPF。至少这是大多数公司在这里使用的。所以这些就是我推荐的。 JavaFX 和 Silverlight 看起来也很有潜力,可能会在不久的将来使用。

关于c# - 目前有哪些Windows GUI框架值得学习?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752375/

相关文章:

c# - Rhino 模拟列表约束

c# - DataGridView 检查是否选择了任何行并且它不是 NewRow

c# - LINQ 中的动态 where 子句?

windows - Windows 上的 Git, "Out of memory - malloc failed"

c# - 如何渲染和检测视线?

java - android 写入磁盘不可靠 - 写入 file.length !=expected.length

java - Vaadin Binder 中的上传组件,例如粗略编辑器

java - Java中如何正确使用volatile

windows - 如何在 Jenkins 中运行bat文件

windows - 每个用户进程的 CPU、磁盘和内存使用情况