控制台应用程序 Windows 窗体应用程序 WPF应用程序,请问这三个有啥区别呀???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制台应用程序 Windows 窗体应用程序 WPF应用程序,请问这三个有啥区别呀???相关的知识,希望对你有一定的参考价值。

一、指代不同

1、控制台应用程序:是为了兼容DOS程序而设立的,这种程序的执行就好像在一个DOS窗口中执行一样,没有自己的界面。

2、Windows 窗体应用程序:在用户计算机上运行的客户端应用程序,可显示信息、请求用户输入以及通过网络与远程计算机进行通信。

3、WPF应用程序:是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。

二、功能不同

1、控制台应用程序:就是能够运行在MS-DOS环境中的程序。控制台应用程序通常没有可视化的界面,只是通过字符串来显示或者监控程序。

2、Windows 窗体应用程序:Windows窗体充分利用公共语言运行库的安全特性。在浏览器中运行的不可信控件和用户硬盘上安装的完全可信的应用程序。

3、WPF应用程序:提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。


三、特点不同

1、控制台应用程序:常常被应用在测试、监控等用途,用户往往只关心数据,不在乎界面。

2、Windows 窗体应用程序:应用程序开发中最常见的情形之一是在窗体上显示数据。Windows窗体对数据库处理提供全面支持。可以访问数据库中的数据,并在窗体上显示和操作数据。

3、WPF应用程序:是基于DirectX引擎的,支持GPU硬件加速,在不支持硬件加速时也可以使用软件绘制。


参考资料来源:百度百科-WPF

参考资料来源:百度百科-windows窗体应用程序

参考资料来源:百度百科-控制台程序

参考资料来源:

参考技术A 控制台程序没有图形界面,不能与鼠标操作,只能显示字符,输入输出形式单一。

WPF开发于WinForm之后,从技术发展的角度,WPF比WinForm先进是不容置疑的。我觉得WPF相比于WinForm有下面的一些较好的特性:
解决Window Handle问题
  
在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等。而每个控件或Grid cell都是一个小窗口,会使用一个Window handle,尽管控件厂商提供了很多优化办法,但还是会碰到Out of Memory或"Error Create Window handle",而导致程序退出。
  
WPF彻底改变了控件显示的模式,控件不在使用窗口,也就不会占用Window handle。理论上,如果一个WPF只有一个主窗口的话,WPF只会使用一个Window handle(如果忽略用于Dispatcher的隐藏窗口的话)。所以WPF GUI程序不会出现Window handle不够用的情况。
多线程的处理
  
在WinForm程序开发时,最头疼的一个问题就是,worker线程修改控件的属性而导致程序崩溃,而且这种非法操作并不是每次都失败。WinForm控件提供了InvokeRequired属性来判断当前线程是不是控件创建线程。问题是当控件树很深是,这个属性会比较慢。
  
WPF开始设计的时候,就考虑到了多线程的问题。大部分的WPF类都继承于DispatcherObject。DispatcherObject实际就是对Dispatcher的一个简单封装。Dispatcher提供了类似InvokeRequired的方法(CheckAccess)。这个方法只是比较线程的ID,所以会很快。另外,Dispatcher提供了优先队列,异步调用,Timer等功能,简化了开发多线程GUI程序。
控件的Composition
  
在WinForm如果要实现一个有Checkbox的下拉菜单,将不得不处理复杂的Window消息。而通过WPF控件的Content Model和Layout系统,WPF控件可以包括任何类型的控件,甚至.Net CLR对象。很多现代的控件厂商也提供了Composition的控件,实现方法和WPF的Content模型也比较相似。WPF开发团队应该借鉴了Infragistics的很多想法。有了这个基础,开发新的WPF控件更加简单了。
XAML
  
个人觉得XAML应该是WPF中比较划时代的东东。通过XAML,我们可以用文本的方式描述复杂的Object Graph。这个想法在VB中就有了,不过XAML更简化,以便于使用工具来生成XAML。通过Command,Routing Event等机制,界面设计人员和程序员有比较清楚的界限。
    
Dependency Property
  
在WinForm开发中,经常碰到的问题就是一个控件的值变了,其他控件也会跟着改变。解决办法,要不是通过写代码,要不是通过数据绑定,前者是界面和代码没法分开,后者还不够灵活。而WPF在这方面通过XAML可以简单的把相关的属性联系起来,通过Extension可以实现复杂的绑定关系。
    
总的来说,我觉得WPF应该是GUI发展的一个延续,原来GUI中复杂的东西,现在通过简单的文本就可以实现。
参考技术B 简单地说:
控制台应用程序通常没有图形界面,只有字符界面;
Winform应用程序是有图形界面,是对WindowsAPI的封装(VC++使用的MFC同样是对WindowsAPI的封装);
WPF也是用来做图形界面的,与WinForm一样都是.net的组成部分,——但WPF不是对WindowsAPI的直接封装,而是对DirectX的封装,更能利用显卡,所以可以较容易地做出酷炫界面效果。本回答被提问者采纳

WPF 或 Windows 窗体

【中文标题】WPF 或 Windows 窗体【英文标题】:WPF or Windows Forms 【发布时间】:2011-02-10 17:24:33 【问题描述】:

我已经玩了大约一年的 C# 控制台应用程序,我想继续创建 GUI 应用程序。除了基本的 Java 应用程序之外,我从未做过任何 GUI 开发,但我想继续使用 C#。我应该开始学习 Windows 窗体还是直接跳到 WPF?有很大的不同吗? WPF 是建立在 Windows 窗体之上还是完全不同?

【问题讨论】:

我觉得这个网站很有趣:educba.com/winforms-vs-wpf 【参考方案1】:

如果您刚刚开始,请直接跳入 WPF。

它将允许您开始使用标记来定义界面来制作丰富的界面,而无需教您从 Windows 窗体中学到的可能的坏习惯(对于 WPF)。

【讨论】:

+1 我完全同意。 WPF 比 Windows 窗体灵活得多,它是 GUI 开发的长期工具。在使用基于 XML 的布局方面,它非常接近 HTML。现在,Windows 窗体的最佳论据是,如果您有一个拥有丰富使用它的经验的开发团队。 WPF 是未来,它已经超越了 Windows 窗体。 +1 但是,由于以前版本中的字体问题,WPF 只能在 .NET 4.0+ 中使用,因此在应用程序部署时请记住这一点。 @Fauxide WPF 在 .NET 3.5 中可用。已经构建了许多有用的应用程序......字体问题并不是每个人的阻碍。 +1 - 多年来完成 WinForms,现在在 WPF 中。永远不要回头 ;) WPF 更好,更快。多年来在 winforms 中只使用 3rd 方控件 - 现在我使用它们,但不仅仅是(即标准控件可用,3r 方不是替代品,而是新东西)。特别是使用 .net 4.0 - wpf 岩石。哦,我做高性能数据可视化(又名金融工具交易应用程序)。 +1 WPF 的学习曲线有点陡峭,但是一旦你学会了它,它就会非常强大。不过,请确保您从 MVVM 模式开始,这很有意义。【参考方案2】:

这两种是完全不同的技术。它们确实为两个方向提供了一些互操作层,但除此之外没有任何共同点。 Windows Forms 或多或少是Win32/MFC 之上的轻量级包装器,这意味着它在.NET 中的可扩展性在所有情况下都不是那么好。 WPF 是一个从头开始实现的新 UI 框架。 WPF 在自定义现有类型方面也更加灵活。

但是,至少从我的经验来看,Windows Forms 似乎是业界更常用的桌面 UI 框架。虽然 WPF 提供 Silverlight 和 XBAP 应用程序,但 Windows 窗体不能用于 Web 开发。

如果您以前做过任何 UI 开发,我敢说 Windows 窗体更容易学习,因为它遵循更传统的编程范式。 WPF 的编程模型与此完全不同。虽然 WPF 的使用方式与 Windows 窗体相同,但它的大部分好处只有在您接受 WPF 提供的数据绑定和封装之后才能实现。

尽管有一些观点支持 Windows 窗体选择 WPF 而不是 Windows 窗体,但如果您只想学习一个 UI 框架,那么对我来说这将是一件轻而易举的事。它在各方面都优于 Windows 窗体。我只是希望整个软件行业能够更大规模地适应它! (尽管自从我们有了网络以来,就不再像其他人那样编写桌面应用程序了。)

【讨论】:

【参考方案3】:

这两种技术各有优缺点。

WPF 更适合跨平台开发和创建“华丽”的 GUI。但是,它需要比 WinForms 更新的 .net 框架,并且需要兼容 dx9 或更高版本的 GPU(大多数人都会拥有)。

但是创建界面/连接所有事件等涉及更多。

WinForms 仍然是一项功能强大的技术,通常可以以比 WPF 更快的速度开发,但最终,两种技术都可以用来实现相同的目标。但是 WPF 是“更新的” ' 标准。

WinForms 通常用于开发业务应用程序,而 WPF 通常用于创建更多基于最终用户的软件、应用程序等。

【讨论】:

【参考方案4】:

WPF 提供了非常丰富的工具来构建极其复杂的用户界面。它简化了在您的界面中集成硬件加速图形。但是,Visual Studio WPF 设计器真的很糟糕(我几乎从不使用它)。我也认为WPF要复杂得多,入门也比较困难。但这当然是主观的。

【讨论】:

以上是关于控制台应用程序 Windows 窗体应用程序 WPF应用程序,请问这三个有啥区别呀???的主要内容,如果未能解决你的问题,请参考以下文章

控制台应用程序 Windows 窗体应用程序 WPF应用程序,请问这三个有啥区别呀???

将多个参数传递给从 Windows 窗体运行的控制台应用程序

将字符串从控制台应用程序发送到 Windows 窗体应用程序

异步和等待 - 控制台、Windows 窗体和 ASP.NET 之间的区别

如何让 Windows 窗体将命令传递到控制台/命令行?

如何使用 Windows 窗体应用程序按钮在 Visual Studio 2010 中运行控制台文件? [关闭]