Click here to Skip to main content
15,888,221 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
We are working on windows form application and everything is working good. No management decided to migrate this application to Web Application (Single page using MVC framework). In windows application we have a process called generation, this process needs around 40 input sets and generate data for selected date range.

Currently it takes around 12-15 seconds to generate 1 months data. Because of this process only we are not sure whether we can actually migrate it or not. Because how can we get the same performance in Web that we have in Windows.

Details about the generation process:
This process is being triggered on an avrage 20 times a day by one user and we've aorund 400 users (as this is in house project for different team).

When an user hits generation button, we get the data from DataBase (we can't cache it because in every minute data gets changed) and pass it to generation process. Then this process loop oved selected date ranges and generate one day data and add this set to final output set. This generation process if full of OOP concepts.

Problem:
What is say 100 users triggers generation process at once, inc ase of winform applictaion each request will get execute in user's machine but in webapplictaion all 100 request will get executed in one server, so it's degrade the application performance.

Is there any way so taht we can get the same kind of performance as we have in winform application? Can we write this generation process in any JS that supports this kind of OOP concepts or we can directly use existing code?

What I have tried:

I've tried to write simple code in Angular with existing input set (40). All the time browser's getting hanged also, original process can't be written in angular as original process is full of references between sets.
Posted
Updated 24-Jul-16 5:15am
v3
Comments
Garth J Lancaster 24-Jul-16 7:59am    
There's no real hint here of what your management actually expect - it would be non-sensical to take a data-bound application and move all the processing to 'a web framework' - maybe it makes sense to do the data crunching on the 'back-end' and have a web front end for control and displaying the data - but it sounds like a serious architecture vs what is possible discussion is in your near future
sunil kumar meena 24-Jul-16 8:05am    
Thanks for replying, so you mean to say there is no way of doing this in Web?
Garth J Lancaster 24-Jul-16 8:17am    
I dont think you should be doing serious data crunching in 'web' type languages - to me, its a matter of using the correct tools for the correct job - and to me that reads .... divide your system up and have a 'data crunching' backend in an appropriate language, end let 'the web' handle what ever else needs to be done
sunil kumar meena 25-Jul-16 15:49pm    
thanks for the suggestion, I'll try to find a way of keeping generation process separately.

1 solution

As Garth has said, this is a case where you have your data processing engine completely separate from your Web and Windows Forms applications. I would probably submit jobs with all required input data into a message queue and have multiple servers on the back end pulling jobs from this queue to process. Results would get posted to a message queue specifically for results.

With this setup you can have any number of different application types, Windows Forms, WPF, Web, mobile, ..., submitting jobs without any of them worry about the implementation of the processing. You get the same processing engine consistently across all applications without writing the same code over and over again.

Put the processing engine in the cloud, like Azure, and you can have on-demand processing engine machines spun up as needed to handle an increasing job load and shutdown when then job load decreases.
 
Share this answer
 
Comments
sunil kumar meena 25-Jul-16 15:51pm    
so you are saying if I put this generation process in cloud, and multiple users fetch data from them still I can get a good performance?
Dave Kreskowiak 25-Jul-16 16:35pm    
It doesn't have to be in the cloud. You just have to supply enough server horsepower somewhere. If it goes in the cloud, the code you write is going to be different than if you just had the servers on standby on premises.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900