If you do have a working application using Winforms. WPF or similar technologies, your team won’t receive a tangible business benefit from rewriting their existing codebase to web technologies – versus remaining focused on features to drive revenue. .NET on the desktop and WPF specifically looked to be abandoned leaving people in an undesirable state with UWP and Windows 10. The rejuvenated commitment, open sourcing, and full support from Microsoft for WPF in .NET 3, .NET 5 and upcoming 6 have lowered the pressing strategic need to migrate platforms unless appropriate.
To provide features and support for existing and new .NET applications, while simultaneously providing a better and integrated solution for existing and new web applications, the best choice is to remain with .NET. While we did consider to fork Electron or to extend a vendor solution to provide the .NET hosting we need, the amount of work, the resistance of open source maintainers to contributions, and the lack of innersource access make this a showstopper. Disparate window and application interoperability based on messaging alone would be a significant step back in our desktop platform.
.NET (Core) is an open source, multi-platform framework. For Microsoft, it is the future – with the new unified platform pieces (Project Reunion, WinUI 3, MAUI, etc) announced at different conferences, .NET 5 did replace the aging full .NET framework. When it comes to actual business logic, .NET can be used to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS, WebAssembly and many more. The new .NET also solves the standalone side-by-side installation problems that were rooted in Microsoft binding the full .NET Framework to the OS – different versions of .NET Core for different applications can now be run on the same computer. It also provides high performance capabilities throughout the full framework with new language features like Span as well as optimizations within base libraries including but not limiting to Collections, Math, Regex, Strings and File Handling. Nevertheless, should not forget – it is truly open source, Microsoft already merged and released multiple changes that originated from my team, to support custom filesystems, Kerberos edge cases, database drivers, performance fixes, and many more.
Based on the requirements we have, and the direction from Microsoft, we are choosing .NET (core) WPF for now. This decision ties the (pluggable) shell component to Windows only. Of interest is the progress around Windows Virtual Desktop 2.0 (was just renamed to Azure Virtual Desktop). While it remains to be seen whether it is a strategic option, the lock-in has potential to be mitigated. AVD enables accessing cloud backed desktop UIs on non-Windows devices, including support for touch and pen for iOS and Android devices. To support in-house, there has been discussions of making AVD available for on premise (Azure Stack based) solutions as well.