Windows提供各种语言、框架和工具来生成应用,包括WinUI、WPF、C++、C#、.NET和各种跨平台框架,想要开发一款window应用,首先得了解可以在window上使用的技术和开发框架

开发框架介绍

.NET

  • 简介:.NET是一个开发者平台,由各种工具、编程语言和库组成,它们共同构建各种应用程序。.NET的主要语言是C#,并且有大量编辑器和其他工具可用于所有主要平台(Linux、Windows、macOS和Docker)。
  • 发布时间:.NETCore是在.NET Framework之后引入的,于2016年首次发布。后来,2020年11月,微软发布了.NET5.0(以后简称.NET),统一了.NET的各个平台的碎片版本:.NET Framework4.8,.NET Standard,.NET Core3.1,Mono,Xamarin等。
  • 应用范围:目标是实现跨平台开发,支持Windows、Linux和macOS。可用于构建桌面应用、Web应用、云服务、移动应用等。
  • CLR版本:使用新一代的CLR

.NET Framework

  • 发布时间:.NET Framework是最早引入的,它于2002年首次发布。它是一个用于构建Windows应用程序的完整的开发框架。
  • 应用范围:主要用于Windows桌面应用程序、Web应用程序(ASP.NET)、Windows服务等,并预安装于Windows
  • CLR版本:使用的是CommonLanguageRuntime(CLR)的早期版本。

.NET和.NET Framework主要区别

  1. 跨平台性:.NETFramework主要面向Windows,而.NET是跨平台的,支持在多个操作系统上运行,包括Windows、Linux和macOS。
  2. 开源性:.NET Core及其后续版本是开源的,而.NET Framework是闭源的。
  3. 模块化:.NET Core和.NET5及以后版本采用了更为模块化的设计,使得可以更灵活地选择要使用的组件,而.NET Framework则相对较为集中。
  4. 更新和支持:Microsoft将.NET Framework定位为稳定的平台,不再进行大规模的更新。相比之下,.NET会持续更新,引入新特性,并得到更积极的支持。

WinUI3

基于XAML标记和.NET,是一个跨平台的UI框架,作为 Windows 应用 SDK 的原生 UI 层,包含用于生成 Windows 应用的新式控件和样式。

WPF(Windows Presentation Foundation)

WPF是Microsoft开发的图形框架,基于WindowsAPI的GUI框架,是.NET Framework中的一部分。用于构建丰富、交互性强且视觉效果出色的桌面应用程序。WPF自2006年起就已存在,当时它首次在Microsoft.NETFrameworkv3.0中以代号“Avalon”的形式推出。

Windows Forms

Windows 窗体是用于托管型 Windows 应用程序的原始平台,具有一个轻型 UI 模型和对 .NET 或 .NET Framework 的访问权限。 它擅长帮助开发人员快速开始构建应用程序,即使对于刚接触该平台的开发人员也是如此。 这是一种基于窗体的快速应用程序开发平台,其中包含大量内置的可视化和非可视化拖放控件。 Windows 窗体不使用 XAML,因此,如果决定以后将应用程序重写为 WinUI,则需要完全重写 UI。

UWP

通用 Windows 平台 (UWP) 为通用 Windows 平台中的所有设备提供通用类型系统、API 和应用程序模型。 UWP 不仅可以用于为 Windows 电脑创建桌面应用程序,同时也是唯一受支持的可用于编写跨 Xbox、HoloLens 和 Surface Hub 运行的单一原生通用应用的平台。

Win32

Win32 桌面应用(有时也称为经典桌面应用)是 Windows 应用程序的原始应用类型,具备对 Windows 和硬件的直接访问权限。 这使得 Win32 应用类型成为需要最高级别性能和直接访问系统硬件的应用程序的理想选择。

与在托管运行时环境上(如 WinRT 和 .NET)相比,将 Win32 API 与 C++ 结合使用可以实现最高级别的性能和效率,方法是通过使用非托管代码对目标平台进行更多控制。 但是,对应用程序的执行进行这种级别的控制需要更加谨慎和更集中的注意力才能正确执行,同时,需牺牲开发效率以提高运行时性能。

以下是 Win32 API 和 C++ 提供的一些主要功能,使你能够生成高性能应用程序。

  • 硬件级优化,包括对资源分配、对象生存期、数据布局、对齐、字节封装等的严格控制。
  • 通过内部函数访问面向性能的指令集,如 SSE 和 AVX。
  • 使用模板进行高效且类型安全的泛型编程。
  • 高效且安全的容器和算法。
  • DirectX,特别是 Direct3D 和 DirectCompute。
  • 使用 C++/WinRT 创建新式桌面 Win32 应用,这些应用具有对 Windows 运行时 (WinRT) API 的一级访问权限。
功能.NET MAUIWinUI3UWP XAML (Windows.UI.Xaml)WPFWindows FormsWin32(MFC或ATL)
语言C#C#、C++C#、C++、VisualBasicC#,VisualBasicC#,VisualBasicC++、Rust
UI语言XAML/代码XAMLXAMLXAML代码代码
UI设计器(拖放)
UI调试热重载热重载热重载热重载热重载-
fluentdesign✅(通过WinUI2
.NET.NET.NET.NETCore和.NETNative.NET和.NETFramework.NET和.NETFramework空值
Windows应用SDK✅(详细信息✅(详细信息✅(详细信息
适合触控
跨平台
Xbox/HoloLens应用
沙盒(AppContainer)
当前支持
接收更新✅(安全性和bug修复)

总结

说了这么多开发框架有什么作用呢?以下是对各个框架的总结,通过这几个开发框架,你可以了解到开发不同应用可以使用不同的开发框架,以及一些最佳实例,帮助你更好地理解它们的实际应用。

  1. .NET 和 .NET Framework

    • 优点:强大的工具和社区支持,适合构建各种类型的应用。
    • 适用场景:当需要构建传统的 Windows 桌面应用程序时,可以选择 .NET Framework;若需支持多平台或现代化开发,使用 .NET Core 或 .NET 5 及以后版本更为合适。
    • 实例:企业级管理系统(例如客户关系管理系统CRM)通常会使用 .NET Framework,因为它能利用强大的数据库集成和 Windows 服务。
  2. WinUI3

    • 优点:现代化的用户界面设计,良好的用户体验,支持 Fluent Design。
    • 适用场景:开发新的 Windows 应用时,尤其是需要与其他 Windows 10 及 Windows 11 特性(如触控、手势识别)深度集成的应用。
    • 实例:现代化的音乐或视频播放器应用,如“Groove Music”或“Films & TV”,它们充分利用了 WinUI3 提供的流畅设计和新控件。
  3. WPF

    • 优点:强大的数据绑定能力和可视化设计,适合构建复杂的桌面应用。
    • 适用场景:用于构建需要高度自定义用户界面和丰富交互的 Windows 桌面应用,尤其在企业应用和数据密集型应用中。
    • 实例:数据可视化工具,如 Tableau 或 Microsoft Power BI,它们需要展示复杂的数据关系和图表,WPF 的数据绑定功能能够很好地支持这些需求。
  4. UWP

    • 优点:支持跨设备开发(PC、Xbox、HoloLens等),适合需要在多个设备上运行的应用。
    • 适用场景:当需要针对各种 Windows 设备(如平板、手机等)开发应用时,UWP 是一个理想选择。
    • 实例:应用商店中的许多应用,如 Xbox Game Pass 或 Microsoft To Do,均采用 UWP 开发,确保可以在不同设备上无缝运行。
  5. Win32

    • 优点:对系统资源和硬件的高效访问,性能优越。
    • 适用场景:适用于要求极高性能的应用,例如游戏、图形处理应用和系统工具等。
    • 实例:图形设计软件如 Adobe Photoshop 或 CAD 应用程序,它们需要直接访问硬件加速功能,以获得最佳的性能和响应速度。

选择合适的开发框架对于构建 Windows 应用至关重要。每个框架都有其独特的优势和适用场景,应根据项目需求、目标平台及开发资源做出明智的选择。理解不同框架的特性,不仅能提升开发效率,还能确保应用在功能、性能和用户体验上的最佳表现。