The future of WinForms...
-
Jeremy Falcon wrote:
he main app in question that I'd be working on is an 8 year old product based on WinForms.
If you're tasked with writing new UI components, you could build them in WPF and host them in the existing WinForms app. FWIW, I'm in the process of porting this[^] WinForms app (30K lines of code) to Android, and later iOS. I'm using Xamarin to build a native UI and 99% of the business and persistence layer has been portable without any changes. One of the huge wins using Xamarin is that a user can take their desktop database file and plop it onto their Android device (and vice-versa) with no problems. (In reality, they don't have oto do this manually. I've written a cloud backend that lets them sync their data between the desktop and mobile versions of the app.) I'm a big fan of WinForms and Xamarin and not ashamed to say it. The productivity gains are awesome. /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
Ravi - I'd love to hear how truly "cross platform" your Xamarin application is. Are you able to run on Windows / Mac / Android / iPhone / Linux ? My understanding is the C# business logic translates, but not the UI or XAML. Can you confirm from your experiences?
"Qulatiy is Job #1"
-
Ok, try not to laugh at the title. Right now, I assume there is no real future in WinForms. It's gonna be the next VB6 if not already, as in it'll hang around but people are gonna look at it funny. That being said, I just had a job interview with a guy who I really like. He's got an entrepreneurial spirit which I jive with. Right now, for the job, the main app in question that I'd be working on is an 8 year old product based on WinForms. Should I get the job, and to plan for the future... I know WinForms isn't going anywhere. But for the big picture, think 10 years from now... we all know .NET Core is being shown the love. So, my question is, if I wanted to write a Microsoft-backed thick client application in C# that's possibly cross platform... what options do I have? I know Xamarin is one. Is that the only one? And of course, there's things like wxWidgets, Qt, and even GTK+ with C# bindings, but is Microsoft cooking up some Windowing/GUI juju meant to be cross platform that I just don't know about yet? Like most LOB apps, this is a MS-centric shop, so I'm just curious to know what the latest buzz is on the geek street.
Jeremy Falcon
BTW, read [this awesome reply](https://www.codeproject.com/News/39686/The-future-of-WinForms.aspx). Not sure how it ended up there, but it's a gem on WPF. Totally expresses my sentiments. :laugh:
Latest Article - Class-less Coding - Minimalist C# and Why F# and Function Programming Has Some Advantages Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
-
I like Winforms. It seems a good match with the Windows UI. It seems odd that MS have left it fallow - what else would they like us to use? We could use WPF but that isn't updated before. Given that Windows' success is on the top of desktop apps - why wouldn't Microsoft want to give us a first class, up-to-date framework for it? What would be the downside?
they don't have people to working on it...especially since google,amazon,oracle,saleforce are stealing the thunder and sales with cloud and with microsoft strategy for the cloud and since all development is moving towards web or cloud or whacma call it
Caveat Emptor. "Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long
-
they don't have people to working on it...especially since google,amazon,oracle,saleforce are stealing the thunder and sales with cloud and with microsoft strategy for the cloud and since all development is moving towards web or cloud or whacma call it
Caveat Emptor. "Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long
I can see they might not put 100% at the top. If everything goes to the cloud Windows becomes irrelevant... so why not keep people interested in developing for it.
-
Ok, try not to laugh at the title. Right now, I assume there is no real future in WinForms. It's gonna be the next VB6 if not already, as in it'll hang around but people are gonna look at it funny. That being said, I just had a job interview with a guy who I really like. He's got an entrepreneurial spirit which I jive with. Right now, for the job, the main app in question that I'd be working on is an 8 year old product based on WinForms. Should I get the job, and to plan for the future... I know WinForms isn't going anywhere. But for the big picture, think 10 years from now... we all know .NET Core is being shown the love. So, my question is, if I wanted to write a Microsoft-backed thick client application in C# that's possibly cross platform... what options do I have? I know Xamarin is one. Is that the only one? And of course, there's things like wxWidgets, Qt, and even GTK+ with C# bindings, but is Microsoft cooking up some Windowing/GUI juju meant to be cross platform that I just don't know about yet? Like most LOB apps, this is a MS-centric shop, so I'm just curious to know what the latest buzz is on the geek street.
Jeremy Falcon
:) My friend. First I will quote Redmonk analyst James Governor: "When companies grow up, they turn into Java shops". With that in mind, if you want A FUTURE you should learn Java. Period. So that said and knowing that that only applies to the Server, your options in the thick client front end are quite limited. We have seen everything come to Windows since the heyday of Win32. It's the "Fire and Motion" that Joel Spolsky mentioned in it's seminal Joelonsoftware blog. We've had WinForms, WPF, Silverlight, Metro, and now UWP. I've seen Fortune 1000 throw thousands of dollars rebuilding something from the former to the latter. Ironically, my fellow, I've only seen WinForms apps survive. With the whole Web then Mobile revolution when you need a thick app you can't be picky about the environment. It has to run across the board and only WinForms does that. WPF needs heft graphics, Silverlight is just dead, Metro needs awful Windows 8 and UWP needs Windows 10. In the same, Swift or Obj C need iOS and Java is only valid for Android in the client side with people moving swiftly to Kotlin. with that in mind, don't think .NET Standard or .NET Core have any future outside Docker containers. We are currently pushing all IIS dependent migrations to go to .NET Core, but that gonna take a while, since Kestrel is still NOT IIS. Hope this long rant serves you. BTW. If you haven't, learn WCF, that's the only thing useful from the Vista era 3.0 (pseudo) framework.
The more you see, the less you know.
-
BTW, read [this awesome reply](https://www.codeproject.com/News/39686/The-future-of-WinForms.aspx). Not sure how it ended up there, but it's a gem on WPF. Totally expresses my sentiments. :laugh:
Latest Article - Class-less Coding - Minimalist C# and Why F# and Function Programming Has Some Advantages Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
Well I actually used to develop LOB with WPF sometime back when it got released and we had a considerable time invested in it , The things component developers did with it was remarkable and well its different. We actually wanted to XBAP it and not code a web app UI over the LOB framework, it was back some time and well XBAP did'nt actually gel in a way because it needed some security setting etc done on IE , though we had it working and it worked and it did not need all the complicated call backs and stuff u do it in java-script if it was run in a closed enterprise environment,just the database drivers,it was like there was no need to re-code a web app when you had WPF running in the browser. Then came silverlight and the decline... There are similar sentiment other devs shared ...like below... [^] also The consequences of declaring WPF is dead. | RIAGENIC.com[^] (also many other interesting thing on this blog.
Caveat Emptor. "Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long
-
Personally, I love WinForms! No HTML/CSS or XAML mess! Just grab a control, drop it on the screen and IT JUST WORKS! You may want to add a third party control library such as DevExpress or Telerik to make it better looking, get more features and make it even easier to develop. Sure, it doesn't scale as well and it's not really multi-platform, but if your customers use Windows desktops that isn't really an issue. I'm not really sure about Microsoft alternatives, but I know they used Electron[^] for Visual Studio Code. Yeah, it features all of that awful HTML and CSS and it even adds JavaScript to make it worse, but at least it's "modern" multi-platform desktop development. It's what all the cool desktop developers use ;-)
Best, Sander arrgh.js - Bringing LINQ to JavaScript SQL Server for C# Developers Succinctly Object-Oriented Programming in C# Succinctly
Sander Rossel wrote:
Personally, I love WinForms! No HTML/CSS or XAML mess! Just grab a control, drop it on the screen and IT JUST WORKS! You may want to add a third party control library such as DevExpress or Telerik to make it better looking, get more features and make it even easier to develop. Sure, it doesn't scale as well and it's not really multi-platform, but if your customers use Windows desktops that isn't really an issue.
Agreed. Tell you what? Let all the young kids go drive themselves to distraction chasing whatever technology is the fad of the day and let us old guys cry all the way to the bank as we continue to write professional applications that get the job done, even if "behind-the-scenes", eh? ;-) -CM
If you think hiring a professional is expensive, wait until you hire an amateur! - Red Adair
-
Ok, try not to laugh at the title. Right now, I assume there is no real future in WinForms. It's gonna be the next VB6 if not already, as in it'll hang around but people are gonna look at it funny. That being said, I just had a job interview with a guy who I really like. He's got an entrepreneurial spirit which I jive with. Right now, for the job, the main app in question that I'd be working on is an 8 year old product based on WinForms. Should I get the job, and to plan for the future... I know WinForms isn't going anywhere. But for the big picture, think 10 years from now... we all know .NET Core is being shown the love. So, my question is, if I wanted to write a Microsoft-backed thick client application in C# that's possibly cross platform... what options do I have? I know Xamarin is one. Is that the only one? And of course, there's things like wxWidgets, Qt, and even GTK+ with C# bindings, but is Microsoft cooking up some Windowing/GUI juju meant to be cross platform that I just don't know about yet? Like most LOB apps, this is a MS-centric shop, so I'm just curious to know what the latest buzz is on the geek street.
Jeremy Falcon
Well, at the speed Microsoft has abandoned technology, I recommend you wait 5 years, and see what they did. But I would put a decision like this OFF until real demand for other platforms shows up in a serious way. And then I would look to go to the cloud. Maybe mobile if it makes a difference. We maintain systems that are LOB winForms that were first implemented in Windows 95. While we converted many things to NT Services because they no longer require a GUI, the remaining stuff is solid, and there is no requirement to support any other platform. But even the screen sizes and font combinations are starting to cause old programs some issues. a 16x16 icon is like a spec nowadays... (BTW, what I would have given to have created the idea of a FONT as the icon package, totally scalable, portable).
-
Ravi - I'd love to hear how truly "cross platform" your Xamarin application is. Are you able to run on Windows / Mac / Android / iPhone / Linux ? My understanding is the C# business logic translates, but not the UI or XAML. Can you confirm from your experiences?
"Qulatiy is Job #1"
The C# business logic and persistence layer is almost 100% cross-platform compliant, thanks to Xamarin, which means I don't have to do much more than smoke testing on the Android port, since the codebase is mature and has an existing suite of tests. The Android UI is a brand new effort and isn't cross-platform, because I decided I want to learn Android from the ground up before I consider using Xamarin Forms as an abstraction layer. If I decide to port my app to iOS (likely), I will first write a native iOS client for the same reason. I'm only considering Windows, Android and iOS as target platforms. /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
-
Yeah I thought about WPF. Being a web guy, I like declarative UIs too. But, in the interest of cross platform I'd doubt that's ever gonna be ported since it'll be a cold day in hell before MS uses OGL for a rendering pipeline. Then again we have SQL Server on Linux now, so who knows.
Jeremy Falcon
Do I sense some ego here? If the app was successful in WinForm for 8 years, it may be in the right platform. I don't look at any applications and question they should all be in the web platform or cross platforms. The app's platform depends on its purpose. I'm having to rewrite web-based applications into desktop, and yes it is rewritten in Winform, and some from desktop to web. Unless the application has broad customer base where it may specifically call for cross platform, stay where it is safe.
-
Ok, try not to laugh at the title. Right now, I assume there is no real future in WinForms. It's gonna be the next VB6 if not already, as in it'll hang around but people are gonna look at it funny. That being said, I just had a job interview with a guy who I really like. He's got an entrepreneurial spirit which I jive with. Right now, for the job, the main app in question that I'd be working on is an 8 year old product based on WinForms. Should I get the job, and to plan for the future... I know WinForms isn't going anywhere. But for the big picture, think 10 years from now... we all know .NET Core is being shown the love. So, my question is, if I wanted to write a Microsoft-backed thick client application in C# that's possibly cross platform... what options do I have? I know Xamarin is one. Is that the only one? And of course, there's things like wxWidgets, Qt, and even GTK+ with C# bindings, but is Microsoft cooking up some Windowing/GUI juju meant to be cross platform that I just don't know about yet? Like most LOB apps, this is a MS-centric shop, so I'm just curious to know what the latest buzz is on the geek street.
Jeremy Falcon
The last thing I want to do is write a web app for just a handful of users where a Winforms desktop app will do. If an app isn't specifically calls for declarative UI or must be ran on other OS, write it in Winforms can be done much more quickly. I've seen simple application that use the more elaborate frameworks like Prism, Unity and MVVM pattern. Really for bragging rights and over engineering.
-
The C# business logic and persistence layer is almost 100% cross-platform compliant, thanks to Xamarin, which means I don't have to do much more than smoke testing on the Android port, since the codebase is mature and has an existing suite of tests. The Android UI is a brand new effort and isn't cross-platform, because I decided I want to learn Android from the ground up before I consider using Xamarin Forms as an abstraction layer. If I decide to port my app to iOS (likely), I will first write a native iOS client for the same reason. I'm only considering Windows, Android and iOS as target platforms. /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
If you don't mind my asking, how do you connect the compiled Xamarin C# code to the UI layer in Android? Do you connect the layers like you might with a DLL resource in windows?
"Qulatiy is Job #1"
-
If you don't mind my asking, how do you connect the compiled Xamarin C# code to the UI layer in Android? Do you connect the layers like you might with a DLL resource in windows?
"Qulatiy is Job #1"
Since both the Android UI layer and the legacy business logic and persistence layers are all written in C#, there's nothing special I need to do. I chose to put all the code in a single assembly (the Android executable) for now. When I (eventually) get around to building the iOS app, I'll move the non-UI code to a separate assembly that will be consumed by both flavors of the app. /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
-
Ok, try not to laugh at the title. Right now, I assume there is no real future in WinForms. It's gonna be the next VB6 if not already, as in it'll hang around but people are gonna look at it funny. That being said, I just had a job interview with a guy who I really like. He's got an entrepreneurial spirit which I jive with. Right now, for the job, the main app in question that I'd be working on is an 8 year old product based on WinForms. Should I get the job, and to plan for the future... I know WinForms isn't going anywhere. But for the big picture, think 10 years from now... we all know .NET Core is being shown the love. So, my question is, if I wanted to write a Microsoft-backed thick client application in C# that's possibly cross platform... what options do I have? I know Xamarin is one. Is that the only one? And of course, there's things like wxWidgets, Qt, and even GTK+ with C# bindings, but is Microsoft cooking up some Windowing/GUI juju meant to be cross platform that I just don't know about yet? Like most LOB apps, this is a MS-centric shop, so I'm just curious to know what the latest buzz is on the geek street.
Jeremy Falcon
Quote:
I assume there is no real future in WinForms
Heh... dude, if you think like that, programming is not for you - just coding. WinForms is alive and will be alive for as long as Win7 exists. As you guess, cr@p like Win10 just shakes imaging "future OS", but reality is nobody wanna be sheep of MS. So Win7 is the last OS I installed and I feel it will stay for 10+ years AT LEAST. And of course, overengineered rubbish like WPF will never outperform WinForms. Conclusions are too obvious that you look a bit fool sacrificing WinForms.
-
Sander Rossel wrote:
Personally, I love WinForms! No HTML/CSS or XAML mess! Just grab a control, drop it on the screen and IT JUST WORKS! You may want to add a third party control library such as DevExpress or Telerik to make it better looking, get more features and make it even easier to develop. Sure, it doesn't scale as well and it's not really multi-platform, but if your customers use Windows desktops that isn't really an issue.
Agreed. Tell you what? Let all the young kids go drive themselves to distraction chasing whatever technology is the fad of the day and let us old guys cry all the way to the bank as we continue to write professional applications that get the job done, even if "behind-the-scenes", eh? ;-) -CM
If you think hiring a professional is expensive, wait until you hire an amateur! - Red Adair
ClockMeister wrote:
Let all the young kids...
I'm only 29 myself (almost 30) :laugh:
Best, Sander arrgh.js - Bringing LINQ to JavaScript SQL Server for C# Developers Succinctly Object-Oriented Programming in C# Succinctly
-
I like Winforms. It seems a good match with the Windows UI. It seems odd that MS have left it fallow - what else would they like us to use? We could use WPF but that isn't updated before. Given that Windows' success is on the top of desktop apps - why wouldn't Microsoft want to give us a first class, up-to-date framework for it? What would be the downside?
If I'm not mistaken WinForms makes use of GDI which is an older Windows specific method for drawing stuff on screen. That makes it hard to scale, which is very important with all these different devices nowadays. It also just doesn't work on anything that isn't a Windows computer. As such, making "modern" applications that speak to a majority of the public is difficult, if not impossible, using WinForms. It's great for a lot of businesses, but they're moving to the cloud and the web. So all in all I think WinForms had its best days :sigh: That's not to say it isn't or can't be used anymore, COBOL is still around too :laugh: Try to see WinForms as a finished product, it's just great the way it is and doesn't need any more updates :D
Best, Sander arrgh.js - Bringing LINQ to JavaScript SQL Server for C# Developers Succinctly Object-Oriented Programming in C# Succinctly
-
ClockMeister wrote:
Let all the young kids...
I'm only 29 myself (almost 30) :laugh:
Best, Sander arrgh.js - Bringing LINQ to JavaScript SQL Server for C# Developers Succinctly Object-Oriented Programming in C# Succinctly
Wow ... a smart young developer! :-D
If you think hiring a professional is expensive, wait until you hire an amateur! - Red Adair
-
Jeremy Falcon wrote:
I assume there is no real future in WinForms.
If you're referring to WinForms vs WPF, then yes, I agree. if you're referring to Windows Development as a practice, then I disagree. There are and always will be many different types of enterprise level apps that are and always will be Windows based.
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
Kevin Marois wrote:
If you're referring to WinForms vs WPF, then yes, I agree. if you're referring to Windows Development as a practice, then I disagree. There are and always will be many different types of enterprise level apps that are and always will be Windows based.
[Soapbox Mode] Even though it might be "fashionable" to move from WinForms technology to WPF (or whatever), I don't think that either of them are going to disappear; they both have their place. As "old" as one might consider WinForms to be, it is a time-tested and true technology for developing the front-end of a Windows application. I tried application development with the XAML style UI in WPF for awhile. I found that, while there are some things you can pull off with it that can't be done with WinForms that few if any of said features mattered to me. If your front-end isn't trying to be "pretty" in some way with odd-shaped forms and special graphical presentations, why bother with it? I haven't yet (myself) run into a situation where doing a web-style (XAML) type user-interface would have added any value to the application I was working on. If I were developing a program that presented the front-end to look exactly like a DVD player or something, then I would probably need to use WPF. Naturally, Microsoft, and the market-at-large are going to "push" the newer technologies so that they can sell solutions that, to many, solve problems that don't exist for them. It isn't, by and large, "fashionable" to stick with a technology that "just works" ... you've got to constantly change your tool set so that someone can sell you said tools. As you stated, Windows desktop development ain't going anywhere for a very, very long time. WinForms is still an extremely powerful tool with which to develop presentation-layer to an application. Developers who have only been around for the last dozen or so years or less have no appreciation for how much work it used to take to make an intelligent presentation of data on a screen or a printer. There's room for all of these technologies, however there are some (like WinForms) that are just so well defined and stable that they'll probably never stop being the mainstay of really excellent front-end presentations that don't require constant tweaking just to make them work. With a mature technology like WinForms I find that I spend a higher percentage of time solving the problem-at-hand rather than spending my time tryi
-
Since both the Android UI layer and the legacy business logic and persistence layers are all written in C#, there's nothing special I need to do. I chose to put all the code in a single assembly (the Android executable) for now. When I (eventually) get around to building the iOS app, I'll move the non-UI code to a separate assembly that will be consumed by both flavors of the app. /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
Much thanks!
"Qulatiy is Job #1"
-
Much thanks!
"Qulatiy is Job #1"
No problem. Happy to chat offline if you have more questions. You can find me on LinkedIn. /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com