WinForm vs WPF vs UWP vs Console - The C# Desktop UI Showdown (and the future with .NET 5)

Share
Embed
  • Published on Jun 3, 2019
  • Which C# desktop UI should I use? Is the latest one the best? Is WinForms dead? Aren't Console applications super-old technology? These are all questions I get on a weekly basis so I thought I would take some time and walk through the four major options for desktop applications. We will discuss the benefits and drawbacks of each UI, and then we will discuss the future.
    One of these platforms is finally dying, and it probably isn't the one you think.
    At the end, we will also discuss the future of the .NET Framework, .NET Core, and .NET 5 so that you can properly understand the direction you need to head going forward.
    Patreon: www.patreon.com/IAmTimCorey
    Newsletter signup (with exclusive discounts, giveaways, and more): iamtimcorey.com/general-sign-up

Comments • 560

  • Paul Kirby
    Paul Kirby 2 days ago

    I also think UWP will fade out due to its limitations, Microsoft did the same for XNA Framework.

    • Paul Kirby
      Paul Kirby Day ago

      @IAmTimCorey Well Console will be here for a while so that servers can run headless apps like you said for automation, I use Console Apps for the Front End of all my Game Servers using Threads which works great.
      Not really used WPF as yet so I am new to that which looks strange due to using WinForms for years.
      I have had some issues with WinForms like with the ListView control with loads of items in it where it would stutter (even with double buffer enabled)
      I did take a look at UWP but saw its limitations and walked away due to being previously burnt with XNA.
      TBH I thought WinForm would be the one to go due to I think it was based of Win32 / MFC which is old LOL
      But yeah we will see.

    • IAmTimCorey
      IAmTimCorey  2 days ago +1

      We will see.

  • Hitman HD
    Hitman HD 3 days ago

    If I have experience with wpf, how long and hard will learning uwp be?

    • IAmTimCorey
      IAmTimCorey  2 days ago

      It is very similar. The differences will be around security, deployment, and a few APIs. Otherwise, it will be the same.

  • Harish Kumar
    Harish Kumar 19 days ago +3

    Wait.. that's a bad new for me, I mean.. I am just starting out with desktop application development with c# for the reason it being a more modern language for desktop development. But most of the tutorials here are in .net framework, so.. should from this point only learn everything with .net core, or go with .net framework and then move to .net core ecosystem Microsoft is preparing?

    • IAmTimCorey
      IAmTimCorey  18 days ago +2

      Actually, it isn't as bad as you think. In fact, it isn't bad at all. The .NET Framework tutorials will practically all still be fine. The only issue will be if they reference the app.config. In .NET Core, you will reference the appsettings.json instead. Otherwise, you shouldn't notice a difference in your code. The C# code is the same C# code. The difference is the engine that compiles it. I upgraded the Tournament Tracker application to .NET Core from the .NET Framework and it was mostly just changing the csproj file (I did have some legacy packages to change over but that's to be expected). So, going forward, create in .NET Core but don't be afraid of the .NET Framework or of learning techniques in it.

  • ron cohen
    ron cohen 20 days ago

    I dont understand.
    WPF is built on .net core.
    .net core is cross platform.
    but WPF is not?

    • Jim Cheseborough
      Jim Cheseborough 17 days ago

      @Ryan Dulac Great Q! Did you get your answer?

    • Ryan Dulac
      Ryan Dulac 18 days ago +1

      @IAmTimCorey so what do we use for Linux and Mac software?

    • IAmTimCorey
      IAmTimCorey  18 days ago

      Console apps and web apps are cross-platform. That means that automation apps, services, APIs, and web applications can run anywhere. This is a big deal because Windows hosting for web apps is expensive compared to Linux hosting. Now you can pretty much pick any web host and put your C# web application on it rather than needing a specific type.

    • ron cohen
      ron cohen 19 days ago

      @IAmTimCorey
      So what does the "cross platform" in the .net core mean?
      why would i want to run .net core on a linux machine if not for wpf?

    • IAmTimCorey
      IAmTimCorey  19 days ago +2

      That is correct. The clue is in the name (the W in WPF stands for Windows - the same is true for WinForms in .NET Core). Both of these systems are built right into the GDI and DirectX, which are dependent on Windows. To try to separate them would be the equivalent of starting over. The reason .NET Core was added to both WPF and WinForms was not to make them cross-platform but instead to make them more performant and to add the new features. There are no new updates coming to the .NET Framework (ever, except security fixes). .NET Core is the way forward. However, they didn't want to leave desktop developers behind so they replaced the framework code with .NET Core.

  • Mohamed Abdinur
    Mohamed Abdinur 27 days ago

    So long as Microsoft has ambitions of not being Intel x86 bound I think UWP will still be kicking around. It was the reason they made that framework not to just only unify across a cross-platform Windows environment but to do so regardless of the hardware that Windows screen was running on. I think MS actually built a framework with unintended consequences that just might be a net benefit. Like pairing UWP with UNO Platform gets you a Win10, Android, iOS, and Web Assembly App for the price of one code base ... and the UI can be made to all look the same in different screens or be quickly adjusted for each. Obviously I'm just speculating myself ... so who really knows the chaos that is the MS machine. One thing for certain is that console and WinForm RAD are here to stay as they are basic timeless concepts.

    • IAmTimCorey
      IAmTimCorey  27 days ago

      Yep, it will be interesting to see what happens in the future.

  • OneManShow
    OneManShow 27 days ago

    Native English speakers: Settings> Playback Speed > 1.25

    • Aeroxima
      Aeroxima 18 days ago

      Yep, I was having trouble understanding before 1.5x, just lose focus and get bored and my mind wanders, then "wait, what'd he say?"
      Moving it up too much distorts it too much to hear though, so captions help, even though they get a lot of stuff wrong (like WPF, UWP, WinForms, etc)

    • IAmTimCorey
      IAmTimCorey  27 days ago +1

      Yep, I can see that, although I would probably put it at 1.5x.

  • jorge cabrera
    jorge cabrera Month ago +1

    I tried windows forms but i dont really like the drag and drop items Im looking something like flutter but c# is drag and drop only

    • IAmTimCorey
      IAmTimCorey  Month ago +2

      I'm not sure specifically what you are looking for but WPF is the better option for desktop application development rather than WinForms. It is not just drag-and-drop. It uses a XAML designer.

  • Agung Buana
    Agung Buana Month ago +1

    First, UWP is powered by GPU and it is vector based, so it is so much better and flexible in scaling. Second, UWP has a better XAML implementation than WPF and it does everything WPF does but better. So, I dont think UWP will be dropped. However, you are right that the problem with UWP was that it was too tightly integrated with Win 10 and its iterations when not all previous windows devices are ready for upgrade. MS has addressed this problem by decoupling UWP from windows and while MS is waiting for the world to upgrade to Win10, MS put a temporary strategy. MS has not changed its strategy in distributing apps which is by using Win store. So, currently MS is re-energizing WinForm and WPF apps such that they can be easily distributed via Win Store. So, to sum up, console is not going anywhere, WinForm and WPF will not be getting new features, however, they will be updated to support unification of .net and whatever .net strategy in future. As for UWP, it is already using .net from the very start; It is already modern architecture. I think once the windows 10 has a bigger adoption and windows core released, there will only be console and UWP standing.

    • Agung Buana
      Agung Buana Month ago +1

      @R1PFake yes. search for "UWP sideload"

    • R1PFake
      R1PFake Month ago

      Can you use UWP to build a .exe (like WinForms or WPF) if you don't want to develop a "app" for the windows app store?

    • Agung Buana
      Agung Buana Month ago

      @IAmTimCorey Fair enough. I had my doubts as well but I think that threat from chromebook is why I think that MS would stick with UWP. MS will have to rely on arm64 to defend its turf against chromebook. The only UI framework that is ready for arm64 is UWP. Apple and Google are now trying to do what MS has been trying to do in the past decade.

    • IAmTimCorey
      IAmTimCorey  Month ago +1

      That's a theory. I'm just not convinced yet. I would lean more towards a new unified desktop system that can work cross-platform as being the ultimate winner. That's a long way off, though. In the meantime, we will see what happens with XAML islands and if more non-UWP desktop apps adopt UWP technology.

  • Gopi R
    Gopi R Month ago

    At two different companies now, I have quickly shown Business Analysts how to use Visual Studio and WinForms to create mockups.. and fine-tune them based on user feedback. This greatly aided in their requirements gathering process. It also greatly allowed us developers to focus on ongoing dev work.

  • Royce Lithgo
    Royce Lithgo Month ago +4

    For my company, WinForms RAD equates to faster delivery time and reduced development costs vs WPF. We still have no compelling reason to chose WPF over WinForms.

  • Sajjad Akram
    Sajjad Akram 2 months ago

    Is WPF difficult to learn compared to WinForms? I want to use gadgets like temperature, Energy, humidity etc that will get values from my hardware.

    • Solve Everything
      Solve Everything 2 months ago

      WPF is the future. It is required for Material design (Modern design).

    • IAmTimCorey
      IAmTimCorey  2 months ago +5

      It has its hard parts but it can also be easy if you don't stray into those hard parts. I would say that WPF is the way you want to go though.

  • Marcial Glori
    Marcial Glori 2 months ago +2

    Winform lacks layout container. Wpf has awesome layouts.

    • Royce Lithgo
      Royce Lithgo Month ago

      IMHO I prefer html table layout. Not a big fan of having to specify rows and columns for grid layout.

    • IAmTimCorey
      IAmTimCorey  2 months ago +2

      I would agree with that.

  • niksatan
    niksatan 2 months ago +2

    dude you read my mind, exactly video what i was looking for and topics i was confused about, thanks!

  • RyoMai
    RyoMai 2 months ago

    UWP is not going to fade away. On contrary, future client side consumer OS will only support UWP, because of its sandboxed security benefits. Look at Windows 10 IoT Core (Business) as a first step in that direction. Also UWP has optimized binding compared to WFP. Microsoft invests alot in UWP / Core . net . However it's still very limited in capabilities and WFP today is still muuuuuuuuuuccchhhhhhh more powerfull, damn.

    • IAmTimCorey
      IAmTimCorey  2 months ago

      Well, I guess we will see in a couple years.

  • djazz
    djazz 2 months ago

    No crossplatform alternative in the comparison? :/

    • Weboholics Person
      Weboholics Person 2 months ago

      @IAmTimCorey What do you think about Avalonia?

    • IAmTimCorey
      IAmTimCorey  2 months ago +1

      C# doesn't really have a cross-platform desktop UI in the traditional user interfaces. Was there one you were thinking of?

  • victor lieng
    victor lieng 2 months ago

    Amazing tutorial, I have adapted this for my existing projects and it makes everything clean and easy to change if I ever need to. Many thanks!

  • António Pereira
    António Pereira 2 months ago +1

    I disagree with the supposed UWP distribution difficulty. Is easy as sharing an *.exe, but it's an *.appx instead.
    The Store obligation idea some (a lot) people have is false.

    • IAmTimCorey
      IAmTimCorey  2 months ago +2

      You have to drop your security level in order to side-load UWP applications. That's the issue.

  • Wojciech Dudek
    Wojciech Dudek 3 months ago +1

    UWP is not dying, it's evolving. Look at all Windows updates, more and more Windows Forms parts of the Windows 10 have thier modern UI counterparts. UWP is not bad becouse of XAML or wrong technology behind it it's just bad becouse of pushing it above other platforms without giving something in return. UWP need to be more usefull in in business.

    • RyoMai
      RyoMai 2 months ago

      It does not to run on Windows Server, it's not possible to run as a service, it's not possible to run in the tray, it's not possible to hide the bar, and creating a background process in a pain because it stops when you minimize the app, it's a pain to distribute with the certificates,...
      I hope I'm wrong, but today it's a pain.

    • Wojciech Dudek
      Wojciech Dudek 2 months ago

      @IAmTimCorey definitive like "We just made Windows 12" hahaha. Anyway I actually like that Microsoft is tryiing new things all the time. I wonder if razor components can compete javascript frondend frameworks. I tried razor and it's awsome. I think it's good material for new video actuallly. :)

    • IAmTimCorey
      IAmTimCorey  2 months ago +1

      I was trying to communicate that it, as a standalone product, is probably the first of all of the UI frameworks to go away. The evolution seems to be away from "strict" UWP and towards "UWP in WinForms and WPF". At the end of the day, though, this is just speculation until something definitive happens (which will probably be a few years).

  • taab84
    taab84 3 months ago +1

    Doesn't WPF rely on DirectX for rendering elements? why Microsoft are claiming WPF will become cross platform in .net Core 3? unless they made DirectX also cross platform or use another API or having options to chosse the API (OpenGL, Vulkan...) like they did with DB engines, otherwise it's impossible

    • John Michael Stock
      John Michael Stock 2 months ago

      Even winforns has had DirectX acceleration before WPF came out

    • IAmTimCorey
      IAmTimCorey  3 months ago

      I talked about that in the video. They aren't claiming WPF will be cross-platform. They are changing the back-end code to be .NET Core, but that does not mean you can run it cross-platform. The conversion to .NET Core is so that WinForms and WPF can gain all of the benefits of the faster, lighter, and more powerful .NET Core.

  • Dmitry Lyalin
    Dmitry Lyalin 3 months ago +1

    Great video! Just one point that UWP is .NET Native and not “framework” so it’s a bit more complex. Solid content here regardless. As for UWP being dead is going a bit far but this is your opinion and I totally respect that

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      Yep, I misspoke on that one. As for UWP being dead, I don't think I said that. What I said was that I think UWP will be the first to go (vs WinForms or WPF). I don't think UWP will be gone for a while but I do think its influence (what little it had) is waning. Thanks for watching.

  • Tuna Bilgin
    Tuna Bilgin 3 months ago

    I hate winforms with cpu powered painting. Did anyone solved that :P

    • John Michael Stock
      John Michael Stock 2 months ago

      Parts of Winforms were GPU accelerated WinFX or GDI+

    • Tuna Bilgin
      Tuna Bilgin 3 months ago

      IAmTimCorey I have already that in mind. Thx anyway :)

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      DevExpress is the company that comes to mind. Their controls use DirectX. However, it will cost at least $1,000 per developer per year to have those controls.

    • Tuna Bilgin
      Tuna Bilgin 3 months ago

      IAmTimCorey of course i want to hear that libraries sir. Can you share?

    • IAmTimCorey
      IAmTimCorey  3 months ago

      Not without third-party libraries.

  • AdamsTaiwan
    AdamsTaiwan 3 months ago +1

    IAmTimCorey I was just looking at running WPF app on one Monitor and the source on another. Forgetting to close the app, I started to update the Width of the form and it instantly changed the running app. I remember this was mentioned that WPF markup can be written while the app was running, but I had forgotten. This adds another level to quickly prototype an app.

  • mot tahh
    mot tahh 3 months ago +2

    transparency is a tragedy in winform

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      Comes from its non-graphical background but I agree.

  • Black Dragon
    Black Dragon 3 months ago

    I doubt Xamarin is the choice.

    • IAmTimCorey
      IAmTimCorey  3 months ago

      Depends on what for. For mobile, it is the choice for sure. One common codebase for both Android and IOS.

  • Rami Gamal
    Rami Gamal 3 months ago +1

    Thank you Tim,
    I was confused between them, and now I know what I will do.

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      You are most welcome. Thanks for watching.

  • Keyboard G
    Keyboard G 3 months ago +2

    Microsoft owns electron now with the GitHub acquisition. That’s your cross platform ui.

    • IAmTimCorey
      IAmTimCorey  3 months ago

      True, although I don't think that is the "forever" strategy but more of a stepping stone. It has a place but I don't think it will be the whole desktop cross-platform market.

  • Croatian_guy
    Croatian_guy 3 months ago +3

    UWP is not going anywhere in some time, here why I think that:
    - a lot of Windows 10 is written in UWP (important stuff like Start menu, parts of the shell, etc), and basically all new features (I guess except the new Edge) are being done in UWP
    - they realized their mistake with store-only distribution, they made .msix packages and .appx exists, so you can make a "normal" installable package for your app and you get benefits like easy auto-update etc.
    - even though there are restrictions, you can go around a lot of them, list is expanding with every release (although some of the features probably won't get you approved to the Store, but will work in a non-store installation without trouble)
    - other vendors, like Adobe with Xd (Experience design), have shown that you can make a very functional UWP app that is nowhere close to the original "very touch-friendly" apps
    - UWP itself as a platform is expanding, allowing stuff like Electron, Win32 apps, React Native UWP apps and Xamarin UWP apps to be equal to "Modern UWP aplications"
    - with XAML islands, you can retrofit WinForms/WPF apps with UWP content to modernize them bit-by-bit, and it's being improved every year
    WPF is nice, but when you switch to it from UWP you start missing some stuff that UWP brought and improved. WinForms is easy, but as you said, should only stay for keeping current projects alive.

    • John Michael Stock
      John Michael Stock 2 months ago +1

      Until WPF addresses RAD Winforms will still be used for new projects

    • metaltyphoon
      metaltyphoon 3 months ago

      Agreed with every point above

    • IAmTimCorey
      IAmTimCorey  3 months ago

      Well, it remains to be seen.

  • The [in-D4MNL4T0R]
    The [in-D4MNL4T0R] 3 months ago +4

    I start using WinForm a year ago. Still using and learning it. I was thinking about learning UWP. after watching this, I changed my mind. I'm gonna stick to the WinForm and learn WPF. Btw great video.

    • IAmTimCorey
      IAmTimCorey  3 months ago

      Thanks for watching. I'm glad you enjoyed it.

  • noblackthunder
    noblackthunder 3 months ago +4

    i dissagree with you on WPF ...
    WPF ... is as easy as winforms ... you still can drag and drop and basically use WPF just like winforms .... not eating into development speed really at all ..
    WPF has just more complicated options ... actually i thin you never really need to touch xalm in WPF really if you want it easy ..
    just saying ^^

    • John Michael Stock
      John Michael Stock 2 months ago

      lol no it's not. There's a lot more to the equation than just dragging and dropping the elements

    • noblackthunder
      noblackthunder 3 months ago

      @Xi Wang bad idea yes still possible just as winforms all i saying ;)

    • Xi Wang
      Xi Wang 3 months ago +1

      noblackthunder I am a WPF developer with 10yrs exp. drag drop is a bad idea. If anyone in my team doing it, I will fire him.

    • noblackthunder
      noblackthunder 3 months ago +1

      @IAmTimCorey again i disagree .. I used allot fo WPF from winforms and working with xalm was the biggest learning curve for me back then.. though even at the start i could with ease drag and drop ... and then later when i learned more xalm it was easy to write changes into it directly without a big issue ... WinForms should be stoppet using really .. i mean your video is good dont get me wrong i just disagree that you are locking your self into some situation by draging and dropping and that its hard / more work from going to WinForms to WPF ... i say its equally as much work .. and does not need to be more .. sure if you wanna do more advanced stuff it will take longer for the UI .. but still simple UI that adjust is super easy and can be done with drag and drop and linking an object to a side or 2 sides or all for 4 sides ( at that point the button will scale sure instead of staing in place ) but still i disagree with you on that single point ... but the great thing is we dont need to agree =)

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      The problem with drag and drop in WPF is that it incurs technical debt when you do it. WPF is designed to be flexible with resolutions and window sizes. By dragging and dropping, you lock yourself into absolute positions, which negates one of the big reasons to use WPF. I'm you later want to improve the layout, you have to undo a lot of the properties that were added through drag and drop.

  • Felipe Almeida
    Felipe Almeida 3 months ago +1

    If windows forms is properly used, it could dispatch hard processing to background threads that are not cpu bound while keeping the rich UI to notify users whats is happening under the hood. Unfortunately it is hard to find developers with this skillset.

    • John Michael Stock
      John Michael Stock 2 months ago +1

      Apps have been using worker threads in Winforms like that for decades. Unless your making a highly graphically intensive app then who cares if some of the UI is processed by the CPU. Even then something graphical like video or 3d is done without accessing the UI anyway as they just render to the surface

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      Rich UI and Winforms don't typically go together without 3rd party libraries. I think the key is to use the UI that is right for your situation, not pick a UI and make it work for every situation.

  • Giorgi Japiashvili
    Giorgi Japiashvili 3 months ago

    Which cross-platform technology do you recommend for someone with experience in WinForms? Or you can disregard my experience WinForms

    • Dingle Flop
      Dingle Flop 3 months ago

      You can embed Electron, and if you are used to ASP.NET, you can build cross-platform apps with UIs that use web tech for formatting and such.
      Not terribly efficient, though I think...

    • Vivek Chatterjee
      Vivek Chatterjee 3 months ago

      avalonia is one option but still in beta avaloniaui.net/

    • Matthew Bagley
      Matthew Bagley 3 months ago +1

      Telerik and DevExpress are both fantastic. Try them. Their themes allow you to make the software look great.

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      There isn't a great cross-platform tech in C# for desktop apps that works like WinForms. You could check out Mono or Xamarin depending on which types of platforms you want to target.

  • Giorgi Japiashvili
    Giorgi Japiashvili 3 months ago

    OK, so I'm gonna keep using winforms and assigning control sizes according to the resolution (System.Windows.Forms.Screen.PrimaryScreen.WorkingArea)

  • Holger Priske
    Holger Priske 3 months ago

    The Main Main Question in this topic at all is: Will the Desktop-PC survive and in what environments. It's the only thing running windows.
    The usual prognosis is "everything goes on the web"; so just thinking about Desktop-strategies is a waste of time.
    The half of all private households will soon have smartphone and tablet, but not a windows-based laptop any more, and the solitude PC case is dead already anyway (except for gamers, developers, and grandpas).

    • taab84
      taab84 3 months ago

      @IAmTimCorey i don't agree, PC manufactured sales doesn't mean the decline of PC, more and more people prefer buying PC components and build it themselves

    • IAmTimCorey
      IAmTimCorey  3 months ago

      Not here to argue, I just wanted to mention that mobile/tablet apps definitely can be powered by .NET. Xamarin allows us to run device-native apps on IOS and Android. I'll be teaching that in the upcoming months.

    • Holger Priske
      Holger Priske 3 months ago

      @IAmTimCorey Sure, there are customers, and they will not go away. But their share of the entire software market is dropping.
      There will always be key account manager or some Authors using Word. But already editing an Video can be done online on TheXvid.
      The difference of apps on the phone ? They do not run windows/.net.
      "Needs power of the device" ? Means you don't want to have a round tip to the server on each user click, or "download" a radiobutton before you use it. Yes, it needs local power, but not "power". More like 20% CPU load of a celeron, not 100% of an i9.
      Doing something without browser, is done to overcome the limitations of the browser.
      A desktop front-end is useful on a small share of applications.
      Let's look at this number:
      2009: 0.7% of all webpages were accessed by mobile phones: 2019: 52.7%.
      Also software sales "Buy and use forever" vs. "Pay Per month" has done a big shift, this requires online connection.
      I have the impression, "saving a file on a given path on the local hard disk" is an approach passing away, within one generation.
      This is thinking of old guys.
      I'm a desktop-only developer, but I notice I talk only to people above 50, and no new 25year old developer, cares for desktop.
      Starting a new desktop project is 95% for self-use of a customer. Company-internal, not for sale on the free market.
      So this is almost the path of Console Applications.
      Sure, you can say the desktop developers from 10 years ago are still alive and have an income. No doubt on that.

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      In the first quarter of 2009, PC manufacturers shipped 66.2 million PCs. In the first quarter of 2019, they shipped 58.5 million units. Those numbers are for a quarter of the year, not the entire year. While the desktop PC may be somewhat on the decline, it is nowhere near dead, nor will it die anytime soon. Besides, the main market for desktop applications is not private households. It is business. Businesses can't replace desktop PCs with tablets, phones, or even Chromebooks (which I would argue are still desktop devices in some ways). As for the private households not using anything but tablets and phones anymore, those are desktop devices too. You don't buy an iPad and just install Chrome and Safari as your only two apps. You install actual apps. Why? Because the apps need the power of the device. How is that different than a PC desktop app? Just that the tablet doesn't run Windows so it doesn't count? If it were a Windows tablet, we would be running WinForm, WPF, and UWP applications on it. The web is great, but it isn't the entire solution.

  • Holger Priske
    Holger Priske 3 months ago

    This is more a podcast, no real reason to watch, (just to listen).
    Splitting jobs to different people, is only useful if you have different people.
    It's a drawback for doing something on your own, cause you have to enlarge your skills. Reason why people stick to "old" platforms, is not just existing apps, it's also existing skills.
    The 55 year old developer - and we do have such - will hardly change platform every 5 years any more. Especially they are less often like "give it a try" its more like "is it worth learning it" ?

    • Holger Priske
      Holger Priske 3 months ago

      @IAmTimCorey This "becoming an apprentice at 55" is kind of unique to our industry. That's probably worth a more philosophic discussion at another place.
      The usual way considered to be successfull, is to make career to become team-leader, apply social skills, talk with clients; not taking care for coding details any more. This is the Bill Gates/Zuckerberg way, programming for a few years.
      So a hacker, coding for 30 years, is already considered as having done no career. He just survived.
      Changing from naive excitement to more reserved thoughtfulness is obvious by aging.
      What is a trap for a company with eternal life, is not necessarily a trap for a person with limited working years left. Companies try to avoid to die. People don't.

      It's the same investment rule as on the stock exchange, as older you get, as less risk you should take. Don't buy stocks if you know you die in 6 months from now. All you should do is spend the money.
      People and Companies have different approaches.
      You consult companies, and if you talk about "staff", you propably talk about a permanent rotation of people.
      It's off-topic, I know, but worth a thought.
      But may be the relation is, you talk about something like "Every platform is going to die". Perishability or Transience is a challenge.

    • IAmTimCorey
      IAmTimCorey  3 months ago

      Yep, I didn't think adding other visuals would improve the conversation. As for splitting jobs, I agree that it is mainly useful for working with others. I don't agree that it is only useful for that. A clean separation of concerns is better for maintainability as well. As for moving to new platforms every five years, you don't really have too much of a choice. The world is rapidly changing. Five years ago, Windows 8.1 was the latest operating system from Microsoft and IE11 was the browser they were pushing. Now mainstream support for Windows 8.1 is already expired and Microsoft has built a replacement for IE/Edge upon the Chromium engine. Change happens. Yes, you can resist and stick to what you know but that's how you end up irrelevant and stuck. I actually specialize in helping companies that have done that take the leap into the modern era. It is painful, difficult, and it often involves totally retraining staff members. People who were the experts become junior developers again because they didn't keep up and didn't worry about it until it was too late. Don't get stuck in that trap. Also, don't assume that everyone over 55 is stuck in their ways. There are a number of older developers on this channel who are pushing to learn something new. What you experience is not what everyone experiences.

  • Grégory Bastogne
    Grégory Bastogne 3 months ago +1

    You're so wrong about *modern WinForms*. You clearly don't know about companies like DevExpress. WinForms is no longer CPU-bound since companies like DevExpress provide DirectX support for drawing the interface. Also it is not hard to scale anymore first thanks to recent updates from Microsoft related to High DPI support, and companies like DevExpress providing automatic scaling and positioning tools like their LayoutControl. Remember DirectX now draws your application using your graphics card so that's just performing as good as any other technology would. WinForms is just more complete.

    DevExpress also provides completely SVG-based UI skins that make for very good looking flat UI user interfaces.

    Furthermore we can now add many more things to the list like the MVVM design pattern. You can easily use it with WinForms to separate the workload between people that do UI from people that do backend. Or to just organize your code better.

    Given the choice today I still choose WinForms over anything else because it has everything other technologies have plus a ton more, provided you're developing an application intended to run solely in a Windows environment. The only real drawback to me is Visual Studio's designer tendency to crash or freak out but it is totally optional.

    • Grégory Bastogne
      Grégory Bastogne 3 months ago

      @IAmTimCorey Ok at least this makes it more clear for other people. I had to say this though because nobody will actually think about third party tools that change everything if you don't tell them about it. Regarding licence prices well I cannot *officially* contradict you.

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      You can't say I'm wrong about WinForms and then say "if you pay all of this money, those issues go away". I'm well aware of DevExpress. The entire reason they are a thing is because they need to improve on WinForms. To do so, you as the customer need to pay (at minimum) $999 per developer! Does that sound like WinForms is complete and works with the GPU well if you are saying the solution is thousands of dollars and a reliance on a third-party tool? There are a lot of great tools out there and I definitely recommend that you use one if you can (in fact, I'm a big fan of DevExpress). However, I don't consider third-party tools as a part of C# directly. It's the same reason why I don't mention Resharper shortcuts when talking about Visual Studio tips and tricks.

  • Miloš Jovanović
    Miloš Jovanović 3 months ago

    I think that UWP future was with Windows Phones, so you can have same apps on desktop and mobile. Also, only UWP apps work on Windows Phone (Windows 10 Mobile). The future for UWP isn't bright because Windows 10 Mobile is now discounted.

    • jhwheuer
      jhwheuer 3 months ago

      Try monetizing an app on any other platform than UWP.

    • IAmTimCorey
      IAmTimCorey  3 months ago

      Mobile being discontinued did hurt UWP. There are still other places it is used (XBox, HoloLens, IoT, etc.) but mobile was the biggest area and now that's gone.

  • Bryan isthebest
    Bryan isthebest 3 months ago

    the real question is who is developing desktop UI applications anymore? definitely do the web comparison and include mobile

    • Bryan isthebest
      Bryan isthebest 3 months ago

      jhwheuer that’s why you offload the grunt to a server and only have to render the ui and do light processing tasks on the client. regardless of the number of people switching to tablets, etc... it is an interesting, and relevant use case

    • jhwheuer
      jhwheuer 3 months ago +2

      U need a lot of processing power and handling large media sets, web ain’t cutting it...

    • IAmTimCorey
      IAmTimCorey  3 months ago +4

      Yes, the vast majority of software development is for business applications. Those are predominantly desktop applications, although web is definitely having a large impact. Here's the deal: the desktop is not going away and the desktop app isn't either. Not for the next 10+ years at least. Yes the web is great but the desktop brings power that the web still uses badly. There is a reason there is still Swift/ObjectiveC apps and Java Android apps - those are "desktop" apps for devices. They have more power and are faster than JavaScript-based apps.

    • Bryan isthebest
      Bryan isthebest 3 months ago

      Suleyth View ok yes i stand corrected. for commercial or industrial applications desktops aren’t going anywhere yes. i was talking about the consumer market. i’d say it’s not a stretch to think that in a few years most households won’t have a computer and will interact with software through smartphones, tvs, tablets, etc... thanks for so eloquently pointing that out

    • Suleyth View
      Suleyth View 3 months ago +3

      Bryan isthebest Smartphones and tablets replacing desktop?
      AHAHAHAHAHAHAHAHAHAHAHAHAH
      Oh you’re serious, let me laugh harder
      AHAHAHAHAHHAAHAHAHAHAHAHAHAHAHAH

  • Eduardo Guzman
    Eduardo Guzman 3 months ago

    I used UWP and for the distrution when you create the app package allows you to change to developer mode and install the uwp app.

    • Eduardo Guzman
      Eduardo Guzman 3 months ago

      @IAmTimCorey Yes that is right ,if you install the app, you can take a look when the app package installer is open, what are the capabilities access to your computer.

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      So the issue with that then is that other apps can take advantage of it and you lose the safety that UWP is supposed to provide.

    • Eduardo Guzman
      Eduardo Guzman 3 months ago

      @IAmTimCorey Yes, this activates the developer mode on the computer and stays in this mode for future new installations of apps.

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      Doesn't that turn developer mode on for the computer, not just the app?

  • MadBunnyRabbit
    MadBunnyRabbit 3 months ago +5

    I've tried both Forms and WPF. AFter few minutes of WPF I immediatly got to like it so much more than Forms and that's why I'm here. It was quite informative and I'm definetly gonna stick with WPF. I just don't understand one thing, how Forms are faster to implement? As someone who's just learning - WPF is so much faster for me to implement. I don't know, seems strange to me that Forms can be faster to implement.

    • sl/ \or
      sl/ \or 3 months ago +2

      @MadBunnyRabbit There we go down the rabbit hole... Look, yes MVVM is certainly not restricted to WPF but honestly I've never seen that pattern beeing used outside a WPF application and I doubt there are lot of people out there that have. Why? Simply because databinding in WinForms is not the same as in WPF (check this stackoverflow.com/questions/982978/mvvm-for-winforms). Ask yourself why should we extend, tweak and hack WinForms to support databindings the way WPF does when WPF already exists? Do we really need WinPF or WPForms? ;-)

      Use WPF as it fits to your needs thats is TOTALLY fine! As I already mentioned the framework does not force you on "how" you have to use it it just tries to encourage.

    • MadBunnyRabbit
      MadBunnyRabbit 3 months ago

      @sl/ \or Clearly there's some misscommunication.
      1. Unless I understand it wrongly MVVM is not restricted to WPF and can be used with WinForms.
      2. Again, correct me if I'm wrong, MVVM is mainly for cross platform compatibility sake. So if you build in WinForms with compatibility in mind you MUST use MVVM.
      3. If you don't care about compatibility (and I don't think I will ever care about it) there's no need to use MVVM even in WPF.
      Are the above Flase? Because I believe they are true. That being said, OMG! Setting up my first view model was a MASSIVE pain in the butt. I can definetly see why they would extend the work time.

    • sl/ \or
      sl/ \or 3 months ago

      @MadBunnyRabbit My friend, the point is that databinding, MVVM and all that stuff was particularly introduced with WPF and builds IMHO one of the main benefits of WPF compared to WinForms (ignoring all that fancy animation and color Stuff). Not using this features would be like driving a high speed car but not shifting gears... As I tried to say one needs to implement all this infrastructure stuff to make use of all this features and to use WPF the way the inventor intended. This means a lot of work one does not have to do using WinForms and therefore a slower development process.
      Yes you don't need to make use of all this features but that's just not the way it's meant to be used.
      The framework does not force you on "how" you have to use it but it tries to encourage the developers to use a certain architecture. If you don't want to go that route it's also OK but then you maybe have to invent the wheel yourself

    • MadBunnyRabbit
      MadBunnyRabbit 3 months ago

      @sl/ \or Sooooo... I just did my first view model and I don't understand what do you mean by doing WPF "right." From my understanding it has nothing to do with wpf specifically. If I don't want a well compartmentalized code that I can reuse on any platform then I don't do it. Just like forms. If I want to build in forms and have the app on android I still need to use the view model principles and INotifyPropertyChanged.

    • MadBunnyRabbit
      MadBunnyRabbit 3 months ago

      @IAmTimCorey I guess soon, I'll see what's up with this view thingy. I can see how maybe doing a less standard or more complicated layout could be a problem. For example I made a calculator where 0 was 2x as wide and enter 2x as tall so I had to make a grid in a grid in a grid, ugh. BUT, I've made a tic-tac-toe game and after I got all the logic right for a 4 by 4, I scaled it up to 10 by 10 in about a minute and I don't believe you can drag and drop 1.4 buttons a second. But that's a very specific case. So yeah, I'm starting to see how it could be problematic but for now it seems like it varies case by case. Still haven't thouched this view something tho, so yeah :] But thanks for the answer.

  • Mohammed Mafaz
    Mohammed Mafaz 3 months ago

    Thank you for this comparison. Great insight, listened till the end. It emboldened my love for WPF further...

    • IAmTimCorey
      IAmTimCorey  3 months ago

      You are most welcome. Thanks for watching.

  • Alberto Mandlate
    Alberto Mandlate 3 months ago +8

    UWP isn't .Net framework. UWP is .net core

    • IAmTimCorey
      IAmTimCorey  3 months ago +1

      Correct, sorry, I misspoke. I believe the Metro apps were .NET Framework but UWP moved to .NET Core.

  • J Jff
    J Jff 3 months ago +2

    Yeah this video is Just Plain Wrong. I don't think you know what "UWP" is. I know it's not your fault though. Microsoft completely bungled the marketing and documentation. I 100% agree with the other poster who said UWP the marketing term is *probably* going away. But believe me buddy, the Windows Runtime is here to stay.

    And a BIG **NO** to your misinformation that Microsoft is "moving unique parts of [Windows Runtime] to other UIs". Frankly, I don't even know what that means, and I don't think you do either. It's just jumbled up words that don't make sense when strung together. And the reason you don't know is because you don't understand the Windows Runtime, or modern COM, nor their relationship to .NET -- specifically, the .NET Standard. .NET Standard is just that -- a common standard. You will find the common standard implemented in .NET Core, Windows Runtime, and Xamarin. Notice I did NOT mention the .NET Framework, which is where WinForms lives, which implies that WinForms is dying. If Microsoft is "moving" anything, they're moving Win32 over to the Windows Runtime application model; it's going in the opposite direction from what you said.

    Now, for anyone saying "UWP looks like crap", that's hogwash too. You can tweak the appearance through XAML, just like you do today with WPF and Xamarin apps. You could probably make it look exactly like Win32 controls. The Windows Runtime programming model is essentially the same as the .NET Core programming model, with XAML and MVVM.

    I strongly urge you to go read about C++/WinRT, gain an understanding of the WIndows Runtime and modern COM, learn the correct terminology, and watch some presentations from the last Microsoft Build conference. They're here on TheXvid, you can't miss them. Windows Runtime, via C++/WinRT, Windows Runtime Components, C#, and .NET Core, are the way forward for Windows programming. (Notice, it's called the Universal ***WINDOWS*** Platform, for a reason.) If you need cross platform, then you'll go with .NET Core, because Microsoft very very very very very badly wants you to deploy on Azure.

    • John Michael Stock
      John Michael Stock 2 months ago +1

      WinForms has been confirmed as part of core 3, so naaa

    • Samuel Grahame
      Samuel Grahame 3 months ago

      @sl/ \or I don't think you understand how much money Microsoft gets from the enterprise industry from people using windows only in there buildings. It's just not an issue. I was playing around with a project called classicforms which allows you to use a winforms designer and it will use bridge to translate to js.

    • sl/ \or
      sl/ \or 3 months ago

      @Samuel Grahame I'm surprised you didn't tell me "Why don't you switch to Java?". The point in all this is that MS needs to finally address the issue of a real multiplattform UI framework. Still in 2019 there are apps that just don't fit into the web approach and as you already mentioned there are other libs and technologies that are real plattform independent but just not from MS.

    • Samuel Grahame
      Samuel Grahame 3 months ago

      If you really needed it. If you want to use other platforms make it web based. Or just don't use .net framework as there are heaps of open source UI library's

    • Samuel Grahame
      Samuel Grahame 3 months ago

      @sl/ \or well I mean, in 10 years you could of made winforms for Mac and linux

  • Dennis Areché
    Dennis Areché 4 months ago +1

    Currently I’m suffering the intuitive, useful and productive UWP distribution for LOB apps... Thanks Tim for the video!

  • sevensolutions
    sevensolutions 4 months ago +5

    Very good comparison.
    But i don't think that XAML produces so much overhead or large files.
    You do not need to style each button separately, thats why you create ResourceDictionaries. It's just like css, but it works :P
    Once you've built your own small framework, you're very quick to develop new applications.

    • IAmTimCorey
      IAmTimCorey  4 months ago

      When you build your own framework, you can quickly get larger resource dictionary files. Your forms aren't as big but you have more places to look to fix things.

  • daniel constantin
    daniel constantin 4 months ago +2

    Nice work!
    I would also enjoy a video more general.. MFC, winapi, WPF ... Also web :)

  • kanati kanati
    kanati kanati 4 months ago +3

    a downside to winforms is that it doesn't use your GPU?!? wtf. Who CARES if an application uses the GPU?

    • Aeroxima
      Aeroxima 18 days ago

      "Who cares if it uses only a fraction of the computer to run things poorly? NOBODY cares about performance!"
      I like things to be responsive. That's a huge perk of using SSDs. Things feel different if there's immediate feedback, vs "it registered, but we'll get to it in a sec."
      Maybe it's not important to everyone, but even tiny fractions of a second matter in terms of experience for some of us. For years I couldn't place why I "just knew" certain programs would be "sluggish" if they tried to do certain things, when in a game the same sort of thing is done seemingly effortlessly like it's nothing. I see why now.
      Also I don't like this endless trend of "whatever, the hardware is so great, it doesn't matter if we code like garbage, just max out the CPU, everyone has high end production/gaming/whatever machines." You get better hardware, which means almost nothing because the software just gets lazier and uses up the additional resources. "But who cares, time is money, and money is all we care about!"
      I bet that last line is outright ridiculous to a lot of the people here. "Of course, what else would you do programming for? It's just a way to make money." People don't buy things just to give out money to whoever did some arbitrary task better. They buy things literally because there are things they cared about more than having the cash they forked over.

    • John Michael Stock
      John Michael Stock 2 months ago

      @IAmTimCorey Having a responsive UI has nothing to do with offloading to a GPU, it's to do with threading and not locking the main thread. Which can happen with a GPU

    • John Michael Stock
      John Michael Stock 2 months ago

      @Matthew Good That makes no sense. Only graphical applications NEED GPU acceleration and they have had that via DX in the window. There's very few times the UI itself needs to be GPU rendered, which btw part of Winforms was anyway

    • Eduardo Schwartz
      Eduardo Schwartz 3 months ago

      @0M9H4X Customers wants to look at several windows at the same time, for example they want to open the products form, the prices form and the customers form, and MDI interface give them just that with a single menu item selection. They hate when they need to close one window to open another as in a SDI application.

    • Holger Priske
      Holger Priske 3 months ago +1

      Most business apps don't care about videos and stream etc.; and most of them do not even use Multithreading; while especially on desktop, the 2-4-6-8 core machine is the standard. I've hardly seen any CPU with 100% load, so there is no leak of computing power any more.
      It's a limited number of applications, that require scaled videos, or semi-transparent backgrounds in fading colors.
      Today, there are to many people who try to sell useless applications that just look cool, but do the same as an other application 10 years ago.
      That's nothing for the "getting the job done" developers.
      The real tough guys, do load their jobs on the GPU, this is GPGPU, doing something else than graphics on the CPU. Just invert a matrix or whatever.
      But this on the other hand, is not part of the UI, therefore not supported by the UI.
      If you separate UI from business layer, and run them in parallel, you most often gain more, than just enabling the use of GPU.

  • Misterlikeseverythin
    Misterlikeseverythin 4 months ago +2

    Every one of these kinda suck. Says a lot about how bad Microsoft is at designing UI that my go to method of making something quick that has a UI with C# is using Unity game engine. It's also cross platform this way.

    • Giorgi Japiashvili
      Giorgi Japiashvili 3 months ago

      Can you show me some examples of your work done in Unity? I mean software, not video games.

    • Giorgi Japiashvili
      Giorgi Japiashvili 3 months ago

      That's not a bad idea, tbh.

    • IAmTimCorey
      IAmTimCorey  4 months ago +1

      You can do a lot with each of these. It just depends on your skill level and what your need is. Remember that the primary purpose of these desktop apps is business. That's a different set of requirements than gaming or gaming-style UIs.

  • Arve Eriksson
    Arve Eriksson 4 months ago +2

    I use a DOS-based LIS at work. (Laboratory Information System - basically interacting with a remote database over VPN.) It's great, it's rock solid, it's user friendly, and one of the ugliest bits o' software I've ever used. 10/10, would use again!

    • IAmTimCorey
      IAmTimCorey  4 months ago +1

      lol, yeah, you can do a lot with a Console UI. Just don't ask them to be pretty (unless you do some funky stuff with ASCII art).

  • Matthew Bagley
    Matthew Bagley 4 months ago +7

    Great comparison!
    I use WinForms even for new client projects. I use third party controls to give the systems a clean and modern UI. I can complete a project in less than half the time that my MVC/Xamarin counterparts.
    Long live WinForms.

    • Giorgi Japiashvili
      Giorgi Japiashvili 3 months ago

      @Matthew Bagley Hey, can you specify which third party controls do you use exactly? Also, I'm interested to see how the end result looks. I'm using MaterialSkin, I think it looks a bit better than System controls but it's definitely not perfect. And how do you make your software DPI-aware? I mean, how do you make it look OK regardless of the resolution and size of the user's monitor? I'm writing the location and size of every control as a formula which is dependent only on resolution and/or other controls. It works but it's a lot of work.

    • Matthew Bagley
      Matthew Bagley 3 months ago +2

      Carboni its bang on! We use cross platform technologies when it suits the system, but a lot of the time you’re talking about systems that will purely be used by office and production staff running windows on a desktop machine. It’s win win for the customer. Good performance, clean UI and reduced cost.

    • Carboni its
      Carboni its 3 months ago +1

      @Rainer Wahnsinn Why? Thanks third part controls the UI is improved, and development time in windows form is low (=efficiency, productivity).

    • Barry Manilowa
      Barry Manilowa 4 months ago

      Matthew Bagley But those MVC/Xamarin folks can built across many platforms way faster than you can. Their applications also can provide a better user experience.

    • IAmTimCorey
      IAmTimCorey  4 months ago +2

      When you find a good groove, you can make things look good and produce them fast. Just be careful that you stay current and don't get stuck in the "if it ain't broke, don't fix it" mode so long that the world passes you by.

  • Ian Witham
    Ian Witham 4 months ago +1

    There's also Avalon UI. It's a clone of WPF (for the most part) and is actually cross platform. If I were to make a cross platform application in .net targeting the desktop I'd look at this rather than Xamarin, which is still very mobile focused

    • Ivan Bolatti
      Ivan Bolatti 7 days ago

      You mean "Avalonia". "Avalon" was actually Microsoft's codename of WPF.

    • Ian Witham
      Ian Witham 4 months ago

      @IAmTimCorey maybe one day 😂

    • IAmTimCorey
      IAmTimCorey  4 months ago

      That's a possibility, although not Microsoft controlled.

  • Lost Archangel
    Lost Archangel 4 months ago +2

    When Microsoft wrote Visual Studio Code, they used Electron+TypeScript/JavaScript.
    Personally, I'm not looking forward to any future where JavaScript might become part of my day-to-day coding life, but now that Microsoft has come along with Blazor, any thoughts on Blazor+Electron+C# and how or if it might fit into the .NET desktop development picture going forward?

    • IAmTimCorey
      IAmTimCorey  4 months ago +2

      I think Blazor is a stepping stone (and a really cool one) but I don't think it is the endgame. It is still dependent on WebAssembly, which slows it down. I think true cross-platform desktop UI will be the endgame for desktop apps.

  • Barry Manilowa
    Barry Manilowa 4 months ago +8

    Nah! I"ve used WinForms and WPF. Your comparison is lopsided. Yes, XAML can be slow to develop on if you want to get really fancy, but with WinForm, you can't get fancy at all.
    WinForm layouts and controls require some serious programming to style or change their behaviors. WPF requires far less code to do the equivalent WinForms layout, if you take the most simplified approach: use an absolute grid layout, use VS Studio built-in layout features and use the code behind development model. Using MVVM with WinForms is very difficult and requires some extensive modifications.
    WinForms is dead end Win32 code. UWP is also dead end as it doesn't fit anywhere now that Windows has lost the mobile market for good. It is a watered down version of WPF with lots of limitations. It also designed around a single window UI layout model which is not optimal for a desktop. Face it, Microsoft blew it by chasing the mobile market with UWP and WinRT, while ignoring WPF. Now, it is left with a neglected WPF platform and a prehistoric one, WinForms.

    • Samuel Grahame
      Samuel Grahame 3 months ago

      @Barry Manilowa well I mean, I don't see what we are doing as a war. I cannot find any material that Microsoft use wpf for there UI framework for visual studio. I would love a source to that. You can use wpf with cpp. With the way you suggest. But wpf is not natively in cpp. You have to mix csharp and cpp.

    • Samuel Grahame
      Samuel Grahame 3 months ago

      @Barry Manilowa everything I searched showed it is dog shit to use wpf and not using csharp.

    • Barry Manilowa
      Barry Manilowa 3 months ago

      Samuel Grahame Nonsense. WPF is a .NET technology, but it can be called from C++/CLI fairly easily. Visual Studio is written mostly in C++ and interfaces with WPF. A perfunctory google search would have spared you from embarrassment and technical defeat.

    • Barry Manilowa
      Barry Manilowa 3 months ago

      Samuel Grahame Learn about good UIs vs bad ones. There's tons of literature concerning how bad Microsoft's UIs are. Almost every usability expert deplores Microsoft shitty user interfaces and the ribbon bar comes up frequently as a case study.

    • Samuel Grahame
      Samuel Grahame 3 months ago

      @Barry Manilowa well I mean, pretty sure visual studio is in C++ I highly doubt there is wpf for C++ same with office

  • Eddie Wyatt
    Eddie Wyatt 4 months ago +9

    I really don't agree is Tim's assessment that a WPF application takes longer to develop than WInForm. If you do it "right" you've abstracted all of the UI styling into a themes, which BTW you can buy/find for free. So you should not be spending time fretting over your button shading, so to speak.

    You have essentially the same RAD layout tools in WPF as WinForms. The only reason to consider WinForms in my opinion is legacy development.

    • Eddie Wyatt
      Eddie Wyatt 4 months ago

      @IAmTimCorey I develop UIs for both WinForms and WPF too. And I drag and drop UI components to the WPF design surface all the time - to each his own. Now, you'll be hand tuning the XAML that is generated.

      Maybe the point you were trying to make in you article was that the learning curve for Winforms is lower than that of WPF - and I'll give you that. However within a day or two of learning, you can be cranking out basic UIs in WPF. To truly be proficient, your talking about months of use. But once you become proficient in WPF, you can crank UIs with the same effort as WinForms.

      WPF has the edge though. Its much more malleable. Also the MVVM model is such a great pattern for UI decoupling.

      If the learning curve was the point you where trying to make, it did not come over that way in the video. In my opinion trade off is better architecture/maintainability using WPF vs. quicker learning curve of WinForm if you have zero experience in the technologies. With few exceptions, the learning investment should be made given the long term gains.

    • Barry Manilowa
      Barry Manilowa 4 months ago +1

      Can we all agree that Microsoft can do better than it has on the UI front?

    • Underground Pianist
      Underground Pianist 4 months ago

      @IAmTimCorey It's a pointless ping pong flurry of messages. I too have almost 20 years commercial experience with many global companies around the world. At the end of the day, I have my opinions and you have yours. It's a good business model you have, teach, make money 🤑. Honestly not found much of your materials useful to me, I am sure though there will be something. I'm not a coding genius or guru. maybe my experience has helped me out a lot but I've made a lot of mistakes too.

    • Underground Pianist
      Underground Pianist 4 months ago

      @Barry Manilowa ”Every man (or woman) is in someway my superior, from that I learn.” Emmerson

    • Barry Manilowa
      Barry Manilowa 4 months ago

      IAmTimCorey Yes, WinForms is simple, but it falls flat on its face when you need anything more than that like collapsible layouts. WinForm interfaces are so pre-911.

  • Damian
    Damian 4 months ago +4

    Correct, WinForms is NOT DEAD. WPF is also, NOT DEAD! This is a huge pain-point in our office with a lot of misinformed developers and managers. Well done on the shout-out to Xamarin too

  • Lothar Scholz
    Lothar Scholz 4 months ago +2

    UWP just looks ugly and a total waste of precious screen space. Imagine an IDE running with this settings. Terrible. And the widgets are terrible simple. All optimized for visuals but not for functionality.

    • jhwheuer
      jhwheuer 3 months ago

      Ever actually developed a UWP app?

    • Samuel Grahame
      Samuel Grahame 3 months ago

      @Lothar Scholz devexpress and wpf is pretty impressive.

    • Lothar Scholz
      Lothar Scholz 4 months ago

      @IAmTimCorey Thats the theory. The practice of time/labour cost and forward/backward portability is very different.

    • Barry Manilowa
      Barry Manilowa 4 months ago

      IAmTimCorey Sorry, I will agree with you when I see it done. Right now all the UWP applications look like ass! They're not optimized for the desktop. Yes, I am sure if you're a masochist you might be able to get something that's remotely usable and viewable on the desktop. Still, the Windows Store Security model makes development on it sucky.
      What's really shocking is that Apple has some of the most ancient tooling ever. A good deal of XCode and Cocoa goes all the way back to the Next Era. Yet, developers have managed to create some unbelievable software with it. Miceosoft had the world by the balls and they fumbled it bad. Recently, Microsoft closed one of my bug reports on GitHub because it is low priority for their customers. WTF? I would immediately fire any developer who thinks it is OK to release software with a bug that causes your application to pause and eventually crash. Microsoft is just a mediocre company who is riding on an undeserved monopoly.

    • IAmTimCorey
      IAmTimCorey  4 months ago +1

      UWP, like WPF, WinForms, and even the Console, is a UI. What you create with it is up to your skill as a developer and designer. You can make amazing looking apps or apps that look horrible. You can make apps that have poor spacing or apps that have great spacing. At the end of the day, if you can't make UWP look good, that's on you, not the tool.

  • Dan Howard
    Dan Howard 4 months ago

    Best one: JavaFX.

    • Dan Howard
      Dan Howard 3 months ago

      @Grégory Bastogne Keep crying.

    • Grégory Bastogne
      Grégory Bastogne 3 months ago

      The video is about C#. Have you read the title?

    • Dan Howard
      Dan Howard 4 months ago

      @0M9H4X What are you talking about? OpenJDK. It's all open source.

    • 0M9H4X
      0M9H4X 4 months ago

      Imagine paying Oracle $50 per seat to use your App LOL

    • Dan Howard
      Dan Howard 4 months ago

      @IAmTimCorey If we're talking about a desktop UI showdown then JavaFX beats all of these. Take a couple of weekends to play around with it and you'll see what I mean.

  • Herman Eldering
    Herman Eldering 4 months ago +5

    UWP does not use .NET Framework, as matter of fact I think it was the first .NET Core platform.

    • IAmTimCorey
      IAmTimCorey  4 months ago

      I think you are right. It didn't used to be but it is now. It isn't cross-platform though because it is entirely based around Windows APIs.

  • Christian7573
    Christian7573 4 months ago

    What about the rise of Microsofts "Windows Core OS" where more focus is on UWP?

    • IAmTimCorey
      IAmTimCorey  4 months ago

      I hope it comes about and succeeds. I was a big fan of the Surface RT machines. I bought one for my mother (so she wouldn't get viruses). However, that flopped almost immediately. Every time Microsoft tries to force the new future without the legacy, they get bitten. I hope that isn't the case here but I'm afraid it will be. Too much is dependent on legacy apps. That's why Windows 7 and even (shudder) Windows XP is still so popular.

    • Gavin Wardrope
      Gavin Wardrope 4 months ago

      It's hard to say much about CoreOS, because annoyingly Microsoft don't like talking about technology until it's baked. And frankly it's difficult to pull apart the threads of all the technology that's available and in development to understand where we're at. But I'm guessing that Windows will steadily migrate in steps toward that model. Remember that WinRT (native libraries and UI) is a part of the UWP model. And that is where all of Microsoft's work is now. They are doing nothing with Win32 now and very little with WinForms and WPF, in fact .Net Standard 4.8 will be the last version because moving forward, they want everyone on a single platform (.Net Core / .Net 5) which will consume UWP's WinRT (Via Xaml Islands / UI.Composition / WinUI / Next). This is why they have ported WinForms and WPF as UI libraries over to .Net Core, because they want people on this modern application platform, capable of utilizing UWP tech more readily.

  • Aj Venable
    Aj Venable 4 months ago

    Great UI overview presentation! Thanks Tim!!

  • zORg alex
    zORg alex 4 months ago +1

    Cool beans! I kind of figured it out. Never did a WinForm app though. Except those I wrote while in University.

    I went straight to WPF because I was fed with atrocious (by my view) forms designer and ways to create WinForm windows. I find WPF to be quite fast to layout, but complicated, when you have 1k of different windows, controls, convertors and so on. + designer was bugged all the time. Now it hangs sometimes rendering me unable to use Properties pane, but to write xaml directly or restart it.

    • IAmTimCorey
      IAmTimCorey  4 months ago

      Yeah, it can grow in size rather quickly.