• 0

Migrating winforms app to a web app - any advice ?


Question

Dear neowinians,

 

I wonder if you have any advice - suggestions if any of you went through something similar.

A bit of context : here at work we're developing and maintaining an old VB.Net winforms custom application for our client - I say old because it already had about 10 years before I joined here, and although we're not a big company, many many people have worked on it; you can imagine the kind of app, it's big, it's complicated, it does many things, and many of those things are done in many different ways, and nobody never had the time to update/upgrade our coding standards on an application-wide scope. By that I mean, e.g. if you think in terms of MVC architecture, in some places, some of our M's and V's are mixed together and that is bad for a number of reasons that we won't get into right now but may be important for the rest of my tale...

Anyway so one of our big problems right now is that everyone at our clients' use this software, and by everyone I mean that they have people in a few different countries, and they all have to connect to a central database with all their common data, and obviously there's so much I/O between the database and the app that this is starting to become a problem. Long story short, on of the possible solutions my boss is considering is making a web app. This would force us to put all the logic in our controllers, as it should be, and all the communication with the database would be server-side.

I assume we would have to rewrite all (or most) of our UI (because, duh). My boss, however, hopes we would be able, if we used Microsoft tools (I'm guessing that means ASP.Net), to keep some of our objects and code intact. As I said, there's a number of places where that's not the case, but some places where it is, it's hard to pinpoint them without analysing the entire code, which we'll get to eventually. He also hopes that, maybe, we would be able to have both the desktop and the web client, side by side, sharing some of their objects - I believe this would require considerably more work than the already big task we'd have ahead of us, but whatever.

 

Soooooo, my question : if any of you have faced a similar situation or have a familiarity with these technologies, would you have any advice, things to avoid, things to watch out for, what dangers we would face, what could go wrong (plenty of things, but, you know)... I'd be glad to hear your stories. If not, well... thanks for reading anyway ! Have a nice day and whatever !

18 answers to this question

Recommended Posts

  • 0

Why not make a web api in asp that the forms gui can contact?

 

And please don't put all the logic in the controller, use something like a repository pattern that keep the logic and data code apart and outside the controller. The controller should only need to contact the repository.

 

Personally I'm a fan of APIs since it's easy to use those when making apps and other websites.

 

Is it possible to post some more details of the current code like a class diagram?

 

In college we had to make apps in winforms and convert them to asp all the time, which wasn't an issue since we learned how to actually keep the gui, logic and data code seperated so we only had to rewrite the gui.

 

 

P.S

Create paragraphs in long text posts, it's easier and clearer to read for others that way.

  • Like 3
  • 0

sorry about the paragraphs thing, I was in a rush and did not realise how crappy my text looked

 

I must have skipped a class in CS, my understanding was that controller was supposed to contain all the logic. I'll refresh my knowledge of the repository pattern asap (as it stands I dont remember which pattern that is but google will fix that I guess).

 

also the api thing is interesting, thanks a lot for the suggestions already !

  • 0

brpsycho,

 

In my last company, we had a (very) large winforms app that needed a client facing web version created. We did this by first creating a full API and better architected WCF service operations. We then created the Web UI (in java) to consume the web services. We then over time migrated the winforms code to do the same. In the end we landed up with a rather thin desktop UI and a robust web ui that both utilized the same core code.  Maintenance went way down as did defect density.   

  • 0
  On 27/01/2017 at 12:28, Zag L. said:

brpsycho,

 

In my last company, we had a (very) large winforms app that needed a client facing web version created. We did this by first creating a full API and better architected WCF service operations. We then created the Web UI (in java) to consume the web services. We then over time migrated the winforms code to do the same. In the end we landed up with a rather thin desktop UI and a robust web ui that both utilized the same core code.  Maintenance went way down as did defect density.   

Expand  

Why java?!

It's 2017... java applets for the web have horrible support and aren't supported on mobile devices. At least if you're going to do it right consider making it work on all devices.

 

If you choose the api route you can just use html with js(ajax/socket), this can be made from scratch or by using a web framework.

 

If you choose the non api route you can just make it a mvc application in asp, depending on the existing code it's a matter of creating controllers and views.

 

The least work is a simple asp website, though if you want to create other services that contact the database it's recommended to make an api instead.

 

Anyhow any class diagrams(redacted is fine) of the existing code would have a clearer view of the current situation and the available options.

  • 0
  On 27/01/2017 at 13:58, Seahorsepip said:

Why java?!

It's 2017... java applets for the web have horrible support and aren't supported on mobile devices. At least if you're going to do it right consider making it work on all devices.

 

If you choose the api route you can just use html with js(ajax/socket), this can be made from scratch or by using a web framework.

 

If you choose the non api route you can just make it a mvc application in asp, depending on the existing code it's a matter of creating controllers and views.

 

The least work is a simple asp website, though if you want to create other services that contact the database it's recommended to make an api instead.

 

Anyhow any class diagrams(redacted is fine) of the existing code would have a clearer view of the current situation and the available options.

Expand  

Why are you assuming it's an applet and not jsp? Honest question. Did I miss something? 

  • 0
  On 27/01/2017 at 14:04, adrynalyne said:

Why are you assuming it's an applet and not jsp? Honest question. Did I miss something? 

Expand  

Direct quote: "Web UI (in java) "

 

If it was jsp the webui would still be html.

  • 0
  On 27/01/2017 at 14:14, Seahorsepip said:

Direct quote: "Web UI (in java) "

 

If it was jsp the webui would still be html.

Expand  

I suppose... I figured it would be something akin to razor which generates the HTML. Perhaps not. Thanks. 

  • 0
  On 27/01/2017 at 14:40, adrynalyne said:

I suppose... I figured it would be something akin to razor which generates the HTML. Perhaps not. Thanks. 

Expand  

Yeah that could also be the case but in that case you still talk about a html gui even if the html is generated in jsp, asp, php, whateverp.

 

And since he mentioned "robust web ui" which I often heard in the past as argument for java applets of flash based applications... This is one of the ridiculous reasons why watching tv online in most cases is still only working on Silverlight in some old version of IE.

  • 0
  On 27/01/2017 at 14:50, Seahorsepip said:

Yeah that could also be the case but in that case you still talk about a html gui even if the html is generated in jsp, asp, php, whateverp.

 

And since he mentioned "robust web ui" which I often heard in the past as argument for java applets of flash based applications... This is one of the ridiculous reasons why watching tv online in most cases is still only working on Silverlight in some old version of IE.

Expand  

I suppose. I've found that people who don't really do the development don't know that it's generating HTML and talk about it as if it's still in it's raw state as c# or whatever. You are probably right though. 

 

You would not believe the crap I've run across like that. My favorite is developers who use obsolete code (that is tagged as such) which then gets removed in some future release.  Years later, you take over the support and maintenance from another company, update the frameworks and the codepocalype begins...

 

Ive run into that too many times and then I get to spend my time hunting down the problem. 

  • Like 1
  • 0
  On 27/01/2017 at 13:58, Seahorsepip said:

Why java?!

It's 2017... java applets for the web have horrible support and aren't supported on mobile devices. At least if you're going to do it right consider making it work on all devices.

 

If you choose the api route you can just use html with js(ajax/socket), this can be made from scratch or by using a web framework.

 

If you choose the non api route you can just make it a mvc application in asp, depending on the existing code it's a matter of creating controllers and views.

 

The least work is a simple asp website, though if you want to create other services that contact the database it's recommended to make an api instead.

 

Anyhow any class diagrams(redacted is fine) of the existing code would have a clearer view of the current situation and the available options.

Expand  

Why java? Good question. The company mandates that all public facing web portals must be java web applications running in IBM WebSphere jvm's serving data via apache servers . According to the wizards in infrastructure, there is no way to secure IIS or any MIcrosoft product.  Anything outside the firewall cannot in any way, shape or form be Microsoft anything. Not saying I agree with any of their rules, just telling ya what it is.

 

We did get a pretty big chuckle when they were all scrambling over that OpenSSL 'issue' a year or two back though...

  • 0
  On 10/02/2017 at 18:48, Zag L. said:

there is no way to secure IIS or any MIcrosoft product

Expand  

Just wow!  They could do with a little education in their chosen field.

  • Like 3
  • 0

ASP.Net is your friend.

 

  Quote

Anything outside the firewall cannot in any way, shape or form be Microsoft anything

Expand  

Tell that to the millions of edge Windows Servers hell up until a few years ago they had their own firewall/gateway.

  • 0

Going to agree with TPreson on this...

WinForms to WebForms is probably the easiest migration you can do... ASP.net Webforms is relatively easy to develop and they can be done in both VB.net or C#.net

 

I am not a big fan of MVC style pages for traditional data heavy enterprise systems, because it takes much more effort to build complex data forms.

WebForms has rich controls and control extenders which make implementing a new version of a legacy app very quick and easy.

 

Ask any MVC programmer to build a editable gridview app and ask a webforms person to do it.  It takes 10x the effort in MVC than for Asp.net webforms.

  • 0

Thanks to all of you for all the advice.

 

At the moment our priorities seem to have changed (they do that very often.......) but the web app still somewhere down the line.

I'll look up ASP when I get the time, it seems like an "easy way out" (or a "not that hard" way out ?).

Seems to me with the current state of our software, we'd have to do a lot of work whichever solution we chose, re-architecturing some things, rethinking some others... But it would be for the better, if my boss manages to sell that to our client.

  • 0
  On 14/02/2017 at 01:48, tekgik84 said:

have you thought about what kind of perimeter security to deploy?

Expand  

No. I have like, zero knowledge of security (yes I know this is scary). (ok in truth i know just enough to know I know nothing).

 

My boss is supposed to be the "know" guy. All I know about our current project is this : I think he wants to deploy this as an "intranet" thing that they would access through a VPN - they already work through a VPN and remote desktops right now - but we're going to hit problems as the client now has a subsidiary in China where VPN might not be an option, so I don't know how that's going to change.

I never really thought about security because he just casually asked me to look into a way to "port" some of our current app into a web app, and find out how much work we could keep. Now that I think of it, this might be a pretty big deal.

  • 0
  On 05/12/2017 at 14:35, AltexLansing said:

Wisej seems to be the easiest way to turn a winforms app into a modern web app. 

Expand  

Hey, thanks, that's an interesting find. I'll give it a look some time.

 

The client chose to put aside that project for now and keep the old winforms app and we're still maintaining it instead, but I'm still interested in stuff like that.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Windows Server 2025 security baseline to get more frequent updates, streamlines settings by Paul Hill Microsoft has announced the release of the June 2025 revision of its security baseline package for Windows Server 2025 (v2506), it is now available to download from the Microsoft Security Compliance Toolkit. After downloading it, you can test the recommended configurations in your environment and customize or implement them as you see fit. To deal with the evolving threat landscape, new Windows features, and community feedback, Microsoft is planning to revise the Windows Server baseline more frequently in the future. Windows Server security baselines are a collection of Microsoft-recommended configuration settings that help administrators establish secure and consistent Windows Server environments. This is the first security baseline update for Windows Server 2025 since January, a summary of the changes is presented in this table: Security Policy Change Summary Deny log on through Remote Desktop Services Allow remote logon for non-admin local accounts on MS and add “BUILTIN\Guests” to both DC and MS. WDigest Authentication Remove from the baseline Allow Windows Ink Workspace Remove from the baseline Audit Authorization Policy Change Set to “Success” in both DC and MS Include command line in process creation events Enable in both DC and MS Control whether exclusions are visible to local users Moved to Not Configured as it is overridden by the parent setting. Of these changes, the removal of WDigest Authentication and the addition of Include command line in process creation events are significant. Microsoft said it removed WDigest Authentication from the security baseline because it is no longer necessary for Windows Server 2025. The policy was originally enforced so that WDigest couldn’t store plaintext passwords in memory, which was a significant theft risk. Since the 24H2 update in Windows Server 2022, the policy has been deprecated, so there’s no need to enforce this setting. The update also adds Include command line in process creation events to improve the visibility of how processes are executed across the system. By capturing the command-line arguments, it makes it easier to detect and investigate malicious activity that may otherwise seem legitimate. If you want to learn more about the other changes in a bit more depth, refer to Microsoft’s announcement of this security baseline update.
    • Camtasia 2025.1.3 by Razvan Serea TechSmith Camtasia is the complete professional solution for high-quality screen recording, video editing and sharing. Camtasia 2023 makes editing your videos easier, and faster than ever. The new editor is packed with enhanced video processing, all-new production technology, an innovative library, and stock videos and other creative assets to help you create more polished, professional videos. No video experience needed. Anyone can create informative, engaging videos. Create professional, eye-catching videos: Add special video effects - Apply Behaviors that are perfectly designed to animate your text, images, or icons. Get a crisp, polished look without being a professional video editor. Drag-and-drop your edits - What you see is what you get. Every effect and element in your video can be dropped and edited directly in the preview window. And you can edit at resolutions up to beautiful 4K, for clear video at any size. Get exceptional performance - Camtasia takes full advantage of your computer’s processor with 64-bit performance. You’ll get fast rendering times and enhanced stability—even on your most complex projects. Camtasia 2025.1.3 changelog: New Features Added the Edit Image in Snagit feature. Allow importing SNAGX files as images. Feature Updates Add ability to double click the FPS button and open the project settings menu. Background tab in the Rev window is updated with new files. Added user configurable keyboard shortcut for Add Audio Point. Updates for IT Administrators swfobject.js was unused and has been removed from the install. Bug Fixes Fixed a bug where video streams in MTS files could fail to decode. Fixed a bug with the FPS button so it no longer opens up the playhead time control. Fixed a bug with tooltips that prevented shortcut commands from displaying correctly. Fix a bug where MP4 files recorded on Google Pixel 7 Pro could fail to decode video. Fixed a crash when ripple replacing the placeholder with legacy noise reduction effect. Fixed a bug that could cause some ADPCM audio streams to be ignored. Fixed a bug where a group's audio waveforms would not update after a trim and undo. Fixed an issue where the media Duration popup could leave a 1 frame gap between media. Fixed a bug where the installer could hang when running it quietly when the app is already installed. Fixed a bug where the installer could hang on exit after running it when another installation was already in progress. Fixed a user-reported licensing error. Download: Camtasia 2025.1.3 (64-bit) | 335.0 MB (Shareware) View: Camtasia Homepage | Tutorials | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • From what I understand, RAID 1 makes a copy of one disk. How does it do this? If something happened to one drive, could I take the other one out, plug it into a PC and use it like a normal disk? I have two hard drives that have the same information on - a bit of protection if one drive fails. But I've just been manually copying the data twice.
  • Recent Achievements

    • One Month Later
      Leonard grant earned a badge
      One Month Later
    • Week One Done
      pcdoctorsnet earned a badge
      Week One Done
    • Rising Star
      Phillip0web went up a rank
      Rising Star
    • One Month Later
      Epaminombas earned a badge
      One Month Later
    • One Year In
      Bert Fershner earned a badge
      One Year In
  • Popular Contributors

    1. 1
      +primortal
      537
    2. 2
      ATLien_0
      205
    3. 3
      +FloatingFatMan
      167
    4. 4
      Michael Scrip
      151
    5. 5
      Som
      126
  • Tell a friend

    Love Neowin? Tell a friend!