Forum Discussion
Winforms .Net framework 4.0 evolution
Hi all,
I have a winforms application, and I'm on a journey to determine the evolution path for this masterpiece! I've identified two paths, and for each path, I have a couple of options, and I would like to gather feedback from other people who had been on my shoes before.
The application is built in C# .Net framework 4.0, runs on Windows computer (it is distribuited via click once) with the following main dependencies:
Enterprise Library (Logging, Unity, Exception Handling)
Microsoft Smartclient Application Block (Disconnected Agent, Connection Monitor, Endpoint Catalog, Composite UI)
On top, the application consumes data from WCF services (written in .Net framework 4.0 as well) relying on windows authentication & impersonation.
Plus, the application invokes some reports (reporting services) and prints some documents directly to the OS printer.
So I've identified so far two possible paths of evolution for this project:
Framework upgrade
Project rewrite on a modern technology
On the framework upgrade path, I've found two possibilities:
Migrate to .Net framework 4.8.1, since it is a "natural" path for .Net framework 4.0 and the application doesn't have any DI and relies on WCF
Seems more inocent path than .Net 6
Migrate to .Net 6 (because of LTS), which may cause extra effort
Because of the WCF part which relies on Windows Authentication for a bunch of things (including impersonate)
Because of the Smart client libraries, since this has a huge footprint on the whole application
The pub-sub pattern, the service agents and so on...
Both options place the project in a position where the framework is supported, but some dependencies won't have a evolution path and will remain without support or may event stop compiling or working (perhaps on .Net 6), OR the application need to be very refactored to remove the Smart client footprint, which leads me to the rewriting path.
On the rewriting path with a new technology, well, looking at the Microsoft possibilities, honestly I feel lost. I've identifier so far Winforms ("as is"), Blazor, WinUI and MAUI. Honestly, I don't know what to look at for this path.
On this path, I'm looking for something for the long term, that has an evolution path and doesn't get discontinued on the next corner. Given the fact that some of these technologies are more or less recent along with the concern that I've shared before, I'm not sure what or which to evaluate.
So I'd ask for advice or at least for some sort of exclusions if someone were in my shoes before and faced the same challenge, thank you