Skip to content

Commit 12cad27

Browse files
Update selecting a tech page (#3790)
* Update selecting a tech page * Update selecting a tech page * Update TOC in the get started section * Update TOC in the get started section * Corrected yml and title
1 parent 45a9b1d commit 12cad27

File tree

4 files changed

+82
-82
lines changed

4 files changed

+82
-82
lines changed

hub/apps/get-started/index.md

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,37 @@
11
---
2-
description: Learn how to get started building new apps for Windows desktop and modernizing existing apps.
3-
title: Writing apps for Windows
2+
description: An overview of Windows development options - Writing apps for Windows and how to select a development technology
3+
title: An overview of app development option
44
ms.topic: article
5-
ms.date: 6/23/2023
6-
keywords: windows win32, desktop development
5+
ms.date: 9/26/2023
6+
keywords: windows, desktop development
77
ms.localizationpriority: medium
88
---
99

10-
# Writing apps for Windows: Selecting a development technology
10+
# An overview of Windows development options
1111

1212
This article contains the information you need to get started building apps for the Windows desktop environment.
1313

1414
![Developer at desk](./images/developer-at-desk.jpg)
1515

1616
Windows offers a wide range of options for building apps, including [C++](/windows/uwp/cpp-and-winrt-apis/), [.NET](/dotnet/), and other emerging technologies such as [open source tools on WSL](/windows/wsl/) and [Rust](../../dev-environment/rust/index.yml). With so many choices, it can be difficult to know where to begin.
1717

18-
## IDE
18+
## Visual Studio
1919

20-
[Visual Studio](/visualstudio) is the go-to development environment for most Windows developers, providing various starting points for different types of apps, each with their own strengths and project types ([here's a quick C# tutorial](/visualstudio/get-started/csharp/tutorial-console?view=vs-2022)). Every app type includes an app model that defines the app's lifecycle, a default UI framework, and access to a comprehensive set of APIs for using Windows features.
20+
[Visual Studio](/visualstudio) is the preferred integrated development environment (IDE) for most Windows developers. It offers a variety of templates for different app types, each with its own strengths and project types. For instance, you can use the [C# tutorial](/visualstudio/get-started/csharp/tutorial-console?view=vs-2022) for console apps to get started. Every app type includes an app model that defines the apps lifecycle, a default UI framework, and access to a comprehensive set of APIs for using Windows features.
2121

22-
[Visual Studio Code](https://code.visualstudio.com) is another popular tool, with extensions and support for a large number of development languages and tools. For languages other than C# and C++, it's a great place to start.
22+
[Visual Studio Code](https://code.visualstudio.com) is another popular tool that provides extensions and support for a wide range of development languages and tools. It’s an excellent starting point for languages other than C# and C++ (although it supports those too).
2323

2424
## Languages and frameworks
2525

26-
Many apps for Windows are written using [WPF](/dotnet/desktop/wpf/get-started/create-app-visual-studio?view=netdesktop-7.0) or [Windows Forms](/dotnet/desktop/winforms/getting-started-with-windows-forms?view=netframeworkdesktop-4.8), and they remain viable tools today.
26+
Many apps for Windows are written using [UWP](/windows/uwp), [WPF](/dotnet/desktop/wpf/get-started/create-app-visual-studio?view=netdesktop-7.0) or [Windows Forms](/dotnet/desktop/winforms/getting-started-with-windows-forms?view=netframeworkdesktop-4.8), and they all remain viable tools today.
2727

28-
Looking to the future, if your app will only run on Windows we recommend investigating the [Windows App SDK](../windows-app-sdk/index.md) and [WinUI 3](../winui/winui3/index.md). If you need your app to be cross-platform, consider [.NET MAUI](/dotnet/maui/what-is-maui), a [Progressive Web App (PWA)](/microsoft-edge/progressive-web-apps-chromium/), or [React Native for Windows](../../dev-environment/javascript/react-native-for-windows.md). There are many other options available ([here's a list of popular options](../../dev-environment/index.md)), but the above are some good starting points.
28+
Looking to the future, if your app will only run on Windows you might want to investigate the [Windows App SDK](../windows-app-sdk/index.md) and [WinUI 3](../winui/winui3/index.md). If you need your app to be cross-platform, consider [.NET MAUI](/dotnet/maui/what-is-maui), a [Progressive Web App (PWA)](/microsoft-edge/progressive-web-apps-chromium/), or [React Native for Windows](../../dev-environment/javascript/react-native-for-windows.md). There are many other choices available ([here's a list of popular options](../../dev-environment/index.md)), but the above are some good starting points.
2929

30-
> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RWQwHD]
30+
## Windows platforms
3131

32-
## Create a WinUI 3 app
32+
For more information about the app types you can choose from, see the following tabs.
33+
34+
### [WinAppSDK and WinUI](#tab/winappsdk-winui)
3335

3436
The Windows UI Library (WinUI) 3 is the latest user interface (UI) framework for Windows desktop apps, including managed apps that use C# and .NET, and native apps that use C++ with the Win32 API. It is still under very active development, so while it might not be able to meet all your needs today it's maturing with [every release](/windows/apps/windows-app-sdk/stable-channel).
3537

@@ -40,6 +42,57 @@ By incorporating the [Fluent Design System](https://www.microsoft.com/design/flu
4042
4143
If you have already installed the required developer tools, you are ready to [Create your first WinUI 3 project](../winui/winui3/create-your-first-winui3-app.md).
4244

45+
### [Win32](#tab/cpp-win32)
46+
47+
Win32 desktop apps (also sometimes called *classic desktop apps*) are the original app type for native Windows applications that require direct access to Windows and hardware. This makes this the app type of choice for applications that need the highest level of performance and direct access to system hardware.
48+
49+
Using the Win32 API with C++ makes it possible to achieve the highest levels of performance and efficiency by taking more control of the target platform with unmanaged code than is possible on a managed runtime environment like WinRT and .NET. However, exercising such a level of control over your application's execution requires greater care and attention to get right, and trades development productivity for runtime performance.
50+
51+
Here are a few highlights of what the Win32 API and C++ offers to enable you to build high-performance applications.
52+
53+
- Hardware-level optimizations, including tight control over resource allocation, object lifetimes, data layout, alignment, byte packing, and more.
54+
- Access to performance-oriented instruction sets like SSE and AVX through intrinsic functions.
55+
- Efficient, type-safe generic programming by using templates.
56+
- Efficient and safe containers and algorithms.
57+
- DirectX, in particular Direct3D and DirectCompute (note that UWP also offers DirectX interop).
58+
- Use [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/) to create modern desktop Win32 apps with first-class access to Windows Runtime (WinRT) APIs.
59+
60+
> [!div class="button"]
61+
> [Get started with Win32](/windows/win32/desktop-programming/)
62+
63+
You also have access to modern Windows platform features and APIs provided by the **Windows App SDK**. For more information, see [Modernize your desktop apps](../desktop/modernize/index.md).
64+
65+
### [WPF](#tab/wpf)
66+
67+
WPF is a well-established platform for managed Windows applications with access to .NET or the .NET Framework, and it also uses XAML markup to separate UI from code. This platform is designed for desktop applications that require a sophisticated UI, styles customization, and graphics-intensive scenarios. WPF development skills are similar to WinUI 3 development skills, so migrating from WPF to WinUI 3 is easier than migrating from Windows Forms.
68+
69+
> [!div class="button"]
70+
> [Get started with WPF](/dotnet/framework/wpf/getting-started/)
71+
72+
You also have access to modern Windows platform features and APIs provided by the **Windows App SDK**. For more information, see [Modernize your desktop apps](../desktop/modernize/index.md).
73+
74+
### [Windows Forms](#tab/windows-forms)
75+
76+
Windows Forms is the original platform for managed Windows applications with a lightweight UI model and access to .NET or the .NET Framework. It excels at enabling developers to quickly get started building applications, even for developers new to the platform. This is a forms-based, rapid application development platform with a large built-in collection of visual and non-visual drag-and-drop controls. Windows Forms does not use XAML, so deciding later to rewrite your application to WinUI 3 entails a complete re-write of your UI.
77+
78+
> [!div class="button"]
79+
> [Get started with Windows Forms](/dotnet/framework/winforms/getting-started-with-windows-forms)
80+
81+
You also have access to modern Windows platform features and APIs provided by the **Windows App SDK**. For more information, see [Modernize your desktop apps](../desktop/modernize/index.md).
82+
83+
### [UWP](#tab/uwp)
84+
85+
The Universal Windows Platform (UWP) provides a common type system, APIs, and application model for all devices in the Universal Windows Platform. Not only can you use UWP to create desktop applications for Windows PCs, but UWP is also the only supported platform to write a single native universal app that runs across Xbox, HoloLens, and Surface Hub. UWP apps can be native or managed.
86+
87+
UWP is a highly customizable platform that uses XAML markup to separate UI (presentation) from code (business logic). UWP is suitable for desktop apps that require a sophisticated UI, styles customization, and graphics-intensive scenarios. UWP also has built-in support for the [Fluent Design System](/windows/uwp/design/fluent-design-system/) for the default UX experience and provides access to the [Windows Runtime (WinRT) APIs](/windows/uwp/get-started/universal-application-platform-guide#how-the-universal-windows-platform-relates-to-windows-runtime-apis).
88+
89+
> [!div class="button"]
90+
> [Get started with UWP](/windows/uwp/get-started/)
91+
92+
You will not have access to the APIs provided by the **Windows App SDK**. To use the Windows App SDK, you will have to migrate your UWP app to WinUI 3. For more information, see [Migrate to the Windows App SDK](../windows-app-sdk/migrate-to-windows-app-sdk/overall-migration-strategy.md).
93+
94+
---
95+
4396
## Cross-platform options
4497

4598
WinUI also serves as the basis for cross-platform technologies that provide great native Windows experiences using a variety of coding languages. .NET MAUI and React Native for Windows harness the power of WinUI on Windows, while also enabling execution on other operating systems. Another cross-platform option, Progressive Web Apps (PWAs), are websites that function like installed, native apps on Windows and other supported platforms, while functioning like regular websites on browsers.
@@ -120,57 +173,4 @@ For more information about React Native for Windows, see the following links:
120173
- [Community modules directory](https://reactnative.directory)
121174
- [More resources](https://microsoft.github.io/react-native-windows/resources)
122175

123-
---
124-
125-
## Other app types
126-
127-
For more information about the app types you can choose from, see the following tabs.
128-
129-
### [Win32](#tab/cpp-win32)
130-
131-
Win32 desktop apps (also sometimes called *classic desktop apps*) are the original app type for native Windows applications that require direct access to Windows and hardware. This makes this the app type of choice for applications that need the highest level of performance and direct access to system hardware.
132-
133-
Using the Win32 API with C++ makes it possible to achieve the highest levels of performance and efficiency by taking more control of the target platform with unmanaged code than is possible on a managed runtime environment like WinRT and .NET. However, exercising such a level of control over your application's execution requires greater care and attention to get right, and trades development productivity for runtime performance.
134-
135-
Here are a few highlights of what the Win32 API and C++ offers to enable you to build high-performance applications.
136-
137-
- Hardware-level optimizations, including tight control over resource allocation, object lifetimes, data layout, alignment, byte packing, and more.
138-
- Access to performance-oriented instruction sets like SSE and AVX through intrinsic functions.
139-
- Efficient, type-safe generic programming by using templates.
140-
- Efficient and safe containers and algorithms.
141-
- DirectX, in particular Direct3D and DirectCompute (note that UWP also offers DirectX interop).
142-
- Use [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/) to create modern desktop Win32 apps with first-class access to Windows Runtime (WinRT) APIs.
143-
144-
> [!div class="button"]
145-
> [Get started with Win32](/windows/win32/desktop-programming/)
146-
147-
You also have access to modern Windows platform features and APIs provided by the **Windows App SDK**. For more information, see [Modernize your desktop apps](../desktop/modernize/index.md).
148-
149-
### [WPF](#tab/wpf)
150-
151-
WPF is a well-established platform for managed Windows applications with access to .NET or the .NET Framework, and it also uses XAML markup to separate UI from code. This platform is designed for desktop applications that require a sophisticated UI, styles customization, and graphics-intensive scenarios. WPF development skills are similar to WinUI 3 development skills, so migrating from WPF to WinUI 3 is easier than migrating from Windows Forms.
152-
153-
> [!div class="button"]
154-
> [Get started with WPF](/dotnet/framework/wpf/getting-started/)
155-
156-
You also have access to modern Windows platform features and APIs provided by the **Windows App SDK**. For more information, see [Modernize your desktop apps](../desktop/modernize/index.md).
157-
158-
### [Windows Forms](#tab/windows-forms)
159-
160-
Windows Forms is the original platform for managed Windows applications with a lightweight UI model and access to .NET or the .NET Framework. It excels at enabling developers to quickly get started building applications, even for developers new to the platform. This is a forms-based, rapid application development platform with a large built-in collection of visual and non-visual drag-and-drop controls. Windows Forms does not use XAML, so deciding later to rewrite your application to WinUI 3 entails a complete re-write of your UI.
161-
162-
> [!div class="button"]
163-
> [Get started with Windows Forms](/dotnet/framework/winforms/getting-started-with-windows-forms)
164-
165-
You also have access to modern Windows platform features and APIs provided by the **Windows App SDK**. For more information, see [Modernize your desktop apps](../desktop/modernize/index.md).
166-
167-
### [UWP](#tab/uwp)
168-
169-
The Universal Windows Platform (UWP) provides a common type system, APIs, and application model for all devices in the Universal Windows Platform. Not only can you use UWP to create desktop applications for Windows PCs, but UWP is also the only supported platform to write a single native universal app that runs across Xbox, HoloLens, and Surface Hub. UWP apps can be native or managed.
170-
171-
UWP is a highly customizable platform that uses XAML markup to separate UI (presentation) from code (business logic). UWP is suitable for desktop apps that require a sophisticated UI, styles customization, and graphics-intensive scenarios. UWP also has built-in support for the [Fluent Design System](/windows/uwp/design/fluent-design-system/) for the default UX experience and provides access to the [Windows Runtime (WinRT) APIs](/windows/uwp/get-started/universal-application-platform-guide#how-the-universal-windows-platform-relates-to-windows-runtime-apis).
172-
173-
> [!div class="button"]
174-
> [Get started with UWP](/windows/uwp/get-started/)
175-
176-
You will not have access to the APIs provided by the **Windows App SDK**. To use the Windows App SDK, you will have to migrate your UWP app to WinUI 3. For more information, see [Migrate to the Windows App SDK](../windows-app-sdk/migrate-to-windows-app-sdk/overall-migration-strategy.md).
176+
---

hub/apps/index.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ productDirectory:
4747
imageSrc: /media/common/i_get-started.svg
4848
links:
4949
- url: ./get-started/index.md
50-
text: Overview of app development options
50+
text: Overview of Windows development options
5151
- url: ./windows-app-sdk/set-up-your-development-environment.md
5252
text: Install tools for the Windows App SDK
5353
- url: ./winui/winui3/create-your-first-winui3-app.md
@@ -97,9 +97,9 @@ tools:
9797
- title: Windows for IoT
9898
imageSrc: /media/hubs/windows/win_developer-4.svg
9999
url: /windows/iot-core/
100-
- title: Xbox One
100+
- title: Games
101101
imageSrc: /media/hubs/windows/win_developer-3.svg
102-
url: https://www.xbox.com/developers
102+
url: https://developer.microsoft.com/games/
103103

104104
additionalContent:
105105
sections:

hub/apps/toc.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,6 @@ items:
3030
items:
3131
- name: Overview of app development options
3232
href: get-started/index.md
33-
- name: About migrating from UWP to Windows App SDK
34-
href: get-started/migrate-from-uwp-to-winappsdk.md
35-
- name: Install tools for the Windows App SDK
36-
href: windows-app-sdk/set-up-your-development-environment.md
37-
- name: "Create your first WinUI 3 project"
38-
href: winui/winui3/create-your-first-winui3-app.md
39-
- name: "Tutorial: Create a simple photo viewer with WinUI 3"
40-
href: get-started/simple-photo-viewer-winui3.md
41-
- name: "Tutorial: Create a simple multi-platform photo viewer"
42-
href: get-started/uno-simple-photo-viewer.md
4333
- name: Sample apps for Windows
4434
href: get-started/samples.md
4535
- name: Windows developer best practices
@@ -58,6 +48,8 @@ items:
5848
href: get-started/developer-mode-features-and-debugging.md
5949
- name: Create a developer account
6050
href: get-started/sign-up.md
51+
- name: Install tools for the Windows App SDK
52+
href: windows-app-sdk/set-up-your-development-environment.md
6153
- name: Visual Studio project templates
6254
items:
6355
- name: All templates for Windows apps
@@ -70,6 +62,14 @@ items:
7062
href: how-tos/hello-world-winui3.md
7163
- name: Target multiple platforms with WinUI 3
7264
href: how-tos/uno-multiplatform.md
65+
- name: About migrating from UWP to Windows App SDK
66+
href: get-started/migrate-from-uwp-to-winappsdk.md
67+
- name: "Create your first WinUI 3 project"
68+
href: winui/winui3/create-your-first-winui3-app.md
69+
- name: "Tutorial: Create a simple photo viewer with WinUI 3"
70+
href: get-started/simple-photo-viewer-winui3.md
71+
- name: "Tutorial: Create a simple multi-platform photo viewer"
72+
href: get-started/uno-simple-photo-viewer.md
7373
- name: Design
7474
href: design/toc.yml
7575
- name: Develop
@@ -509,12 +509,12 @@ items:
509509
href: develop/smart-app-control/code-signing-for-smart-app-control.md
510510
- name: Test your app's signature with Smart App Control
511511
href: develop/smart-app-control/test-your-app-with-smart-app-control.md
512-
- name: Windows app restore
513-
href: develop/windows-app-restore.md
514512
- name: Deploy
515513
items:
516514
- name: Deployment overview
517515
href: package-and-deploy/index.md
516+
- name: Windows app restore
517+
href: develop/windows-app-restore.md
518518
- name: Windows App SDK deployment guide
519519
items:
520520
- name: Windows App SDK deployment overview

uwp/get-started/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ keywords: get started, windows 10, uwp, xaml, c#
77
ms.localizationpriority: medium
88
---
99

10-
# Get started with UWP (Universal Windows Platform)
10+
# Universal Windows Platform (UWP) - Get Started
1111

1212
Build apps that work across different Windows devices.
1313

0 commit comments

Comments
 (0)