Terminology: .NET apps vs Win32 apps


All, when describing Win32 apps do we include or exclude .NET apps from that category/discussion?

From a developer perspective they are quite distinct, even more so when we look at the cross platform .NET Core implementation we have today that’s no longer exclusive to the Windows platform. Good example here might be Windows 10x, where containerized separation between the two could be technically significant.


Comments (9)

9 responses to “Terminology: .NET apps vs Win32 apps”

  1. wp7mango

    Good point. Since .NET Core is open source and is cross platform, such Tizen.NET, then you can't really refer to these applications as Win32 just because they're not UWP.

    I think the term Win32 must therefore relate specifically to Windows legacy x86 and x64, but the application itself may not necessarily be restricted to running on Win32 platforms.

  2. wright_is

    I would always split them into different categories, but from an installation and running point of view, there is no difference for the user, so probably developers will talk about the differences, but for the users, there is "old" and UWP. And old is synonymous with Win32, so the lines get blurred.

  3. Paul Thurrott

    Win32 has become the Kleenex of the desktop app world, I guess. Not sure exactly how this happened, but part of the reason, I think, is that most people don't realize UWP apps are mobile apps. I think the real distinction here is desktop vs. mobile, not "Win32" vs. UWP.

  4. paradyne

    Best to just give up trying to label and separate these things (this applies to device categories too).

    I can use .net to build UWP apps, Win32 desktop apps, apps that transpile to javascript or web assembly.

    I can use UWP API's from Win32 Desktop apps and Win32 API's from UWP apps.

    The .net class library uses Win32 API's itself, when run on Windows, so a .net program is a Win32 program.

    The lines are so blurred there virtually are no lines.

  5. Usman

    You have 2 runtimes in Windows world. Win32 and WinRT. View it like Desktop and Mobile.

    .Net Core can run cross platform but it runs on Mac, Windows and Linux, on those desktop platforms, on windows it runs as win32 (like basically any programming tool and language) and same thing for other desktop platforms. .Net Core doesn't run directly on iOS or Android.

    Another example is like Running iOS apps on MacOs Big Sur is like running UWP apps on Windows 10, it's a different runtime. You won't see IDEs etc running on iOS Runtime on a Mac just yet, you'd see them built specifically for the Mac Application runtime.

  6. longhorn

    Everything that isn't pure WinRT (UWP) has been labeled Win32, just to separate new from old. The biggest problem in the history of Windows is that MS didn't split development into a legacy/business version and a modern/consumer version of Windows.

    That way MS would have been able to move like Apple and gradually move the eco-system forward. Now every application that is worth something on Windows is stuck in legacy with no viable path forward. Windows itself is stuck in legacy, just because MS can't allow themselves to make breaking changes like Apple. Then most of the new MS applications are legacy too: Edge, Skype, Teams, Visual Studio Code etc.

    These applications also run on macOS so the question is if they are really legacy? Do you think MS would bet on Chredge if they thought it was outdated technology?

    Windows 10X shows how crazy the current MS strategy is. Edge should run in the container like all other Win32 applications, together with Chrome.

  7. bill_strong

    It gets really dicey when you consider VS can now target the .net runtime from C/C++.

    So, I would say we have the win32 framework, the .net framework, the windows runtime and the .net runtime, and the languages are distinct as well.

  8. shmuelie

    .NET Framework is Win32

    .NET Core can be Win32 or UWP/WinRT

    As others have said the difference is how the app talks to the OS. Windows currently has:

    1) Win16. Nothing new is written using this, only old apps and only supported on 32bit Windows

    2) Win32. Most common way to develop desktop applications. C and C++ call it directly, .NET Framework and Java call it from their runtimes.

    3) UWP/WinRT. Newest method for developing applications. Like Win32 can be called directly from C/C++ or via runtimes for .NET Core. Lot of newer APIs in Windows are UWP/WinRT only.

    4) Web. Targeting web browsers who then call one of the previous methods.

    Win32 and UWP/WinRT are not exclusive. You can write code that uses both.

    • Paul Thurrott

      This is correct. But that neatly highlights why this stuff is confusing. I still prefer "desktop" and "mobile" (and "web," I guess). Ultimately, that's the only distinction that matters, whether .NET is involved or not.

Leave a Reply