• 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.