• 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

    • Par for the course. I asked a question a few days ago and was threatened to be reported. 😂
    • Ummmm Are you kidding? Do think these books being sold are disclosing they are AI written?
    • i'm just commenting because of this madness. you simply asked "what crowd" which i too am genuinely curious about, only to receive a response in the form of a link that directs to an analysis of the audited financial statements with the accompanying notes. then you say that the guy who wrote it is stupid, which whatever, that's not an argument being discussed atm, only to receive a response from Arceles saying "i don't deal with people whose first response is an ad homenim". jesus. this is like making a claim, and then saying "i don't deal with people who speak in a certain way or swear so i'm not gonna answer you hah!" (said in a nasaly voice, not trying to depict you Arceles). then focus on the argument instead of the explanation begins... "so what don't you like about the guy (lunduke)" followed by "he just likes to insult people" and the explanation for the "crowd" being referred to was never even established. so a request for an explanation about the crowd turned into an argument about "why do you think lunduke is an idiot". wowza.
    • Sony lays off 30% of staff from Days Gone developer Bend Studio by Pulasthi Ariyasinghe Another wave of layoffs has hit the game developer space, and this time, it's a first-party Sony studio that's been affected. Following a report by Bloomberg's Jason Schreier, Bend Studio has confirmed that it is letting go of "incredibly talented teammates" as it begins work on a new game project. "Today, we said goodbye to some incredibly talented teammates as we transition to our next project," said Bend Studio in a social media post today. "We're deeply thankful for their contributions as they've shaped who we are, and their impact will always be part of our story." Bend Studio is most well-known for its 2019-released open-world zombie adventure Days Gone, which even received a remaster just a few months ago. Prior to that, the studio had been responsible for the classic Syphon Filter series while also developing several PlayStation Portable and Vita games like Resistance: Retribution and Uncharted: Golden Abyss, respectively. "This is a difficult moment for our team, but we hold immense respect for everyone who got us here," the company added. "As we move forward, we remain committed to building the future of Bend Studio with creativity, passion, and innovation in the titles we craft." While Sony did not detail just how many staff have been affected by this latest decision, Jason Schreier revealed that 30% of the studio is being laid off. This amounts to around 40 people, according to the reporter. Earlier this year, Sony canceled two live service games that were in development at Bend Studio and Bluepoint Games. It was never revealed what this mystery game was supposed to be. "Bend and Bluepoint are highly accomplished teams who are valued members of the PlayStation Studios family," Sony said at the time. It's unclear if Bluepoint, which had been developing a God of War live service experience, will soon be hit by its own wave of layoffs too.
    • KataLib 4.5.3.0 by Razvan Serea KataLib is more than just a music player — it's a complete audio suite designed for music lovers and creators alike. It combines a powerful audio player, a flexible metadata editor, a capable audio converter, and a music library manager into one streamlined application. Core Features: Audio Player Enjoy seamless playback of virtually any audio format or even streaming video files. DJ Mode lets you mix tracks with manual or automatic crossfades. You can also load and save WinAmp-style playlists for quick access to your favorite sets. Audio Converter Convert between a wide range of audio formats effortlessly. Trim or normalize your output automatically, and even extract audio from streaming video sources. Ideal for preparing files for different devices or platforms. Metadata Editor View and edit ID3v2 tags and other metadata. Batch edit multiple files at once, and fetch missing information directly from the MusicBrainz database. You can also apply or update album art with ease. Music Library Manager Organize your entire audio collection, search across tracks instantly, and download cover images from the internet — or use your own custom artwork. KataLib makes it easy to keep your library tidy and enriched with useful info. Supported Formats: KataLib supports a wide range of both lossy and lossless audio formats: Input: OPUS, AAC, FLAC, M4A, MP3, MP4, MPC, APE, AIF, MKV, AVI, MOV, FLV, WEBM, Ogg Vorbis, WAV, WAVPack, WMA Output: OPUS, FLAC, M4A, MP3, Ogg Vorbis, WAV Under the hood, KataLib uses the trusted FFmpeg engine for audio conversion and media playback, ensuring compatibility with virtually all mainstream media formats. Download: KataLib 4.5.3.0 | 64.5 MB (Open Source) Links: KataLib Home Page | Github | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • First Post
      K Dorman earned a badge
      First Post
    • Reacting Well
      rshit earned a badge
      Reacting Well
    • Reacting Well
      Alan- earned a badge
      Reacting Well
    • Week One Done
      IAMFLUXX earned a badge
      Week One Done
    • One Month Later
      Æhund earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      545
    2. 2
      ATLien_0
      268
    3. 3
      +FloatingFatMan
      207
    4. 4
      +Edouard
      203
    5. 5
      snowy owl
      140
  • Tell a friend

    Love Neowin? Tell a friend!