In Visual Studio, there are 3 options as the screenshot at the top of this post. They are
|Windows Forms App (.NET Framework)||an application with a Windows Forms (WinForms) user interface|
|Windows Forms App (.NET)||an application with a Windows Forms (WinForms) user interface|
|WPF Application||.NET WPF Application|
I wonder that a translator in Microsoft is really confident that users can understand and recognize difference of them, especially between 2 Windows Forms Apps.
An user select framework they use at the later step and they will be able to realize 2 options intends at that stage. But I think a translator should indicate information leading more clear understanding and recognition at the 1st stage.
I imagine that most users select "Windows Forms App (.NET Framework)" and only small part of users in advance of others try "WPF Application".
This post introduces how they are difference.
- Windows Forms App (.NET Framework)
- Windows Forms App (.NET)
- WPF Application
- Windows App SDK, Windows UI Library (WinUI)
The next matrix is a summary of their differences.
|1||Windows Forms App (.NET Framework)||WinForms||.NET Framework||Embedded in View||GDI
|2||Windows Forms App (.NET)||WinForms||.NET Core
|Embedded in View||GDI
|3||WPF Application||WPF||.NET Core
Separated from View
User select framework at the later step. Difference of frameworks listed there indicates difference of these options.
In general objective to develop desktop application for Windows, all options are applicable. The key to select an appropriate option is GUI and framework.
Windows Forms App (.NET Framework)
.NET Framework is included with Windows. Developers don't have to be conscious to distribute other than developed application in this option.
It is important to note that the life cycle of .NET Framework. Version 4.8 is its last version, and developers will be forced to choose other options in time.
.NET Framework 4.8 is the last version of .NET Framework.
Overview of .NET Framework - .NET Framework | Microsoft Docs
Windows Forms App (.NET)
This option is appropriate for desktop application development with .NET Core for framework, and WinForms for GUI.
Developer should be conscious about .NET Core is installed in end user's PC for for distribution of developed application so that .NET Core is not included in Windows.
This is an option for modern Windows application development. In advance of rushing into this option, developers should know that Microsoft is trying to change their course to "Windows App SDK" with WinUI introduced later.
In WPF (Windows Presentation Foundation), GUI is defined with XAML (eXtensible Application Markup Language) and logic is defined with .NET Core. Major difference from other 2 options are its structure and rendering.
In this option, design and implementation based on MVVM (Model View ViewModel) architecture as well as development for mobile as Android.
In other 2 options, application logic is behind Form even if core functions are separately provided from DLLs. State change and control for button, label, text box, etc, MVVM isolates such logic from GUI, and avoids embedding such codes into Form.
Therefore, development process is vary from traditional way. GUI is designed with defining in XAML, not drag & drop from toolbox, and describing logic in ViewModel corresponding XAML.
Depending on interpretation, "Windows Forms App" is defined as the option to develop in traditional way with new framework.
The another major difference between WinForms and WPF is rendering technology, Retained Mode and Immediate Mode*1. The following site provides easy to understand information for an explanation of these 2 modes. In a nutshell, WPF can render smoother than WinForms.
Windows App SDK, Windows UI Library (WinUI)
Since Windows 8, Microsoft has been trying to create a consistent environment supporting both mobile and desktop. WPF is a part of that, but Project REUNION brought change to their direction. "Windows App SDK" is its deliverable and is provided as an extension of Visual Studio.
And Windows UI Library (WinUI) is GUI library included it. This is mainstream since Windows 11, but WinForms has been still occupying there.
From my view, my stance against both WPF and WinUI is wait-and-see for a while.